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