xsl-list
[Top] [All Lists]

Re: [xsl] ancestor::* and for-each

2010-07-28 11:27:33
On 28/07/2010 17:11, Wolfgang Laun wrote:
I use ancestor-or-self::* to obtain the node sequence from some node
to the document root.
The outermost/top element of the document isn't interesting, so I add
a predicate, and I find that this works:
    [position() != last()]
Apparently, the sequence goes from leaf to root, which is the closing
tag order, as it should be.

The sequence returned by a path expression is always in document order so
(ancestor-or-self::*)[position()!=1]

would return the elements you want.

However the predicates that appear within a step are not filtering the entire sequence returned they are a separate syntactic construct, and they number in the direction of the axis used. which is backwards for ancestor-or-self so, as you observe

ancestor-or-self::*[position() != last()]

selects the same elements.


[] in a step is a predicate
http://www.w3.org/TR/xpath20/#id-predicates

[] applied to a sequence is a filter
http://www.w3.org/TR/xpath20/#id-filter-expr

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________

--~------------------------------------------------------------------
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>