Subject: Re: [xsl] Need to output an opening or closing tag by itself From: "Luke Stedman" <luke.stedman@xxxxxxxxx> Date: Wed, 25 Jun 2008 08:22:58 +0100 |
Not pretty, but this will work.... <xsl:choose> <xsl:when test="@t ='a'"> <xsl:text disable-output-escaping="yes"><e></xsl:text> </xsl:when> <xsl:when test="@t ='b'"> <xsl:text disable-output-escaping="yes"></e></xsl:text> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> Unexpected data in attribute t. </xsl:message> </xsl:otherwise> </xsl:choose> ...this is a slightly better solution... <xsl:template match="/root"> <root> <xsl:apply-templates select="e"/> </root> </xsl:template> <xsl:template match="e"> <xsl:if test="@t ='a' and ./following-sibling::e[1]/@t = 'b'"> <e> <xsl:for-each select="./following-sibling::f"> <xsl:apply-templates select="."/> </xsl:for-each> </e> </xsl:if > </xsl:template> <xsl:template match="f"> <xsl:copy/> </xsl:template> Cheers Luke 2008/6/25 David Frey <dpfrey@xxxxxxx>: > I have a simple XSLT problem for the gurus. > > > This is my input document: > <root> > <e t="a"/> > <f/> > <f/> > <e t="b"/> > </root> > > > This is the output document I want to produce: > <root> > <e> > <f/> > <f/> > </e> > </root> > > > This is the stylesheet I wrote to do the transformation: > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet > version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/root"> > <root> > <xsl:apply-templates/> > </root> > </xsl:template> > > <xsl:template match="e"> > <xsl:choose> > <xsl:when test="@t ='a'"> > <e> > </xsl:when> > <xsl:when test="@t ='b'"> > </e> > </xsl:when> > <xsl:otherwise> > <xsl:message terminate="yes"> > Unexpected data in attribute t. > </xsl:message> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > <xsl:template match="f"> > <xsl:copy/> > </xsl:template> > </xsl:stylesheet> > > > Here is the Saxon output: > $ java -jar "c:\Program Files\Saxon\saxon9.jar" -o out.xml in.xml > test.xslt > Error on line 16 column 9 of > file:/C:/Documents%20and%20Settings/DFREY/Desktop/test/test.xslt: > SXXP0003: Error reported by XML parser: The element type "e" must be > terminated by the > matching end-tag "</e>". > Failed to compile stylesheet. 1 error detected. > > > I understand that the source of the error is that the XSLT file is not > valid XML because the <e> tag doesn't have a matching </e> tag in the > right place. > > How can I work around this issue to solve my problem? > > Thanks, > David
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Need to output an opening or , David Frey | Thread | Re: [xsl] Need to output an opening, David Carlisle |
RE: [xsl] XML to PDF (XSL:FO), Pankaj Chaturvedi | Date | Re: [xsl] Need to output an opening, Mukul Gandhi |
Month |