Thank you for the comprehensive answer.
Kevin
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: 07 January 2005 16:35
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Counting preceding nodes
>
> 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
|