[Bug 27250] [XSLT30] xsl:number applies general streamability rules to a pattern with usage inspection

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

--- Comment #2 from Michael Kay <mike@saxonica.com> ---
Proposed solution:

(I) For xsl:number, the rules become:

If either of the from or count patterns is present and is not a motionless
pattern, then the xsl:number instruction is roaming and free-ranging.

Otherwise, the posture and sweep of xsl:number follow the general streamability
rules. The operand roles and their usages are as follows:

1. The value attribute if present (usage absorption)

2. The select attribute if present (usage navigation)

3. The attribute value templates in the format, lang, letter-value, ordinal,
start-at, grouping-separator, and grouping-size attributes (usage absorption)

(II) For xsl:for-each-group:

* delete rule 1(f)

* Add after rule 1:

1½. If either of the group-starting-with or group-ending-with patterns is
present and is not a motionless pattern, then the xsl:for-each-group
instruction is roaming and free-ranging.

(I'm wondering if rule 1 can be simplified further. If the select expression is
grounded, then surely it doesn't matter what the group-by or group-adjacent
expressions are? If we can get rid of constraints on group-starting-with, why
not on group-by? But it's late at night, I'm not 100% confident of that).

(III) In 19.8.9, Classifying patterns, under the introduction

"A pattern is motionless if and only if it satisfies all the following
conditions:..."

add a third condition:

* The pattern does not contain a variable reference that is bound to the
streaming argument of a stylesheet function declared with streamable="yes".

Note: this last condition can occur only in the pattern-valued attributes of
instructions such as xsl:for-each-group and xsl:number when used within a
streamable stylesheet function.

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

Received on Wednesday, 7 January 2015 23:46:15 UTC