[Bug 28833] [XSLT30] Streamability of fn:current and varrefs should be roaming in higher-order operands

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

--- Comment #1 from Michael Kay <mike@saxonica.com> ---
I agree with the analysis; the question is how best to fix it.

Higher-order operands appear where any of the following applies:

(1) The context item for evaluation of O is different from the context item for
evaluation of C.

(2) C is an instruction and O is a pattern (as with the from and count
attributes of xsl:number, and the group-starting-with and group-ending-with
attributes of xsl:for-each-group).

(3) C is an XPath for, some, or every expression and O is the expression in its
return or satisfies clause.

(4) C is an inline function declaration and O is the expression in its body.

Case 1: For XPath expressions, the relevant cases are path expressions, bang
expressions, and filter expressions.

For XSLT instructions, there are quite a few: analyze-string, copy[@select],
for-each, for-each-group, iterate, merge, merge-key, xsl:sort, xsl:key(?)

Case 2: Applies only to for-each-group and xsl:number.

In for-each-group, neither of the two notes at the end of 19.8.4.19 discuss the
patterns. They need to.

xsl:number uses the GSRs, so it is OK.

Case 3: The GSRs apply, so this case is OK.

Case 4: Section 9.8.8.15 deals with references to streaming parameters, but not
with current().

There seem to be sufficiently many that a general statement is needed. Is it
sufficient to say that current() and references to streaming parameters are
roaming and free-ranging if used within a higher order operand of a construct
whose focus-setting container is not grounded?

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

Received on Thursday, 25 June 2015 17:06:36 UTC