RE: [xsl] Navigation using XPath

Subject: RE: [xsl] Navigation using XPath
From: Jarno.Elovirta@xxxxxxxxx
Date: Wed, 13 Nov 2002 12:23:12 +0200
Hi,

> Thanx for the info. But what I want to know is if we don't know the
> exact position of the current element like *[1] how do I go 
> the next or
> previous element from the current position (assuming that I don't know
> the exact position number).

The position() returns the context position, so in *[position() = 1] it refers to the context of selecing all child element nodes, i.e. filters out all nodes whose context position is not 1., i.e. returns the child element; if you have following::*[1], it selects all the elements that follow the current node, then filters out all those whose context position is not 1, i.e. again selecting only the first element that follows the current node.

Position() does *not* return the index of an element; use count(preceding-sibling::*) + 1 to get the index of an element within it's siblings. See <http://localhost/tr/xpath/#function-position> and <http://localhost/tr/xpath/#dt-context-position>.

>Can I say something like 
> 
> *[position()=current()] OR following::*[position()=current()] OR
> preceding::*[position()=current()]

current() returns the current node, not a position. What should the above expression select? The current element or the first following element or the first preceding element? Is

. | following::*[1] | preceding::*[1]

what you're after?

> Will it work ?

Depends what you're after, but basically that will not work, or get you want you want.

Launch documentation auto-daemon...

Jarno - Funker Vogt: Words of Power (Power mix)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread