2014-04-01 68 views
0

我真的沒有在互聯網上找到這些類型的XPath的很多例子,以及這種類型的XPath功能的實際「名稱」。有人能爲我澄清一些W3C或其他標準的在線資源來定義這些資源嗎?這些XPath功能名稱?和CSS選擇器比較

(//someXPathThatReturnsMultipleMatches)[n] 

它返回集合

//div[span[a[@title='foo']]] 

我們匹配&回報股利(而不是超鏈接),它包含一個跨度中又包含一個超鏈接與「富的標題的第n個比賽「

更新:我想有沒有具體的名稱,這些XPath的例子呢?目前的答案都很好,希望我可以同時接受他們。但首先對問題進行了更新:

提出這個問題的基礎也是一種輕鬆通知用戶一些額外類型的XPath查詢無法在CSS中完成的方法,除了更簡單的訪問父/祖先和前面的兄弟姐妹和文本包含()(這只是一個僞選擇器不是CSS3的一部分),CSS不可用。因爲對那些不太熟悉XPath的人,只知道CSS的基礎知識,他們認爲你可以用CSS做大部分的XPath,而事實上並非如此(對於複雜/獨特的情況)。所以我想知道,實質上,如何有效地總結CSS中不能做什麼,以及如何使用XPath,其中包括我首先提到的例子以及人們會聽到的更簡單的例子?

回答

1

XPath遍歷任何文檔軸步驟

/these/are/all/axis/steps 

還有一堆多種軸步驟,你可以看一下在幾乎每一個:對於單純的孩子步驟,總是選擇當前上下文的直接子節點與軸步驟的名稱的例子教程,他們對這個問題並不重要。

在每一步之後,您可以使用謂詞來進一步限制結果集。謂詞篩選結果。最終,它歸結爲2種謂詞:

  • 數值謂詞返回當前步驟的第n個結果。

    您的第一個示例查詢(給定n被替換爲數字)就是此類別的一個示例。正如@choroba指出的那樣,它們實際上只是形式爲position()=n的(布爾)位置謂詞的縮寫。

  • 布爾謂詞返回表達式計算結果爲true的所有結果。如果結果不是布爾值(例如作爲函數的結果),則非空集合將被評估爲true,空集合將被設置爲false。 I explained the mechanics behind this in detail in another answer.

    你的第二個查詢就是這個類別的一個例子。它選擇<div/>元素,其中包含一個(包含(錨點標記,那些標題屬性爲「foo」))的跨度。 (閱讀括號,就像您在數學做,我說他們澄清優先。)

+0

數值謂詞只是縮寫形式'位置()= NUM​​'的布爾謂詞。 – choroba