二.Xpath的語法
1,以“/”開頭的XPath表達式爲絕對路徑,從文檔節點開始;否則爲相對路徑表達式,從當前結點開始。
2,可以使用“//”表示當前節點下的所有元素;若以“//”開頭,則表示文檔中所有的元素 EX.“//section”表示文檔中所有的section元素
3,滿足一個XPath路徑表達式的節點可能有多個。
位置路徑表達式分爲先對位置路徑表達式和絕對位置路徑表達式,絕對位置路徑表達式以“/”開頭,後跟相對位置路徑表達式或是簡寫的絕對位置路徑表達式;相對位置路徑表達式由多個步進(step)構成EX.step1/step2/step3
每個step由三個部分組成,軸標識符+節點測試+零個或多個判定謂詞
(1)關係軸標識符
共有13種,每一種關係軸表示從當前節點出發向某個方向進行查找。
ancestor:XML文檔樹中,查找從文檔節點到當前節點所經過的路徑上的所有節點,不包括當前節點。
ancestor-or-self:表示ancestor關係軸查找結果,加上當前節點。
descendant:表示以當前節點爲根的子樹中所有節點,不包括當前節點。
descendant-or-self:表示descendant關係軸查找結果,加上當前節點。
child:表示查找當前節點所有的子節點。
parent:表四查找當前節點的父節點。
following:表示查找當前節點之後的節點,換句話說,這些節點的開始標記和結束標記都在當前節點結束標記之後。
preceding:表示查找當前節點之前的節點,換句話說,這些節點的開始標記和結束標記都在當前節點開始標記之前。
following-sibling:表示查找當前節點後的兄弟節點。
preceding-sibling:表示查找當前節點前的兄弟節點。
self:查找當前節點本身。
namespace:查找當前節點命名空間。
attribute:查找當前節點的屬性。
使用關係軸時應在關係軸名稱後面加上“::”。
(2)節點測試
節點測試NodeTest可以是名稱測試或者類型測試。
名稱測試表示根據指定的名稱對當前節點進行測試,類型測試則允許根據節點的類型以及在Schema中定義的數據類型進行測試(僅適用於元素和屬性節點)。
可使用通配符“*”,可以匹配所有的元素節點 EX./library/book/* 表示book中所有的子元素節點,不管節點的具體名稱是什麼。
(3)判定謂詞
判定謂詞使用方括號[…]的形式進行表示,用於對指定關係軸的,滿足節點測試的所有節點,使用判定謂詞中規定的條件進行篩選。如果判定謂詞部分爲一個整數i,表述選擇序列中的第i個元素。