[Bug 3002] [XSLT] xsl:next-match and pattern with |

http://www.w3.org/Bugs/Public/show_bug.cgi?id=3002

           Summary: [XSLT] xsl:next-match and pattern with |
           Product: XPath / XQuery / XSLT
           Version: Candidate Recommendation
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSLT 2.0
        AssignedTo: mike@saxonica.com
        ReportedBy: joannet@ca.ibm.com
         QAContact: public-qt-comments@w3.org


Consider this example if the input is <doc><x/></doc>:

<xsl:template match="doc">
  <out>
        <xsl:apply-templates select="x"/>
  </out>
</xsl:template>

<xsl:template match="*:x|element(x)">
        <foo/>
        <xsl:next-match />
</xsl:template>

<xsl:template match="node()">
        <bar/>
</xsl:template>


Is the output:
        <out><foo/><bar/></out>
or
        <out><foo/><foo/><bar/></out>

note that the priority for
        element(x) is 0
        *:NCNAME is -.25
        node() is -.5

It seems odd to me that xsl:next-match can match the template that it's
declared in.  Is this the intention of the working group?

In section 6.4 Conflict Resolution for Template Rules:
"If the pattern contains multiple alternatives separated by | , then the
template rule is treated equivalently to a set of template rules, one for each
alternative. However, it is not an error if a node matches more than one of the
alternatives."

In section 6.7 Overriding Template Rules:
"the xsl:next-match instruction considers all other template rules of lower
import precedence and/or priority."

Received on Wednesday, 15 March 2006 11:56:16 UTC