[Bug 28154] [xslt 3.0] streamable templates: climbing body


Michael Kay <mike@saxonica.com> changed:

           What    |Removed                     |Added
             Status|NEW                         |ASSIGNED

--- Comment #4 from Michael Kay <mike@saxonica.com> ---
We now have the concept of type-adjusted posture and sweep in the spec,
although it doesn't use quite the wording proposed here. I believe we can now
resolve this bug by changing rule 3 in 6.6.4 (and adding a rule 4), so the
rules now read:


A template rule that is applicable to a mode M is guaranteed-streamable if and
only if all the following conditions are satisfied:

1. Mode M is declared in an xsl:mode declaration that specifies

2. The pattern defined in the match attribute of the xsl:template element is a
motionless pattern as defined in 19.8.10 Classifying Patterns.

3. The sweep of the sequence constructor in the body of the xsl:template
element is either motionless or consuming

4. The type-adjusted posture of the sequence constructor forming the body of
the xsl:template element, with respect to the U-type that corresponds to the
declared return type of the template (defaulting to item()*), is grounded.

  Note: this means that either the sequence constructor is grounded as written
(that is, it does not return streamed nodes), or that it effectively becomes
grounded because the declared result type of the template forces atomization.

5. Every expression and contained sequence constructor in a contained xsl:param
element (the construct that provides the default value of the parameter) is


The reason the original example is non-streamable is that the type-adjusted
posture in this case is roaming; this happens because the GSRs are invoked with
an operand having posture=climbing, usage=absorption, and this combination
gives a result posture of roaming.

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

Received on Friday, 17 April 2015 09:29:17 UTC