xsl-list
[Top] [All Lists]

RE: Current node position

2003-06-11 13:37:37
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(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
jwhitney
Sent: 11 June 2003 19:55
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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



<Prev in Thread] Current Thread [Next in Thread>