条件の結果に基づいて、さまざまなパラメーターを持つテンプレートを適用したいと思います。このようなもの:
<xsl:choose>
<xsl:when test="@attribute1">
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Attribute no. 1</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes"><xsl:value-of select="@attribute1"/></xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="@attribute2">
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Attribute no. 2</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes"><xsl:value-of select="@attribute1"/></xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select='.' mode='custom_template'>
<xsl:with-param name="attribute_name" tunnel="yes">Error</xsl:with-param>
<xsl:with-param name="attribute_value" tunnel="yes">No matching attribute </xsl:with-param>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
まず第一に、これははるかに良い方法で解決できると思います。(私は XSLT にまったく慣れていないので、改善を提案し、肥大化したコードを許してください。)
ここで質問です。この条件に基づいてパラメーターを設定し、それらを .xml ファイルで使用するにはどうすればよいxsl:apply-templates
でしょうか。xsl:choose
全体を開始/終了タグでラップしようとしましたxsl:apply-templates
が、それは明らかに合法ではありません。手がかりはありますか?