RE: [xsl] Current node position

Subject: RE: [xsl] Current node position
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 11 Jun 2003 21:37:37 +0100
Your code will work if its called with

<xsl:apply-templates select="date"/>

rather than

<xsl:apply-templates select="*"/>

because position() is the position in the list of nodes selected by the
apply-templates.

I would suggest using last() rather than count(../date), my guess is it
would be more efficient, but that depends on the processor.

Michael Kay

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of jwhitney
> Sent: 11 June 2003 19:55
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Current node position
> 
> 
> Hello,
> 
> I'm trying to generate html code for "Date 1 of 2", "Date 2 
> of 2", etc., from 
> XML as below:
> 
> <a>
>    <b/>
>    <c/>
>    <date>text</date>
>    <date>text again</date>
> </a>
> 
> from within a template that matches "d".  The following 
> stylesheet fragment:
> 
> <xsl:template match="d">
>   <xsl:value-of select="position()" />
>   <xsl:text> of </xsl:text>
>   <xsl:value-of select="count(../date)" />
> </xsl:template>
> 
> produces "3 of 2" and "4 of 2".  Is there a way to restrict 
> position() to 
> evaluate the <date> nodes only?  How else could it be done?
> 
> I'm new to XSLT, obviously.   Thanks in advance for any help 
> with this.
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread