- From: <bugzilla@jessica.w3.org>
- Date: Wed, 23 Sep 2015 15:12:50 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29142
Bug ID: 29142
Summary: [XSLT30] streamability of the xsl:merge-source/select
expression
Product: XPath / XQuery / XSLT
Version: Last Call drafts
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: XSLT 3.0
Assignee: mike@saxonica.com
Reporter: abel.braaksma@xs4all.nl
QA Contact: public-qt-comments@w3.org
Target Milestone: ---
This bug followed from bug#29120.
We say in the same section 15.4:
> 3. The expression in the select attribute of that xsl:merge-source
> element has striding posture;
I have the following observations:
1) Before we can assess the streamability of anything, we need to know the
context posture and the context item type, which is not given here. It
stands to reason that the context posture should be striding. The context
item follows from the anchor item, which is the document node.
2) We don't mention the sweep. While this may be irrelevant (free-ranging
sweep results in roaming posture and v.v.), we seem to always mention it
elsewhere.
3) Perhaps it is intentionally just striding, but I think we do not need to
limit it to being grounded. select="/snapshot(.)", or select="/foo
/bar/copy-of()" does not need to be illegal.
4) We currently imply that we do not disallow grounded posture, but that
if you return non-nodes, that the snapshot() call will fail. I don't see
a problem with leaving that as is (neither would I mind it if we allow
snapshot to operate on non-nodes).
I propose to change this something like the following:
<proposal>
3. The expression in the select attribute of that xsl:merge-source
element, assessed with a context posture of striding and a context item
type of document(), has striding or grounded posture and a motionless or
consuming sweep."
</proposal>
(consequently, the example given has an expression has a relative path
expression, which is not wrong, but may be confusing, I suggest to change it
"/events/...". This observation may be important because of the streamability
rules on the root() function).
I think that legal merge expressions should include:
/
which is motionless/striding
/foo/bar
which is consuming/striding
/foo/bar/@zed
which is consuming/striding
/foo//*/../@zed
a scanning expr, then climbing, then striding and consuming
/foo/bar/namespace::node()
which is consuming/striding
/foo/string-join(bar)
which is consuming/grounded
//*/string-join(ancestor-or-self::*/name())
which is striding, then scanning expr, then crawling, then grounded and
consuming
(/foo//bar)[3]
which is crawling, then striding and consuming
I think all in all our rules were intended to allow these. The only nitpick is
with xsl:merge-source/@select returning non-nodes, but this is covered by the
current text.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Wednesday, 23 September 2015 15:12:53 UTC