'' = 0JxPath 1.3で式を評価していますが、結果はfalseになると思います。これは私のコードです:
JXPathContext.newContext(ctaSectionABean).getValue("'' = 0");
ただし、返される結果はtrueです。Eclipse jxpathツールで同じ式を評価すると、falseになります。これは、xpath1.0セクション3.4のドキュメントに次のように記載されているため、正しいと思います。
比較するオブジェクトがどちらもノードセットではなく、演算子が=または!=の場合、オブジェクトは次のように共通の型に変換して比較することで比較されます。比較対象のオブジェクトの少なくとも1つがブール値である場合、比較対象の各オブジェクトは、ブール関数を適用するかのようにブール値に変換されます。それ以外の場合、比較対象のオブジェクトが少なくとも1つが数値である場合、比較対象の各オブジェクトは、数値関数を適用するかのように数値に変換されます。それ以外の場合は、文字列関数を適用するかのように、比較される両方のオブジェクトが文字列に変換されます。=比較は、オブジェクトが等しい場合にのみ真になります。!=比較は、オブジェクトが等しくない場合にのみ真になります。IEEE 754 [IEEE 754]に従って、数値が等しいかどうかが比較されます。両方がtrueまたは両方がfalseの場合、2つのブール値は等しくなります。2つの文字列は、UCS文字の同じシーケンスで構成されている場合にのみ等しくなります。
したがって、オブジェクトはブール値ではなく、そのうちの1つは数値であるため、JxPathが両方を数値に変換しようとすることを期待しています。それは0のためで0あり、NaNのため''であり、私はJxPathがnumber()関数でそれらをそのように変換することをテストしました。これは、仕様で定義されているように、JxPathがそれらを数値に変換しようとしないことを意味します。
これはバグですか?