一,簡介:XPath 使用路徑表達式來選取 XML 文檔中的節點或者節點集,這些路徑表達式和我們在常規的電腦文件系統中看到的表達式非常相似。XPath 使用路徑表達式在 XML 文檔中進行導航 ;XPath 包含一個標準函數庫 ;XPath 是 XSLT 中的主要元素 。
二,XPath 術語
節點(Node):在 XPath 中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。XML 文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。
基本值(或稱原子值,Atomic value):基本值是無父或無子的節點。
項目(Item):項目是基本值或者節點。
節點關系
父(Parent):每個元素以及屬性都有一個父,
子(Children):元素節點可有零個、一個或多個子,
同胞(Sibling):擁有相同的父的節點
先輩(Ancestor):某節點的父、父的父,等等,
后代(Descendant):某個節點的子,子的子,等等;
三,XPath 語法
XPath 使用路徑表達式來選取 XML 文檔中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的,
nodename 選取此節點的所有子節點,
/ 從根節點選取 ,
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置 ,
. 選取當前節點 ,
.. 選取當前節點的父節點 ,
@ 選取屬性 ,
謂語(Predicates):謂語用來查找某個特定的節點或者包含某個指定的值的節點。謂語被嵌在方括號中。函數或者表達式;
選取未知節點:XPath 通配符可用來選取未知的 XML 元素。
* 匹配任何元素節點
@* 匹配任何屬性節點
node() 匹配任何類型的節點
選取若干路徑:通過在路徑表達式中使用“|”運算符,您可以選取若干個路徑。
四,XPath Axes(坐標軸):軸可定義某個相對于當前節點的節點集。
ancestor 選取當前節點的所有先輩(父、祖父等)
ancestor-or-self 選取當前節點的所有先輩(父、祖父等)以及當前節點本身
attribute 選取當前節點的所有屬性
child 選取當前節點的所有子元素。
descendant 選取當前節點的所有后代元素(子、孫等)。
descendant-or-self 選取當前節點的所有后代元素(子、孫等)以及當前節點本身。
following 選取文檔中當前節點的結束標簽之后的所有節點。
namespace 選取當前節點的所有命名空間節點
parent 選取當前節點的父節點。
preceding 選取文檔中當前節點的開始標簽之前的所有節點。
preceding-sibling 選取當前節點之前的所有同級節點。
self 選取當前節點。
步的語法: 軸名稱::節點測試[謂語]
五,XPath 運算符:XPath 表達式可返回節點集、字符串、邏輯值以及數字。
加(+),減(-),乘(*),除(div),等于(=),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=),與(and),或(or),余(mod),