[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] Counting preceding nodes
Subject: RE: [xsl] 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: [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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Counting preceding nodes, Kevin Bird \(Matrix\ | Thread | RE: [xsl] Counting preceding nodes, Kevin Bird \(Matrix\ |
Re: [xsl] character replacement, Colin Paul Adams | Date | RE: [xsl] Counting preceding nodes, Kevin Bird \(Matrix\ |
Month |