|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: problem with variable and position()
You can't define a match pattern that uses a variable.
In 1.0 you have to test the variable inside the template, e.g
<xsl:template match="text()">
<xsl:choose>
<xsl:when test="count(preceding::text() > $pos)">
Of course the variable must be global.
2.0 does allow a global variable to be used in the pattern.
A better solution in 2.0 is to use the ">>" operator:
<xsl:key name="t" match="text()[startswith(., 'Description')]"
use="'z'"/>
<xsl:template match="text()[. >> key('t', 'z')]
I can't see an easy way to emulate this in 1.0 with a solution that's
likely to have less than O(n^2) performance.
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> fe.sola@xxxxxxxxxxxxxx
> Sent: 27 August 2003 07:31
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: problem with variable and position()
>
>
> This is part of the stylesheet...
>
>
> <xsl:template match="html">
> <xsl:apply-templates select="head"/>
> <xsl:apply-templates select="body"/>
> </xsl:template>
>
>
> <xsl:template match="head"/>
> <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>
> <xsl:template match="text()[position()>$descPos]">
> <xsl:value-of select="."/>
> </xsl:template>
>
> I have an xhtml document with a description as a text element
> in the body. This
> description text start with the word "Description" and it has
> a variable position inside
> 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?
> tia,
> lizet
>
> -------------------------------------------------
> Este mensaje fue enviado usando el servicio de correo en web
> de Infomed http://webmail.sld.cu
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
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
|

Cart








