[Bug 29697] New: [XSLT30]With nested xsl:merge, should the current-merge-group() of outer merge be available for a merge group selection of inner merge?

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

            Bug ID: 29697
           Summary: [XSLT30]With nested xsl:merge, should the
                    current-merge-group() of outer merge be available for
                    a merge group selection of inner merge?
           Product: XPath / XQuery / XSLT
           Version: Candidate Recommendation
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSLT 3.0
          Assignee: mike@saxonica.com
          Reporter: martin.honnen@gmx.de
        QA Contact: public-qt-comments@w3.org
  Target Milestone: ---

Created attachment 1645
  --> https://www.w3.org/Bugs/Public/attachment.cgi?id=1645&action=edit
sample input data for test case

The following code has two nested xsl:merge, where an xsl:merge-source/@select
of the inner xsl:merge tries to select the current-merge-group() of the outer
xsl:merge:

        <xsl:template match="root">
                <xsl:copy>
                        <xsl:merge>
                                <xsl:merge-source select="item">
                                        <xsl:merge-key select="foo"/>
                                </xsl:merge-source>
                                <xsl:merge-action>
                                        <group key="{current-merge-key()}">
                                                <xsl:merge>
                                                        <xsl:merge-source
select="current-merge-group()">
                                                                <xsl:merge-key
select="bar"></xsl:merge-key>
                                                        </xsl:merge-source>
                                                        <xsl:merge-action>
                                                                <nested-group
key="{current-merge-key()}">
                                                                       
<xsl:copy-of select="current-merge-group()/value"/>
                                                                </nested-group>
                                                        </xsl:merge-action>
                                                </xsl:merge>
                                        </group>
                                </xsl:merge-action>
                        </xsl:merge>
                </xsl:copy>
        </xsl:template>

This works fine with Exselt, however Saxon (tested with 9.7.0.5 EE) complains

Error in xsl:merge-source/@select on line 18 column 57 of test2016061801.xsl:
  XTDE3480: There is no current merge group

So with Saxon I have to use a variable, as in 

                        <xsl:merge>
                                <xsl:merge-source select="item">
                                        <xsl:merge-key select="foo"/>
                                </xsl:merge-source>
                                <xsl:merge-action>
                                        <group key="{current-merge-key()}">
                                                <xsl:variable name="group"
select="current-merge-group()"/>
                                                <xsl:merge>
                                                        <xsl:merge-source
select="$group">
                                                                <xsl:merge-key
select="bar"></xsl:merge-key>
                                                        </xsl:merge-source>
                                                        <xsl:merge-action>
                                                                <nested-group
key="{current-merge-key()}">
                                                                       
<xsl:copy-of select="current-merge-group()/value"/>
                                                                </nested-group>
                                                        </xsl:merge-action>
                                                </xsl:merge>
                                        </group>
                                </xsl:merge-action>
                        </xsl:merge>


So I would like a clarification whether with nested xsl:merge the
current-merge-group() of an outer xsl:merge should be accessible with an
xsl:merge-source of a inner xsl:merge.

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

Received on Saturday, 18 June 2016 09:25:17 UTC