- From: <bugzilla@jessica.w3.org>
- Date: Sat, 06 Jun 2015 17:15:15 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=28775
Bug ID: 28775
Summary: [XSLT30] Suggestion: prioritise templates with named
modes over templates with mode="#all"
Product: XPath / XQuery / XSLT
Version: Working drafts
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: XSLT 3.0
Assignee: mike@saxonica.com
Reporter: tomos.hillman@oup.com
QA Contact: public-qt-comments@w3.org
Consider the following in XSLT 2:
<xsl:template match="node()|@*" mode="#all">
<xsl:apply-templates select="node()|@*" mode="#current"/>
</xsl:template>
<xsl:template match="element" mode="someMode">
-Some operation-
</xsl:template>
<xsl:template match="text()[contains(., 'x')] mode="anotherMode"
priority="-0.4">
-Another operation-
</xsl:template>
The only way to avoid a conflict between the first and third templates is to
assign the third with an explicit priority. This is a niggle, and may become a
risk where stylesheets have multiple authors (or long periods between edits)
This is un-necessary with the second template because the named element always
has a higher precedence than the generic 'node()'.
My suggestion is that, in a similar way, named modes should always have a
higher precedence than the generic '#all' mode for XSLT 3
You could point out that the 'better' way of approaching the problem is with
the use of template rules on mode elements; this is true, but I think this is
still a valid bug because
1. as reported in bug 28774 this exact behaviour is not replicated by
shallow-skip
2. If XSLT 3 is also implementing #all, the same limitations will apply.
I believe such a change would be backwards compatible.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Saturday, 6 June 2015 17:15:18 UTC