xsl-list
[Top] [All Lists]

RE: Counting preceding nodes

2005-01-07 09:35:24
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(_dot_)bird(_at_)matrixdigitaldata(_dot_)co(_dot_)uk] 
Sent: 07 January 2005 16:20
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] 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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>