不,没有办法为mode
属性使用动态值。它必须是静态的。在您的情况下,我建议您执行以下操作(使用名称myNode作为上面示例的上下文节点):
<xsl:template match="myNode[@myAttribute = 'someValue']" mode="specialHandling">
<!-- template contents -->
</xsl:template>
<xsl:template match="myNode[@myAttribute = 'someOtherValue']" mode="specialHandling">
<!-- template contents -->
</xsl:template>
<xsl:template match="myNode[@myAttribute = 'aThirdValue']" mode="specialHandling">
<!-- template contents -->
</xsl:template>
<xsl:template match="myNode[not(@myAttribute)]" mode="specialHandling">
<!-- template contents -->
</xsl:template>
那你甚至不需要那个xsl:choose
。你可以这样做:
<xsl:apply-templates select="." mode="specialHandling" />