RE: [xsl] Xpath to count occurances within a single parent

Subject: RE: [xsl] Xpath to count occurances within a single parent
From: "David White" <davidw@xxxxxxxxxxx>
Date: Mon, 28 Aug 2006 15:09:16 -0500
Thanks Mike,

Dave's mention of xsl:number also helped allot! I think this is the final
solutions for the situation I have

Thanks again to everyone for the help!

David White

This gives me a variable that tells me how many cautions are preceding

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
Sent: Monday, August 28, 2006 2:54 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Xpath to count occurances within a single parent

In XPath 2.0,

count(preceding::caution intersect ancestor::chapter//caution)

In 1.0, you can simulate the intersect operator using the equivalence

A intersect B ==> A[count(.|B) = count(B)]

But you might be better off using 

<xsl:number count="caution" level="any" from="chapter"/>

Michael Kay
http://www.saxonica.com/

 

> -----Original Message-----
> From: David White [mailto:davidw@xxxxxxxxxxx]
> Sent: 28 August 2006 17:07
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Xpath to count occurances within a single parent
> 
> Hello all,
> 
> I have the following XML structure
> 
> <book>
> <chapter>
> <caution/>
> <caution/>
> <caution/>
> </chapter>
> 
> <chapter>
> <sect1>
> <caution/>
> </sect1>
> <caution/>
> <caution/>
> </chapter>
> </book>
> 
> What I need is an XPATH statement that counts the number of preceding 
> cautions in each chapter.  From any given chapter element.
> 
> EXAMPLE:
> count(preceding::caution)!= 0
> 
> This XPATH works correctly for the first <chapter> but fails on the 
> second <chapter> because one <caution> is a child of <sect1>.
> 
> Is there a way to count preceding <cautions> within a <chapter> 
> element despite nesting?
> 
> Thanks,
> 
> David White

Current Thread