Altova Mailing List Archives

RE: [xsl] global variable and position() once more

From: "Michael Kay" <mhk@--------->
Date: 8/28/2003 2:54:00 PM
<xsl:apply-templates select="text()[position()>$descPos]"/>

That won't work, it's only selecting text nodes that are children of the
html element, and they are all white space.

Anyway, $descPos isn't a position, it's a text node.

If $descPos2 were defined as

<xsl:variable name="descPos2"

then you could select all text nodes that follow it using:

select="(//text)[position() > $descPos2]

but you can do that much more easily as:

  <xsl:apply-templates select="$descPos/following::text()"/>

However, I suspect you don't only want to process the text nodes, you
also want to process their containing elements.

Trouble is, I'm not really sure what you DO want to do.

Michael Kay

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> fe.sola@xxxxxxxxxxxxxx
> Sent: 28 August 2003 16:54
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] global variable and position() once more
> Hello, being a newbie is a pain...
> I decided to try Michael Kay's suggestion of using a global 
> variable. My problem is that 
> I need to select the text nodes after a text node that starts 
> with the 
> word 'Description'.
> The xhtml looks more or less like this: (This is a simplified 
> sample version, could 
> provide the real one on request)
> <html>
>    <head>
>       <!--Something here-->
>    <head>
>    <body>
>         blah bla blah
>         <table>
>           <!-- something here-->
>         </table>
>         Description
>         <table>
>           <!-- something here-->
>         </table>
>         text nodes to select with the description text
>    </body>
> </html>  
> My xsl stylesheet looks like this:
> ...
> <xsl:template match="/">
>                 ... 
> 		<Document>
> 		    <xsl:apply-templates select="html"/>
> 		</Document>
>                 ...  
> </xsl:template>
> ...
> <xsl:variable name="descPos" 
> select="//text()[starts-with(normalize-space
> (),'Description')]"/>
> ...
> <xsl:template match="html">
>                 <xsl:element name="description">
>                        <xsl:apply-templates 
> select="text()[position()>$descPos]"/>
>                 </xsl:element>
> ...
> </xsl:template>
> ...
> I can't manage to store in the descPos global variable the 
> position of the node that 
> starts with 'Description', when I try 
> select="//text()[starts-with(normalize-space
> (),'Description')position()] or try to get the position 
> function somewhere in that XPath 
> expression I get errors.
> So far the descPos variable gets a wrong value, always 1 and 
> the mentioned text node has 
> a position 30 or more on some other input documents.
> thanks a lot for looking at this, 
> Lizet
> -------------------------------------------------
> Este mensaje fue enviado usando el servicio de correo en web 
> de Infomed
>  XSL-List info and archive:

 XSL-List info and archive:


These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.