- From: <bugzilla@jessica.w3.org>
- Date: Thu, 04 May 2017 17:43:07 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=30093
Michael Kay <mike@saxonica.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|NEW |RESOLVED
--- Comment #1 from Michael Kay <mike@saxonica.com> ---
The WG agreed the change, and I have changed the explanation of the example to
say "//para matches any para element in a tree that is rooted at a document
node".
The WG also asked the editor, for the record, to provide a technical
explanation of why the example is incorrect.
The relevant rule for the semantics of this pattern is in ยง5.5.3 (The Meaning
of a Pattern) and reads:
an item N matches a pattern P if the following applies, where EE is the
equivalent expression to P: N is a node, and the result of evaluating the
expression root(.)//(EE) with a singleton focus based on N is a sequence that
includes the node N
So //para matches $N if the result of root($N)//(//para) contains N. This
expression expands to
root($N)/
descendant-or-self::node()/
( root(.) treat as document-node()/
descendant-or-self::node()/
child::para )
If $X is a root node then for every descendant $D of $X, root($D) will be $X.
So this can be simplified to
root($N) treat as document-node()/
descendant-or-self::node()/
child::para
It is clear that
(a) all nodes selected by this expression are elements named para
(b) in the case of a para for which root(.) is not a document node, the step
(root(.) treat as document node) will fail with a dynamic error, and therefore
the pattern will not match
(c) for every element E in a tree that is rooted at a document node, E is
either a child of the document node, or a child of a descendant of the document
node, and therefore the pattern selects EVERY element named para in such a
tree.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Thursday, 4 May 2017 17:43:14 UTC