This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Difference between preceding::foo[1] and (preceding::foo)[1]
- To: "Zwetselaar M. van (Marco)" <Marco dot van dot Zwetselaar at nl dot fortis dot com>
- Subject: Re: [xsl] Difference between preceding::foo[1] and (preceding::foo)[1]
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Thu, 6 Sep 2001 15:07:34 +0100
- CC: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Organization: Jeni Tennison Consulting Ltd
- References: <85CF1C4ED1C6D411A8AE00508B682BD2042C1AA4@DBCFAA73>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Marco,
> Now, I understand the syntactic difference between preceding::foo[1]
> and (preceding::foo)[1]. In the first expression, the predicate is
> part of a location path, whereas in the second it is applied to an
> expression. The fact that these two expressions select different
> nodes is also clear to me. What I don't understand is how the
> predicate could apply to a CHILD axis. WHOSE child axis?
Section 2.4 says:
"An axis is either a forward axis or a reverse axis. An axis that
only ever contains the context node or nodes that are after the
context node in document order is a forward axis. An axis that only
ever contains the context node or nodes that are before the context
node in document order is a reverse axis... The proximity position
of a member of a node-set with respect to an axis is defined to be
the position of the node in the node-set ordered in document order
if the axis is a forward axis and ordered in reverse document order
if the axis is a reverse axis. The first position is 1.
A predicate filters a node-set with respect to an axis to produce a
new node-set. For each node in the node-set to be filtered, the
PredicateExpr is evaluated with that node as the context node, with
the number of nodes in the node-set as the context size, and with
the proximity position of the node in the node-set with respect to
the axis as the context position; if PredicateExpr evaluates to
true for that node, the node is included in the new node-set;
otherwise, it is not included."
>From this, the only aspect of the axis that's important when assessing
a predicate is whether it's a forward axis or a reverse axis. I
suspect that the use of the 'child axis' for interpreting predicates
on node-set expressions is just a means of saying 'a forward axis' to
make it clear that the node set is ordered in document order for the
purposes of proximity position. It could say 'descendant axis' instead
with the same effect.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list