Hi Jan,
Please try the following stylesheet:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/theExampleXMLTree">
<xsl:text>NodeNr.|Value 
</xsl:text>
<xsl:for-each select="Node">
<xsl:variable name="count">
<xsl:call-template name="XYZ">
<xsl:with-param name="nodeset"
select="following-sibling::*" />
<xsl:with-param name="n" select="0" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="position()" />|<xsl:value-of
select="$count" /><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template name="XYZ">
<xsl:param name="nodeset" />
<xsl:param name="n" />
<xsl:choose>
<xsl:when test="$nodeset[1]/@count-me = 'yes'">
<xsl:call-template name="XYZ">
<xsl:with-param name="nodeset"
select="$nodeset[position() > 1]" />
<xsl:with-param name="n" select="$n + 1" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$n" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Regards,
Mukul
On 6/28/06, news(_at_)swisslab(_dot_)de <news(_at_)swisslab(_dot_)de> 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::*[(_at_)count-me =
'yes')]"/>
</xsl:template>
I also tried:
<xsl:variable name="number" select="following-sibling::*[position()
+1][(_at_)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
--~------------------------------------------------------------------
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>
--~--