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

Subject: RE: [xsl] Xpath to count occurances within a single parent
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 28 Aug 2006 20:53:46 +0100
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