xsl-list
[Top] [All Lists]

RE: [xsl] counting the element number in a recursive tree

2006-06-26 04:24:55
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>
--~--