我想知道是否可以根据属性值在XSLT(2.0)中调度<xsl:template>
。我们假设以下示例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/>
,调用专用的命名模板。
是否有更好的解决方案来根据属性值进行模板调度?
答案 0 :(得分:2)
您的代码在XSLT 1.0和2.0中都有效,这也是很好的做法。有什么问题?