Subject: RE: [xsl] counting nodes before a certain node|
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 30 Nov 2009 23:02:07 -0000
Given XSLT 2.0, you can select two elements $a and $b, and then the number of elements between these two is count($b/preceding-sibling::*) - count($b/preceding-sibling::*) - 1 This is probably more efficient than count(*[. >> $a and $b >> .]) but you can use that if it's more convenient. (I'm assuming that by "between" you mean "between and on the same level". That is, the number of elements between <a/> and <b/> in <a/><node><child/></node><b/> is one.) Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay > -----Original Message----- > From: a kusa [mailto:akusa8@xxxxxxxxx] > Sent: 30 November 2009 22:40 > To: xsl-list > Subject: [xsl] counting nodes before a certain node > > Hi > > How do I count nodes up to a certain point in XSLT? > > Example: > > My xml file looks like this: > > <books> > <book> > <title>First title</book> > </book> > <notes>The following books talk about history.</notes> > <notes>For further information please log on to </notes> > <notes>Thank you for choosing.. </notes> <book> > <title>Abraham Lincoln </title> </book> > > <authors> > sample data > > </authors> > <notes>Please call... </notes> > <notes>Copyright Information </notes> > <book> > > sample data > </book> > </books> > > In my XSLT file, I want to count all <notes> just before the > second <book> element but immediately after the first book > element or just after <authors>. > > How do I count all the notes elements here?