[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: problem with variable and position()
Hi, > <xsl:template match="body"> > <xsl:element name="description"> > <xsl:apply-templates > select="text()[starts-with(normalize-space > (),'Description')]" mode="description"/> > </xsl:element> > </xsl:template> > <xsl:template > match="text()[starts-with(normalize-space(),'Description')]" > mode="description"> > <xsl:variable name="descPos" > select="position()"/> > <xsl:apply-templates > select="text()[position()>$descPos]"/> > > </xsl:template> This template could as well be simply <xsl:template match="text()" mode="description"> <xsl:variable name="descPos" select="position()"/> <xsl:apply-templates select="text()[position()>$descPos]"/> </xsl:template> unless you have multiple different templates that match text nodes in "description" mode. > <xsl:template match="text()[position()>$descPos]"> > <xsl:value-of select="."/> > </xsl:template> And this should be <xsl:template match="text()"> <xsl:value-of select="."/> </xsl:template> or, you don't even need this, because the build-in template rule will take care of it > the input documents. I tried to store the position of the > description text in the > descPos variable to use it later, but the above stylesheet > gives me an error of "Invalid > variable reference". How could I re-write the last template > so I avoid this error? For one, the descPos variable will be out of scope in the other template -- see the XSLT spec for variable scope. Also, variable references are not allowed in match patterns. Cheers, Jarno XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|