This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 29690 - [XSLT30] Streamability rules, "must" process using streaming when construct is guaranteed streamable
Summary: [XSLT30] Streamability rules, "must" process using streaming when construct i...
Status: RESOLVED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XSLT 3.0 (show other bugs)
Version: Candidate Recommendation
Hardware: PC Windows NT
: P2 minor
Target Milestone: ---
Assignee: Michael Kay
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-06-08 15:59 UTC by Abel Braaksma
Modified: 2017-01-30 12:52 UTC (History)
0 users

See Also:


Attachments

Description Abel Braaksma 2016-06-08 15:59:43 UTC
Perhaps the most important rule on streamability is found in 19.10 and says that:


1) If a construct is guaranteed-streamable then it MUST be processed using streaming.

This text, and the text around it, do not seem to say that when the supplied node is itself not a streamed node, then it will not be processed using streaming (consider the input to IMS, or a copy-of() call, or an apply-templates with a non-streamed input tree to a streamable mode).

I propose something along the following:

1) If a construct is guaranteed-streamable and the input tree is provided as a streamed node, then it MUST be processed using streaming.

I think this takes care of the scenarios where an input tree is not a streamed tree, or where a calling construct creates a non-streamed tree, or is itself invoked with a non-streamed tree.

We could add a Note that says that it is an API matter how a processor provides a streamed node as input. Note also that we do not forbid a non-streamed node as input (except for xsl:stream and xsl:merge-source).
Comment 1 Abel Braaksma 2016-06-08 16:11:28 UTC
Another angle to this is: consider an initial-function invocation with a streamable function, the streamable argument can be of type "item()", but there is nothing to stream if you supply it a text node, or a string. In such cases, the current way 19.10, Rule (1) is written seems in conflict with itself..
Comment 2 Michael Kay 2016-06-13 16:45:23 UTC
The WG accepted the proposed change, however the editor was actioned to check whether there was any interaction with the resolution to bug #29472.
Comment 3 Abel Braaksma 2016-09-01 15:19:17 UTC
I'm wondering whether these changes have been applied to the most recent (last week's) internal WD. I didn't see a change log entry, and I think the original definition of this rule is still in place.
Comment 4 Michael Kay 2017-01-30 12:52:10 UTC
On investigation I found that:

(a) the necessary changes have been applied to the spec

(b) for some reason the changes are tagged (quite wrongly) as belonging to the unrelated bug 29989

(c) there appears to be no entry in the change log.

I have fixed this.