[Bug 30093] [xslt30] Incorrect explanation of example pattern

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