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>andを使用できます。<xsl:when><xsl:call-template/>

属性値に基づいてテンプレートのディスパッチを行うためのより良い解決策はありますか?

4

1 に答える 1

2

あなたのコードは XSLT 1.0 と 2.0 の両方で有効であり、良い習慣でもあります。どうしたの?

于 2013-07-31T16:05:19.883 に答える