21

以前に割り当てられた変数に値を再割り当てするにはどうすればよいですか? 次のように動作する必要があります。

<xsl:variable name="variable2" select="'N'" />
....
<xsl:when test="@tip = '2' and $variable2 != 'Y'">                                                   
    <xsl:variable name="variable2" select="'Y'" />
</xsl:when>
4

5 に答える 5

21

XSLT の変数には、一度だけ値を割り当てることができます。これは設計によって行われます。なぜ関数型言語なのかを参照してください。一般的な動機の評価のために。

変数を再割り当てするのではなく、入力ドキュメントに対して直接条件を記述するか、さまざまなローカル パラメーターを使用して関数 (または名前付きテンプレート) を再帰的に呼び出します。

必要なことはすべて、変数の再割り当てを必要としないアプローチで実行できます。より具体的な回答を得るには、より具体的な質問をしてください。

以下も参照してください。

于 2013-10-08T18:55:44.850 に答える
8

複数の変数を使用するだけです。これが機能するように作成された例です...

    <xsl:variable name="variable1" select="'N'" />
    ....
    <xsl:variable name="variable2">
        <xsl:choose>
            <xsl:when test="@tip = '2' and $variable1 != 'Y'">
                <xsl:value-of select="'Y'" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$variable1" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
于 2016-04-14T16:14:10.353 に答える