[Bug 24497] New: Missing posture and operands for streamability of xsl:merge

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

            Bug ID: 24497
           Summary: Missing posture and operands for streamability of
                    xsl:merge
           Product: XPath / XQuery / XSLT
           Version: Last Call drafts
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSLT 3.0
          Assignee: mike@saxonica.com
          Reporter: abel.braaksma@xs4all.nl
        QA Contact: public-qt-comments@w3.org

Under 19.8.4.24 Streamability of xsl:merge
(http://www.w3.org/TR/xslt-30/#streamability-xsl-merge), the posture is
missing.

Also, it is not clear what the operands are for xsl:merge-source and whether
xsl:merge-key is part of the operands.

The current rule seems to indicate that the following is allowed:

<xsl:merge>
   <xsl:merge-source select="." >
     <xsl:merge-key select="foo" />
   </xsl:merge-source>
   <xsl:merge-action>
     <xsl:copy-of select="." />
   </xsl:merge-action>
</xsl:merge>

Perhaps a bit senseless, and perhaps potentially streamable (I think it should
not be streamable with the current rules), but I think we should at least name
the operands. 

Also, I think we can do better here than only allowing motionless sources.
I.e., when the for-each expression is absent or motionless and the select
expression is consuming (or the reverse), and the merge-key is motionless, I
think xsl:merge is streamable to the extend that merge-action is streamable. We
might even go so far to consider xsl:merge streamable if the union of the
select-expression is streamable, which would allow:

<xsl:merge bind-key="grp">
   <xsl:merge-source select="foo">
      <xsl:merge-key select="@name" />
   </xsl:merge-source>
   <xsl:merge-source select="bar">
      <xsl:merge-key select="@name" />
   </xsl:merge-source>
   <xsl:merge-action>
      <xsl:value-of select="$grp" />
   </xsl:merge-action>
</xsl:merge>

because the expression "foo | bar" is a streamable pattern, "@name" is
motionless and the merge-action is consuming.

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

Received on Wednesday, 5 February 2014 02:19:33 UTC