If position() returns even numbers, it's because you are counting text nodes
as well as elements. The answer is to count only the elements, which will
happen if you use <xsl:for-each select="*"> or <xsl:apply-templates
select="*"> rather than using select="node()".
Dividing position() by 2 is wrong, because the whitespace text nodes won't
always be there.
Alternatively, use xsl:number.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Mohsen Saboorian [mailto:mohsens(_at_)gmail(_dot_)com]
Sent: 26 June 2006 12:06
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] counting the element number in a recursive tree
Hi,
I'm confused with counting the current element number with a
recursive xml structure. Here is a sample:
<node>
<node>
</node>
<node>
<node>
<node>
</node>
</node>
</node>
<node>
</node>
</node>
= = = = = = = = =
Since position() returns even numbers (I think is counts also
#text elements), I used position div 2, but unfortunately
deeper nodes also have problems.
<xsl:template match="node">
<xsl:value-of select="position() div 2" />
<xsl:apply-templates />
</xsl:template>
What souled I do to find out the correct number of node I'm
currently on.
Thanks in advance.
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--