Subject: Re: [xsl] count Nodes with attributes until... (XSLT 1.0) From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Wed, 28 Jun 2006 14:54:36 +0530 |
Hi Jan, Please try the following stylesheet:
<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>
Regards, Mukul
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] count Nodes with attributes u, news | Thread | Re: [xsl] count Nodes with attribut, George Cristian Bina |
RE: [xsl] switching between multipl, Michael Kay | Date | Re: [xsl] count Nodes with attribut, George Cristian Bina |
Month |