我想知道是否可以<xsl:template>
根据属性值在 XSLT (2.0) 中调度。让我们假设以下示例 XML:
<root>
<field code="a">Content A</field>
<field code="b">Content B</field>
</root>
我想为<xsl:template>
match
属性编写一个 XPath 选择器,它将处理调度到为给定属性的每个值定义的模板。一种天真的方法可以比较每个模板中的属性值:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match="/root">
<xsl:apply-templates select="field"/>
</xsl:template>
<xsl:template match="field[@code = 'a']">
Code A processing...
</xsl:template>
<xsl:template match="field[@code = 'b']">
Code B processing...
</xsl:template>
</xsl:stylesheet>
类似地,可以为每个可能的代码值使用<xsl:choose>
和调用一个专用的命名模板。<xsl:when>
<xsl:call-template/>
有没有更好的基于属性值进行模板调度的解决方案?