是對xml文檔層次結構中的相關元素節點及內容進行檢索,定位的語言。
一.XPath中的數據模型
1.序列
在XPath中,每個表達式的結果值都是由0個或者多個項組成的一個序列。
序列是一個遞歸的概念:
序列是由0個或多個項(item)組成的集合,並且是有序的集合。
項本身也可以是一個序列,或者是原子值或節點。
//原子值表示基本數據類型(XML schema中定義的十幾種內置基本數據類型:整數,字符串…)
//節點位XML文檔中的元素節點:ex. <a>12</a>,<stu></stu>….
//一個原子值或一個節點可以表示一個特殊的,長度爲1的序列
序列是一個有序的集合,並且序列中的每個項都具有一個對應的位置參數(position),序列的第一個項的位置爲1.
EX:count($S)可用來計算序列S中項的個數(序列長度),$S[i]可訪問S中的第i項,position()函數確定當前項目在序列中所處的位置。
序列計算表達式,以實現序列的構造,篩選以及序列項(Sequeue Item)的組合.
(1)序列構造表達式:序列是由()包含的一個列表,每個項用“,”進行分隔。
*節點集是無序的,所以不能包含取值相同的項;序列是有序的,所以能夠包含相同的項,位置不同可以相互區分;項可以是一個原子值也可以是節點。
*序列不允許嵌套
*序列構造表達式可以使用範圍操作符“to” EX.(10,1 to 4) 等於 (10,1,2,3,4)
(2)序列篩選表達式
*可以使用判斷謂詞對序列進行篩選 EX.(1 to 100)[.mod 5 eq 0] 得到1~100中能被5整除的數
判斷謂詞表示篩選出滿足指定條件的序列項
(3)序列組合表達式:使用序列操作符union(並),intersect(交),except(差),所有這些運算,將從結果序列中刪除重複的值
2.XPath文檔樹模型
XML文檔作爲一棵邏輯上的文檔樹進行處理,以便通過路徑對其中的節點進行尋址。
七種類型的節點:
文檔節點(Document node)
元素節點(Element node)
屬性節點(Attribute Nodes)
文本節點(Text Nodes)
命名空間節點(Namespace Nodes)
處理指令節點(PI Nodes)
註釋節點(Attribute Nodes)
文檔節點對於整個XML文檔,是根節點的父節點,是一個無形的節點
更節電是一個特殊的元素節點,包含整個文檔樹的其他節點
文檔模型樹本身有序,XPath處理過程中按照從上到下從左到右的方式依此遍歷整個文檔樹。
(1)節點的名稱(node name)
node-name()函數可返回指定節點名稱
文檔節點,註釋節點,文本節點沒有名稱
(2)節點的字符串值(String Value)
實際上是針對該節點使用XPath的string()函數所得到的字符串結果
(3)節點的標識(Node Identity)
is操作符比較兩個節點是否爲同一節點
等值的比較只能判斷兩個節點的內容、結構是否相等