0

我想知道是否可以<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/>

有没有更好的基于属性值进行模板调度的解决方案?

4

1 回答 1

2

您的代码在 XSLT 1.0 和 2.0 中都有效,这也是一种很好的做法。有什么问题?

于 2013-07-31T16:05:19.883 回答