XPath語法規則及實例


XPath語法規則及實例

XPath語法規則

一、XPath術語:

1.節點:在XPath中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。

XML文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。

實例

1:XML文檔:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<bookstore> 

<book> 

<title lang="en">Harry Potter</title> 

<author>J K. Rowling</author> 

<year>2005</year> 

<price>29.99</price> 

</book> 

</bookstore> 

上面的XML文檔中的節點例子:<bookstore>(文檔節點),<author>J K. Rowling</author>(元素節點),lang="en"(屬性節點)。

2.基本值(或稱原子值,Atomic value)

基本值是無父或無子的節點。基本值的例子:在實例1的xml文檔中J K. Rowling、"en" 

3.項目(Item)項目是基本值或者節點。

4.節點的關系:

1)父節點(Parent):每個元素以及屬性都有一個父。在上面實例1的xml 文檔中,book 元素是 title、author、year 以及price 元素的父節點。

2)子節點(Children):元素節點可有零個、一個或多個子。在上面實例1的xml 文檔中,title、author、year 以及price 元素都是book 元素的子。

3)同胞(Sibling):擁有相同的父的節點,在上面實例1的xml 文檔中,title、author、year 以及price 元素都是同胞。

4)先輩(Ancestor)某節點的父、父的父,等等。在實例1的xml 文檔中,title 元素的先輩是book 元素和bookstore 元素。

5)后代(Descendant)某個節點的子,子的子,等等。在實例1的xml 文檔中,bookstore 的后代是book、title、author、year 以及price 元素。

二、XPath語法:

XPath 使用路徑表達式來選取XML 文檔中的節點或節點集。節點是通過沿着路徑(path) 或者步(steps) 來選取的。我們將在下面的例子中使用這個XML 文檔:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<bookstore> 

<book> 

<title lang="eng">Harry Potter</title> 

<price>29.99</price> 

<title lang="eng">Learning XML</title> 

<price>39.95</price> 

</book> 

</bookstore> 

1.選取節點XPath 使用路徑表達式在XML 文檔中選取節點。節點是通過沿着路徑或者step 來選取的。下面列出了最有用的路徑表達式:

 表達式描述nodename 選取此節點的所有子節點。

實例:在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:

 2.謂語(Predicates)

 謂語用來查找某個特定的節點或者包含某個指定的值的節點,謂語被嵌在方括號中。

 實例:在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:

3.選取未知節點XPath

 通配符可用來選取未知的 XML 元素。

實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:

 4.選取若干路徑

 通過在路徑表達式中使用“|”運算符,您可以選取若干個路徑。

 實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:

 XPath語法規則及實例

三、XPath Axes(坐標軸)

我們將在下面的例子中使用此XML 文檔:

1.XPath 軸

軸可定義相對於當前節點的節點集。

2.位置路徑表達式

 位置路徑可以是絕對的,也可以是相對的。絕對路徑起始於正斜杠( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:

 絕對位置路徑:/step/step/... 

 相對位置路徑:step/step/... 

 每個步均根據當前節點集之中的節點來進行計算。

3.步(step)包括:

軸(axis):定義所選節點與當前節點之間的樹關系。

節點測試(node-test):識別某個軸內部的節點。

零個或者更多謂語(predicate):更深入地提煉所選的節點集。

步的語法:軸名稱::節點測試[謂語]。

實例:

4.常用函數:

last()  節點數組的最后一個

position() 下標索引,從1開始

text()    節點的文本內容

contains(@attr, 'value')     模糊匹配

starts-with(@attr, 'value')  是否以指定字符開頭

count(@attr)      匹配次數

string-length()       返回字符串的字符數,你應該用&lt;替代<, 用&gt;代替> 

normalize-space()    函數刪除了前部和尾部的空格, 並且把連續的空格串替換為一個單一的空格

四、XPath 運算符:

五、XPath 實例

實例一

 

 

 

 

 

文章來源於:https://wenku.baidu.com/view/64d6c115f18583d0496459e0.html

 
 
 
 
 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM