1

したがって、これはかなり単純だと思いますが、私が理解しているよりも複雑になる可能性があります。

とにかく、現時点では、関連性があると思われるコードのみを含めます。誰かが関連性があると思われる場合は、さらに含めるようにします。

私は2つの声明を持っています:

<xsl:value-of select="$isOnlineColumnEmpty" />
<xsl:value-of select="not($isOnlineColumnEmpty = 'false')" />

最初のものは false を出力します。ただし、2 番目のものは true を出力しています。これは、予想とは逆です。

これに加えて、これらの 2 つのステートメントは複数回繰り返され、この結果は 1 つのセクションでしか得られません。ただし、これら 2 つのステートメントの間にはまったくコードがないため、変数の値を変更するものは何もありません。

私が見落としている可能性があるものがあるかどうか疑問に思っていますか?

4

2 に答える 2

1

の代わりに:

<xsl:value-of select="not($isOnlineColumnEmpty = 'false')" />

使用:

<xsl:value-of select="not($isOnlineColumnEmpty = false())" />

説明:

ブール値は 文字列とはfalse()異なるものです。 "false"

ブール値が別の値と比較される場合、2 番目の値がブール値に変換されてから比較が実行されます。XPath 1.0 W3C 仕様を引用するには:

比較対象の少なくとも 1 つのオブジェクトがブール値の場合、比較対象の各オブジェクトは、ブール関数 を適用したかのようにブール値に変換されます。

したがって、この具体的なケースでは、文字列"false"はブール値に変換されます。定義上boolean($someString)true()、空でない文字列用です。

したがって、変換後、2 つのブール値false()true()が比較され、結果は になりfalse()ます。元の式では、この結果はnot()関数の引数であるため、最終結果はnot(false())、つまり ですtrue()

一連の計算は次のとおりです。

not($isOnlineColumnEmpty = 'false') ==> not(false() = 'false') ==>

not(false() = boolean(false())) ==> not(false() = true()) ==>

not(false()) ==> true()
于 2012-07-19T03:13:15.113 に答える
0

それで、私は後でこれを理解しました。

ステートメントを次のように変更します。

<xsl:value-of select="$isOnlineColumnEmpty != false" />

私の問題を修正しました。

于 2012-07-18T22:54:33.067 に答える