[Bug 24343] New: xsl:merge cannot be streamable because of semantics doc() etc

https://www.w3.org/Bugs/Public/show_bug.cgi?id=24343

            Bug ID: 24343
           Summary: xsl:merge cannot be streamable because of semantics
                    doc() etc
           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

This bug was first raised on the xsl-wg mailing list [1], relevant text copied
here in its entirety:

We currently define xsl:merge-source with @for-each to have a
doc/document/collection function and @streamable="yes" to indicate streaming
processing of the sources. However, this conflicts with the functions, which
are defined as deterministic, whereas streamed processing is deliberately not
deterministic.

That means, in practice, that streamed processing for xsl:merge can at most be
a compiler optimization, while at the same time it is required to retain
determinism, i.e., multiple invocations of such xsl:merge instruction must
result in the same results, and even invocations of doc etc with the same
arguments elsewhere must result in the same document node.

I propose to solve this the same way we did when introducing xsl:stream.
Instead of a function call, xsl:merge should have a src attribute that is an
AVT which returns a sequence of URIs. In line with this, we could also add a
collection-src attribute.

This change would bring it more in line with other streamability features, plus
it makes the claim that xsl:merge can do streaming mean something that can be
enforced by the guaranteed streamability rules.

[1] https://lists.w3.org/Archives/Member/w3c-xsl-wg/2014Jan/0012.html

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Tuesday, 21 January 2014 11:57:32 UTC