- From: Philippe Michiels <philippe.michiels@ua.ac.be>
- Date: Thu, 17 Mar 2005 10:48:57 +0100
- To: www-ql@w3.org
Hi,
I am confused by the normalization of path expressions that have end with a
predicate step (e.g. doc("x")/a/b[c]
The normalization of filter expressions in the FS, enforces the result of the
step to be a node sequence (because of the fs:distinct-doc-order call).
For instance, for a numerical predicate it goes as follows:
[ForwardStep PredicateList "[" Numeric "]"]Expr
==
let $fs:sequence :=
fs:apply-ordering-mode(fs:distinct-doc-order( [ForwardStep
PredicateList]Expr )) return
fn:subsequence($fs:sequence,Numeric,1)
But from the XPath 2.0 draft I understand that the result can be a sequence of
nodes or a sequence of atomic values:
from (http://www.w3.org/TR/xpath20/#id-path-expressions)
Each operation E1/E2 is evaluated as follows: Expression E1 is evaluated, and
if the result is not a (possibly empty) sequence of nodes, a type error is
raised. Each node resulting from the evaluation of E1 then serves in turn to
provide an inner focus for an evaluation of E2, as described in 2.1.2 Dynamic
Context. The sequences resulting from all the evaluations of E2 are combined
as follows:
(1) If every evaluation of E2 returns a (possibly empty) sequence of nodes,
these sequences are combined, and duplicate nodes are eliminated based on
node identity. The resulting node sequence is returned in document order.
(2) If every evaluation of E2 returns a (possibly empty) sequence of atomic
values, these sequences are concatenated, in order, and returned.
(3) Otherwise (that is, if the multiple evaluations of E2 return at least one
node and at least one atomic value), a type error is raised.[err:XP0018].
I'm wondering wheather the distinct-doc-order call in the FS should in fact be
a distinct-doc-order-or-atomic-sequence call.
Thanks,
Ph
--
Philippe Michiels
Universiteit Antwerpen
ADReM (Advanced Database Research and Modelling)
http://www.adrem.ua.ac.be/~michiels
Received on Thursday, 17 March 2005 09:49:01 UTC