Subject: RE: [xsl] Creating nested output from <xsl:if>'s From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 4 Dec 2004 16:19:37 -0000 |
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[@pitch='x-high']" priority="5"> <PITCH BASE="70%"><xsl:next-match/></PITCH> </xsl:template> <xsl:template match="prosody[@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@xxxxxxxxx] > Sent: 04 December 2004 03:09 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Creating nested output fr, Wendell Piez | Thread | Re: [xsl] Creating nested output fr, David Carlisle |
Re: [xsl] Creating nested output fr, George Cristian Bina | Date | RE: [xsl] Creating nested output fr, Michael Kay |
Month |