[Bug 24317] [xslt 3.0] Parallel splitting: the dynamic multi-coloured widgets problem

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

Michael Kay <mike@saxonica.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED

--- Comment #6 from Michael Kay <mike@saxonica.com> ---
The WG asked me to make a concrete proposal to meet this requirement.

I propose to use the construct:

<xsl:fork>
  <xsl:for-each-group select="/*/widget" group-by="colour">
    <xsl:result-document href="{current-grouping-key()}.xml">
      <widgets colour="{current-grouping-key()}">
        <xsl:sequence select="current-group()"/>
      </widgets>
    </xsl:result-document>
  </xsl:for-each-group>
</xsl:fork>

for this use case. The content model of xsl:fork is changed to allow either its
current content (xsl:sequence+), or a single xsl:for-each-group element;
wrapping xsl:for-each-group inside xsl:fork acts as a signal that the user
recognizes that buffering of output will be needed and accepts the
consequences.

The rules for streamability of xsl:for-each-group (19.4.8.19) rules 2 and 3
become:

2. If there is a group-by attribute and the xsl:for-each-group instruction is
not a child of xsl:fork, then roaming and free-ranging.
3. If there is a group-adjacent or group-by attribute that is not motionless,
then roaming and free-ranging.

The rules for streamability of xsl:fork (19.4.8.20) change to add a rule 0:

0. If the content of the xsl:fork instruction comprises a single
xsl:for-each-group instruction, then the posture and sweep of that instruction.

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

Received on Wednesday, 4 June 2014 11:08:34 UTC