Subject: RE: counting the element number in a recursive tree
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 26 Jun 2006 12:24:40 +0100
|
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@xxxxxxxxx]
> Sent: 26 June 2006 12:06
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: 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.
|