0

XPath ユニオン演算子を使用したときに見られる動作を完全には理解していません。

次の XML を持つ

<root>
    <foo>hello</foo>
    <bar>world</bar>
</root>

これらの結果は、さまざまな XPath 式で得られます

  • (/root/foo | /root/bar)[1] -> こんにちは

  • (/root/foo | /root/bar)[last()] -> 世界

  • (substring(/root/foo, 2, 4) | /root/bar)[1]-> こんにちは

  • (substring(/root/foo, 2, 4) | /root/bar)[last()]-> 世界

ここまでは直感的な結果ですが...

  • (/root/foo | substring(/root/bar, 2, 4))[1]-> orld (こんにちは)

  • (/root/foo | substring(/root/bar, 2, 4))[last()]->こんにちは(予想される orld)

提示された結果には理由がありますか?これらは XPath 2.0 仕様に準拠していますか?

4

2 に答える 2

3

TIBCO BusinessWorks は、XPath 1.0 のみに準拠しています。一部の XPath 2.0 関数がサポートされています。(出典: http://support.tibco.comの FAQ1-7BXZE5 )

2 つの質問に答えるには:

  • 「提示された結果には理由がありますか?」

はい。XPath 1.0 のユニオンの結果は予測できません。良いルール: たとえ単純なケースであっても、BusinessWorks では Union の順序に依存すべきではありません。

  • 「これらは XPath 2.0 仕様に準拠していますか?」

結果は XPath 2.0 仕様に準拠していませんが、クエリは XPath 1.0 エンジンで評価されます。

于 2013-03-07T12:49:42.290 に答える
1

いいえ、最後の 2 つの結果は仕様に準拠していません。ユニオン演算子のオペランドがノードではなく文字列である場合は、型エラーです。これは、最後の 2 つの例の場合です。

于 2013-02-28T16:46:22.240 に答える