Subject: RE: trouble with preceding axis
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 3 Jan 2006 21:09:21 -0000
|
//item[label = 'subTitle']/preceding-sibling::item[1]
Your expression
//preceding::item[label = 'subTitle']
means
/descendant-or-self::node()/preceding::item[label = 'subTitle']
which finds all the nodes in the document, then for each one searches
backwards to find preceding items with label='subtitle', and then eliminates
the duplicates.
Note also the distinction between preceding-sibling and preceding.
In your case the [1] is unnecessary because there is only one preceding
sibling item, but I guess your real problem is a bit more complex.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Duane Gran [mailto:duane.gran@xxxxxxxxx]
> Sent: 03 January 2006 18:35
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: trouble with preceding axis
>
> I'm having some trouble using the preceding axis in XPath and would
> be much obliged if someone could steer me in the right direction. I
> have the following document:
>
> <root>
> <item order="3">
> <label>Title</label>
> </item>
> <item order="4">
> <label>subTitle</label>
> </item>
> </root>
>
> I have the following XPath to select the second item, based on the
> value of its label child:
>
> //item[label = 'subTitle']
>
> Now I want to modify this so that I refer to the preceding item
> element, the first one in the list. I tried the following without
> success (it returns the second item element):
>
> //preceding::item[label = 'subTitle']
>
> Suggestions are most welcome on this.
>
> Duane
|