2010-08-07 39 views
5

這是學校,如果你知道你的XPath和不介意告訴我,如果我是正確的:我對這些XPath表達式的含義是否正確?

1. //a[/b]/a

每一個「A」有一個「A」父樹是'b'的根。 (該[/b]的位置是無關緊要的,即在上述相當於//a/a[/b]

2. //*[//a]//a[/a][a]

它分解從左至右:? //*[//a]指具有後代「A」, 所有元素因此//*[//a]//a意味着所有'a'元素 和//*[//a]//a[/a]意味着樹中所有'a'元素的根是'a', 和最後 - //*[//a]//a[/a][a]意味着樹中的所有'a'元素,根「a」有一個孩子'a'。

感謝您的任何幫助,似乎無法在任何地方得到直接的答案。

+2

終於出現一個實際顯示該人問的作業問題,並對其做了一些工作。 +1。 – Femaref 2010-08-07 15:55:53

+0

你基本上是正確的。關於#2,'// * [// a]'不會選擇所有具有後代'a'的元素,如果文檔中包含'a',則選擇所有元素。爲了選擇具有後代「a」的所有元素,您需要使謂詞過濾器相對於匹配的元素:'//* [.// a]' – 2010-08-07 16:30:47

+0

好吧,所以任何謂詞的位置form [// a],[/ a]是不相關的? 平原[a]怎麼樣,這個問題的立場呢? 謝謝! (堆棧溢出嚴重是一種現象) – bloodcell 2010-08-07 17:27:22

回答

1

什麼課程可以讓您對奧術XPath查詢進行測驗?哇。

  1. //a[/b]/a
    是的,你有這個權利。 [/b]的位置是不相關的。

  2. //*[//a]//a[/a][a]
    技術上//*[//a]//a相當於//*//a這意味着所有的「A」元素,其具有一個祖先元素。所以如果根元素是'a',它不會匹配。除此之外,是的,你的分析是正確的。

幾年前,我爲自己的項目在JavaScript中從頭開始實現了一個完整的XPath解析器。所以我真的希望我的回答是對的!

+0

謝謝(我在上面寫了一條評論)。 這是一個關於搜索引擎的愚蠢類,他們在太淺的層次上覆蓋太多:) – bloodcell 2010-08-07 17:33:55