I remain puzzled over the idea that there are "escaped" HTML tags in your input
XML file. They appear as ordinary HTML tags in my email. In order to proceed I
will put this down to a different understanding of what "escaped" means. If I
have misunderstood you, please clarify the matter further.
I have taken your input and output and written a stylesheet that will produce
the expected output. Well, almost. In your input file you have the bold and
italic tags nested in the Donald Duck entry, but they are not nested in the
desired output you posted. I will assume that this is a typing error and go on
to produce nested output as is suggested by the input document's structure.
Given all these caveats, this stylesheet produces what I think you want.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates />
</fo:flow>
</xsl:template>
<xsl:template match="BOOKS">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="BOOK">
<fo:block>
<fo:block space-before.optimum="1pt" space-after.optimum="2pt">
<xsl:apply-templates />
</fo:block>
</fo:block>
</xsl:template>
<xsl:template match="AUTHOR">
<fo:block>Author: <xsl:value-of select="." /></fo:block>
</xsl:template>
<xsl:template match="PRICE">
<fo:block>Price : US$ <xsl:value-of select="." /></fo:block>
</xsl:template>
<xsl:template match="TITLE">
<xsl:choose>
<xsl:when test="child::*">
<fo:block>Title : <xsl:apply-templates /></fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block>Title : <xsl:value-of select="." /></fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="b">
<xsl:choose>
<xsl:when test="child::*">
<fo:inline font-weight="bold"><xsl:apply-templates /></fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline font-weight="bold"><xsl:value-of select="." /></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="i">
<xsl:choose>
<xsl:when test="child::*">
<fo:inline font-style="italic"><xsl:apply-templates /></fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline font-weight="italic"><xsl:value-of select="." /></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
-----Original Message-----
From: Magic Finger <magic(_dot_)finger(_at_)gmx(_dot_)de>
Sent: Wed, 13 Apr 2005 08:46:07 +0100
To: <ElektonikaMail@>
Cc: <cknell(_at_)onebox(_dot_)com>
Subject: Re: [xsl] how to translate XML with XHTML-formatted element to FO
Hello Charles,
the required output should be something like the following, where the
escaped HTML-tags (like the one for bold (<b>) and italic (<i>)
formatting) inside the <TITLE> element of input file should be
interpreted/translated as desired.
----------
OUTPUT:
----------
--- books.fo --->
...
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:block space-before.optimum="1pt" space-after.optimum="2pt">
<fo:block>Author: Walt Disney</fo:block>
<fo:block>Price : US$ 19.90</fo:block>
<fo:block>Title : <fo:inline font-weight="bold">Donald Duck -
</fo:inline><fo:inline font-style="italic">The True
Story</fo:inline></fo:block>
</fo:block>
<fo:block space-before.optimum="1pt" space-after.optimum="2pt">
<fo:block>Author: Matt Groening</fo:block>
<fo:block>Price : US$ 25.00</fo:block>
<fo:block>Title : <fo:inline font-weight="bold">Homer Simpson For
President</fo:inline></fo:block>
</fo:block>
</fo:block>
</fo:flow>
...
<--- books.fo ---
---------
INPUT:
---------
--- books.xml --->
<BOOK>
<AUTHOR>Walt Disney</AUTHOR>
<PRICE>19.90</PRICE>
<TITLE><b>Donald Duck - <i>The True
Story</i></b></TITLE>
</BOOK>
<BOOK>
<AUTHOR>Matt Groening</AUTHOR>
<PRICE>25.00</PRICE>
<TITLE><b>Homer Simpson For President</b></TITLE>
</BOOK>
...
<--- books.xml ---
Best regards,
Maik
You have shown us your input, now how about some idea of what the output
should be. I have read your post several times and I can't understand what
problem you are trying to solve.
It may be that you need to process the document in stages or you may need
advice on constructing a template. I just can't understand what you need
using the information you have given.
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--