Reputation: 169
How do I get relative position of a node in a given XML. I want to only consider "b" node in "a" node not in x-> y -> b, I get b count as 1,2,3,4 not 3,4,5,6. I have tried "multiple" and "any" in xsl:number but does not work.
<x>
<y>
<b></b>
<b></b>
</y>
</x>
<a>
<b></b>
<b></b>
</a>
<a>
<b></b>
<b></b>
</a>
<xsl:for-each select="a">
<dummy>
<xsl:for-each select="b">
<xsl:variable name="pos" select="position()" />
<dummy2><xsl:number level="any"/></dummy2>
</xsl:for-each>
</dummmy>
</xsl:for-each>
I expect dummy2 to have 1,2,3,4 values.
<dummy>
<dummy2>1<dummy2>
<dummy2>2<dummy2>
</dummmy>
<dummy>
<dummy2>3<dummy2>
<dummy2>4<dummy2>
</dummmy>
Upvotes: 0
Views: 59
Reputation: 70648
You can still do this with xsl:number
.
Try this...
<dummy2><xsl:number level="any" count="b[parent::a]" /></dummy2>
Or maybe this...
<dummy2><xsl:number level="any" count="a/b" /></dummy2>
Upvotes: 3
Reputation: 3445
Try This:
<xsl:for-each select="a">
<dummy>
<xsl:for-each select="b">
<dummy2><xsl:value-of select="count(preceding::b[parent::a])+1" /></dummy2>
</xsl:for-each>
</dummy>
</xsl:for-each>
Upvotes: 0