[Bug 29161] [XSLT30] setting the context size with xsl:apply-templates during streaming

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

--- Comment #2 from Abel Braaksma <abel.braaksma@xs4all.nl> ---
> The same applies to other non-pipelinable operations such as reverse().

This won't happen in a sequence constructor, but I think you refer to something
like:

a/b/copy-of() => reverse()

But since reverse() takes a sequence as an argument, it is different from
last() that it first must materialize the whole sequence. This is similar to,
say, string-join. I.e., even though it cannot be pipelined, the argument is
consuming, so in a pipeline or windowed streaming scenario, the semantics of
the function make sure that it does not break any rules.

As a result, the above is (from a streaming view) semantically equal to
reverse(a/b/copy-of()) and reverse(copy-of(a/b)). After a rewrite to the
latter, which cannot be done with last() inside a seqtor, the streamability
issue goes away (well, technically, it means that the whole sequence will be
grounded first, stored in memory, so this is not streaming at all).

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

Received on Wednesday, 30 September 2015 10:16:29 UTC