- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 10 Nov 2005 13:48:37 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=2500
Summary: Predicate list evaluation
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: XPath
AssignedTo: chamberl@almaden.ibm.com
ReportedBy: boehme@informatik.uni-leipzig.de
QAContact: public-qt-comments@w3.org
For my understanding the spec don't clearly specify how predicates of a
predicate list are evaluated. What we have is:
3.2.1
"The value of the step consists of those items that satisfy the predicates."
So i see two possibilities (C be the set of context nodes of a step without
applied predicates):
1) each predicate is applied to C and the intersection of these results will be
the result of the step
2) the predicates are applied left to right and the result of one predicate
evaluation is the context for the following predicate
Both possibilities are equal as long as no positional filter (position(),
first(), last(), numeric item) is used.
The only indication that case 2 is the right one is given in 3.2.4 with the examples
para[@type="warning"][5] and
para[5][@type="warning"]
Furthermore 2.3.4 states
"An implementation is permitted, however, to reorder the predicates to achieve
better performance...". This however could be misleading interpreted as
supporting case 1.
Therefore I would propose to clearly state how predicate lists are to be
evaluated and give a warning/hint in 2.3.4 that reordering of predicates is
dangerous if predicates with references to context positions are included.
Kind regards
Timo
Received on Thursday, 10 November 2005 13:48:42 UTC