2

次のように、ソース XML の属性に基づいて apply-templates モードを動的に変更したいと考えています。

<xsl:choose>
    <xsl:when test="@myAttribute">
        <xsl:apply-templates select="." mode="@myAttribute"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:apply-templates select="." mode="someOtherMode"/>
    </xsl:otherwise>
</xsl:choose>

mode 属性で XPath を評価することは可能ですか? 他のアプローチはありますか?

ありがとう!

4

1 に答える 1

3

いいえ、mode属性に動的な値を使用する方法はありません。静的でなければなりません。あなたの場合、次のようなことをすることをお勧めします(上記の例のコンテキスト ノードとしてmyNodeという名前を使用します)。

<xsl:template match="myNode[@myAttribute = 'someValue']" mode="specialHandling">
   <!-- template contents -->
</xsl:template>

<xsl:template match="myNode[@myAttribute = 'someOtherValue']" mode="specialHandling">
   <!-- template contents -->
</xsl:template>

<xsl:template match="myNode[@myAttribute = 'aThirdValue']" mode="specialHandling">
   <!-- template contents -->
</xsl:template>

<xsl:template match="myNode[not(@myAttribute)]" mode="specialHandling">
   <!-- template contents -->
</xsl:template>

それさえ必要ありませんxsl:choose。あなたはただ行うことができます:

<xsl:apply-templates select="." mode="specialHandling" />
于 2013-02-14T17:56:24.150 に答える