AW: [xsl] count Nodes with attributes until... (XSLT 1.0)

Subject: AW: [xsl] count Nodes with attributes until... (XSLT 1.0)
From: news@xxxxxxxxxxx
Date: Wed, 28 Jun 2006 12:10:10 +0200
Hi George.
Thank you, what a smart idea :)
it seems to work fine!

Best Regards,
Jan

-----Urspr|ngliche Nachricht-----
Von: George Cristian Bina [mailto:george@xxxxxxxxxxxxx]
Gesendet: Mittwoch, 28. Juni 2006 11:34
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: Re: [xsl] count Nodes with attributes until... (XSLT 1.0)


You can count the number of following siblings that have the count-me
attribute set to yes and remove the nodes to be counted after the first
node that does not have a count-me equals with yes attribute:

count(following-sibling::*[@count-me='yes'])-
count(following-sibling::*[not(@count-me='yes')][1]/following-sibling::*[@co
unt-me='yes'])

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


news@xxxxxxxxxxx wrote:
> Hello List,
>
> I have to count a number of nodes. Each node that is to be counted has an
> attribute 'count-me="yes"' (this is a example :)). But as soon there is a
> node which does'nt have such an attribute, or has a attribute
> 'count-me="false"' this and all following nodes are not to be counted. The
> result value is dependent on the number of the node that is in the focus.
>
> Example:
> <theExampleXMLTree>
> 	<Node count-me="yes"/>
> 	<Node count-me="yes"/>
> 	<Node count-me="yes"/>
> 	<Node/>
> 	<Node count-me="no"/>
> 	<Node count-me="yes"/>
> </theExampleXMLTree>
>
> The value wanted is e.g. 2 when processing the first node.
>
> ...
>
> This is how I've tried it so far. The problem here is, that when
processing
> the first Node I always get the value of 4 (what is quite logical to me).
>
> <xsl:template natch="Node" mode="counting_example">
>   <xsl:variable name="number" select="following-sibling::*[@count-me =
> 'yes')]"/>
> </xsl:template>
>
> I also tried:
>   <xsl:variable name="number" select="following-sibling::*[position()
> +1][@count-me = 'yes')]"/>
>
> But that just counts the next node if it has the matching attribute.
>
> Let me show what I actually want at the following tabel (using the XML
shown
> above):
> NodeNr.|Value
> 1|2
> 2|1
> 3|0
> 4|0
> 5|1
> 6|0
>
> Is this possible? and how?
>
> With best regards,
> Jan

Current Thread