This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Re: Assignment no, dynamic scoping si (was: Re: RE: Wishes for XSL revisions ...
- From: "Evan Lenz" <elenz at xyzfind dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 2 Jan 2002 13:11:12 -0800
- Subject: RE: [xsl] Re: Assignment no, dynamic scoping si (was: Re: RE: Wishes for XSL revisions ...
- Reply-to: xsl-list at lists dot mulberrytech dot com
Wendell Piez wrote:
> (And just checking ... XPath experts ...
> ancestor-or-self::*[@source][last()] will give me the *closest* 'source'
> attribute on an ancestor or self ... not the most distant, won't it?)
Unless a predicate is bound (without intervening parentheses) to a node
test, it is always evaluated with respect to a "forward" axis (the XPath
spec arbitrarily chooses the child axis).
ancestor-or-self::*[@source][last()]
Your example features both kinds of predicates. The first predicate is part
of the Step production (tightly bound to the node test) and the second is
part of a FilterExpr (loosely applied to the result of the expression to the
left). As it happens, the first predicate is not a positional predicate, so
the fact that it's evaluated with respect to a "reverse" axis makes no
difference to the result. The second predicate, as stated above, is
evaluated with respect to a "forward" axis, i.e. document order. So, yes,
the second predicate selects the node (from the node-set result of the
expression to the left) that's *last* in document order.
Evan
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list