XPath使用路徑表達式在XML文檔中選擇節點或節點集。 該節點通過以下的路徑或步驟選擇。
XML實例文檔
我們將使用下面的XML文檔在下面的例子。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
選擇節點
XPath使用路徑表達式在XML文檔中選擇節點。 該節點通過以下的路徑或步驟選擇。 最有用的路徑表達式如下:
表達 | 描述 |
---|---|
nodename | 選擇所有節點名稱為“ nodename ” |
/ | 從根節點選擇 |
// | 從選擇符合選擇當前節點的文檔中的節點,無論他們在哪裡 |
. | 選擇當前節點 |
.. | 選擇當前節點的父節點 |
@ | 選擇屬性 |
在下面的表格中我們列出了一些路徑表達式以及表達式的結果:
路徑表達式 | 結果 |
---|---|
書店 | 選擇所有節點名為"bookstore" |
/書店 | 選擇的根元素書店 Note:如果路徑以斜線開始( / )它一定是到該元素的絕對路徑! |
書店/書 | 選擇所有book元素是書店的兒童 |
//書 | 選擇所有book元素,無論他們在哪裡文檔中 |
書店//書 | 選擇所有book元素是後代的書店元素,也不管他們在哪裡書店元素 |
// @郎 | 選擇被命名為郎所有屬性 |
謂詞
謂詞用於查找特定的節點或包含特定值的節點。
謂語被嵌入在中括號。
在下表中,我們列出了一些謂詞的路徑表達式以及表達式的結果:
路徑表達式 | 結果 |
---|---|
/書店/書[1] | 選擇第一個book元素是書店元素的孩子。 Note:在IE 5,6,7,8,9第一節點是[0],但根據W3C,它是[1]。 為了解決IE這個問題,設置SelectionLanguage與XPath: In JavaScript: xml 。 setProperty("SelectionLanguage","XPath") ; |
/書店/書[ last() ] | 選擇最後一個book元素是書店元素的子 |
/書店/書[ last() -1] | 選擇倒數第二個book元素是書店元素的子 |
/書店/書[ position() <3] | 選擇前兩個book元素是書店元素的子 |
//標題[@lang] | 選擇具有名為郎屬性的所有title元素 |
//標題[@郎='EN'] | 選擇具有與值的“lang”屬性的所有title元素"en" |
/bookstore/book[price>35.00] | 選擇具有價格元素與值bookstore元素的所有book元素大於35.00 |
/bookstore/book[price>35.00]/title | 選擇具有價格元素與值bookstore元素的book元素的所有title元素大於35.00 |
選擇未知節點
XPath的通配符可以用來選擇未知的XML節點。
通配符 | 描述 |
---|---|
* | 匹配任何元素節點 |
@* | 匹配任何屬性節點 |
node() | 匹配任何類型的節點 |
在下面的表格中我們列出了一些路徑表達式以及表達式的結果:
路徑表達式 | 結果 |
---|---|
/書店/* | 選擇所有bookstore元素的子元素節點 |
// * | 選擇文檔中的所有元素 |
//標題[@*] | 選擇其中有什麼樣的至少一個屬性的所有title元素 |
選取多個路徑
通過使用| 在XPath表達式可以選擇多個路徑。
在下面的表格中我們列出了一些路徑表達式以及表達式的結果:
路徑表達式 | 結果 |
---|---|
//書/標題| //書/價格 | 選擇所有book元素的所有title和price元素 |
//標題| //價錢 | 選擇文檔中的所有title和price元素 |
/書店/書/標題| //價錢 | 選擇bookstore元素的book元素和文檔中的所有title元素的所有要素價格 |