Firstly, why are you creating the serialized XML "by hand" rather than
constructing a result tree in the normal way? I don't think this is directly
relevant to your problem, but it's very distracting.
The ideal solution is XSLT 2.0 <next-match>
<xsl:template match="prosody[(_at_)pitch='x-high']" priority="5">
<PITCH BASE="70%"><xsl:next-match/></PITCH>
</xsl:template>
<xsl:template match="prosody[(_at_)rate='slow']" priority="4">
<RATE SPEED="-40%"><xsl:next-match/></RATE>
</xsl:template>
<xsl:template match="prosody" priority="3">
<xsl:apply-templates/>
</xsl:template>
In XSLT 1.0 you can do this with xsl:apply-imports, but the drawback is that
each rule has to be in a separate module.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Paul Giannaros [mailto:ceruleanblaze(_at_)gmail(_dot_)com]
Sent: 04 December 2004 03:09
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Creating nested output from <xsl:if>'s
Sorry for the bad subject line, its pretty hard to explain.
Basically i'm transforming one XML language into another. In
doing this, I
have some code like the following:
<xsl:template match="//prosody">
...
<xsl:choose>
<xsl:when test="@pitch='x-high'">
<xsl:text><PITCH BASE="70%"></xsl:text>
<xsl:apply-templates/>
<xsl:text></PITCH></xsl:text>
</xsl:when>
...
<xsl:choose>
<xsl:when test="@rate='slow'">
<xsl:text><RATE SPEED="-40%"></xsl:text>
<xsl:apply-templates/>
<xsl:text></RATE></xsl:text>
</xsl:when>
...
</xsl:template>
Now this all works fine when using individual prosody tags
with one attribute
(pitch or rate). The issue arises when doing something like:
<prosody rate="slow" pitch="x-high">Here is some high, slow
speech</prosody>
The output is the following:
<PITCH BASE="70%">Here is some high, slow speech</PITCH><RATE
SPEED="-40%">Here is some high, slow speech</RATE>
Obviously not what was wanted (nested tags with the text in them).
How can I achieve what I need? If possible, without resorting
to templates for
each attribute.
Thanks for your time.
--~------------------------------------------------------------------
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>
--~--