私はこのXMLを与えられ、式が返されますどのように多くの要素を示すように頼まれた:データベースXPathクエリ
<a>
<a>
<a>1</a>
<a>2</a>
</a>
<a>
<a>3</a>
<a>4</a>
</a>
</a>
XPathクエリは、次のとおりです。
i) //a[a/text()=3]/a
ii) //a[a/a/text()=3]/a/a
iii) //a[a/text()=2][a/text()=3]
そして、与えられた答えは私です)2、 ii)4、iii)0
しかし、私はそれを理解しようとすると何か問題がありました。私にとっては、
私は最初に述語をチェックします。 // aは子孫またはselfを意味するので、// a/a/3をチェックしています。私はパスに記載されているので、
<a>
<a>
<a>3</a>
<a>4</a>
</a>
</a>
だから述語は真です。次に、私はこのブロックとしてme 2を返すXPathクエリを実行します。
<a>
<a>3</a>
<a>4</a>
</a>
には2つの内部が含まれています。次にii)については、まず述語// a/a/a/3をチェックします。これは上記と同じです。述語はtrueを返すので、// a/a/aのようなXPathクエリを実行します。私はこれを探していますので、しかし、それは1として返すべきではない:
<a>
<a>
<a>1</a>
</a>
</a>
私はそれをトレースする方法については本当に混乱していますと、私は答えが間違っていると私の考え方が間違っているかなり確信しています。簡単なやり方はありますか、それとももっと良い例がありますか?
ありがとうございます!
感謝を返します!しかし、最後の質問については素早くチェックするので、// aは7個の要素を返します。次に、最初の述語は基本的にテキストノードが2に等しいものを見つけます。この場合は、の親が残っています。その後、私は3を見つける別の述語を実行しますが、私は親2だけ残っているので、3は別の親にあるので、私は何も見つけられず、したがって0を返しますか?私は正しい方向にいるのだろうか? –
@Whoamそこに行くよ!それが最後のXPathの仕組みです。おめでとう! – har07