Subject: RE: Counting preceding nodes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 7 Jan 2005 16:35:24 -0000
|
It's easiest to do this in XSLT:
<xsl:number count="level3" level="any" from="level1"/>
and of course you can put that in a variable.
In XPath 2.0 you can do
count(ancestor::level1/level2/level3[. << current()])
An XPath 1.0 solution, given that your hierarchy is very rigid, is
count(preceding-sibling::level3) +
count(../preceding-sibling::level2/level3)
If a level2 only ever has exactly one level3 child, as in your example, you
can just do
count(../preceding-sibling::*)
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Kevin Bird [mailto:kevin.bird@xxxxxxxxxxxxxxxxxxxxxxx]
> Sent: 07 January 2005 16:20
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Counting preceding nodes
>
> Hi
>
> I have the following XML structure, <level3/> is my context
> node. I want
> to count the preceding <level3/> nodes that have the same <level1>
> grandparent. I can't seem to get my head around the XPATH syntax.
>
> <wrapper>
> <level1>
> <level2>
> <level3/>
> </level2>
> <level2>
> <level3/>
> </level2>
> <level2>
> <level3/>
> </level2>
> </level1>
> <level1>
> <level2>
> <level3/>
> </level2>
> <level2>
> <level3/>
> </level2>
> <level2>
> <level3/> <!-- when context, preceding count will
> be 2 -->
> </level2>
> <level2>
> <level3/> <!-- when context, preceding count will
> be 3 -->
> </level2>
> </level1>
> </wrapper>
>
> Thanks.
>
> --
> Kevin
|