[Bug 27051] [XSLT30] Resolution to bug 25185 introduced a bug in streaming rules of xsl:apply-templates

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

--- Comment #1 from Michael Kay <mike@saxonica.com> ---
I'm a little surprised to hear that the spec at one time allowed this.

While it's clear that it can be made to work, I'm a bit worried about whether
it's well grounded in the theory. My basic concerns are that when we evaluate a
template rule for streamability, we assume the context posture is striding. But
in this case the select expression that selected the nodes is climbing. If we
work through all the combinations of what you can do with the nodes, it seems
that all the permitted actions make sense, but it still doesn't feel right to
make this switch from climbing to striding as we enter the called template.

And is this the only place where this occurs? What about other places where we
require (and assume) striding expressions, such as for-each and for-each-group
and iterate? Is it safe to use attribute::* in all these contexts, on the same
basis?

If so, perhaps we should change the table in 9.8.7.7 so that selecting
attributes or namespaces from a striding origin gives a striding result? (And
perhaps selecting them from a crawling origin also gives a striding result?)

We could then also consider improving the rules for union expressions so that
*|@* is striding: the rule would perhaps be that if both operands are striding
if at most one operand can select elements, then the result is striding.

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

Received on Friday, 24 October 2014 16:30:29 UTC