「単語」ノードを含む「こんにちは」ノードを持つ XML ファイルがあります。
<doc>
<hello>
<word>Hello</word><word>World</word><word>!</word>
</hello>
<hello>
<word>Hello</word><word>!</word><word>World</word>
</hello>
<hello>
<word>Hello</word><word>World</word><word>!</word><word>blorf</word>
</hello>
<hello>
<word>Hello</word><word>Wo</word><word>rld!</word>
</hello>
</doc>
最初の だけを一致させたいhello
。2 番目のものは順序が間違っており、3 番目のものは余分な単語があります。4 番目のテキストは正しいですが、単語の分割が正しくありません。
このクエリは XPath 1.0 で機能しますが、非常に冗長です。もっと簡単な方法はありますか?
//hello[count(word) = 3 and word[1] = "Hello" and word[2] = "World" and word[3] = "!"]
これは XPath 2.0 で機能します。XPath 1.0 で同等の処理を行う方法はありますか?
//hello[deep-equal(data(subsequence(word,1)),('Hello','World','!'))]