<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
<book type=”paperback”>
<title>A Burnt-Out Case</title>
<author>Graham Greene</author>
<isbn>0140185399</isbn>
</book>
</books>
每個結點可以是以下七個類型之一:根(root)、元素(element)、屬性(attribute)、本文(text)、命名空間(namespace)、處理指示(processing instruction)和注釋(comment)
所有的book元素://books/book
雙正斜杠(//)表示返回XML文檔中的所有符合尋找準則的元素,而忽略文檔中元素的位置層級。
所有的ISBN元素:/books/book/isbn
返回如下的元素:
<books>
<book type=”hardback”>
<isbn>0525934189</isbn>
</book>
<book type=”paperback”>
<isbn>0140185399</isbn>
</book>
</books>
所有標題為Atlas Shrugged的book元素:/books/book[title=”Atlas Shrugged”]
/books/book[author]
方括弧符號讓你使用屬性作為尋找準則
所有type屬性值為hardback的書://book[@type=”hardback”]
返回下面的元素:
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
方括弧符號在XPath文檔中稱為謂詞,方括弧的另外一個用途是標識需要檢索的項數。
返回第一個book元素:/books/book[1]
<book type=”hardback”>
<title>Atlas Shrugged</title>
<author>Ayn Rand</author>
<isbn>0525934189</isbn>
</book>
用萬用字元(*)可以很容易的檢索到在根結點下的所有元素。
所有的book元素:/books/*
所有屬性type值為hardcover或softcover的book元素://books/book[@type=”hardcover”] | //books/book[@type=”softcover”]
符號(|)與邏輯OR操作符相同。
語句的第一個字元決定參考點,以正斜杠(/)開始的語句被看作查詢時將使用絕對路徑。
使用相對路徑的例子:
在當前的參考點下開始尋找
book/*
單個圓點表示選擇當前結點,雙圓點表示選擇父結點。
當前結點的父結點的所有子結點:
../*
==============================================================================================================
<A id="a1">
<B id="b1">
<C id="c1">
<B name="b"/>
<D id="d1"/>
<E id="e1"/>
<E id="e2"/>
</C>
</B>
<B id="b2"/>
<C id="c2">
<B/>
<D id="d2"/>
<F/>
</C>
<E/>
</A>
/A/B/C[1] A元素→B元素→C元素的第一個子項目 name值為b的B元素
/A/B/C[last()] A元素→B元素→C元素的最後一個子項目 id值為e2的E元素
/A/B/C[position()>1] A元素→B元素→C元素之下的位置號大於1的元素 id值為d1的D元素和兩個具有id值的E元素
//B[@id] 所有具有屬性id的B元素 id值為b1和b2的兩個B元素
//B[@*] 所有具有屬性的B元素 兩個具有id屬性的B元素和一個具有name屬性B元素
//B[not(@*)] 所有不具有屬性的B元素 A元素→C元素下的B元素
//B[@id="b1"] id值為b1的B元素 A元素下的B元素
//E/parent::* 所有E節點的父節點元素 id值為a1的A元素和id值為c1的C元素
//F/ancestor::* 所有F元素的祖先節點元素 id值為a1的A元素和id值為c2的C元素
/A/child::* A的子項目 id值為b1、b2的B元素,id值為c2的C元素,以及沒有任何屬性的E元素
/A/descendant::* A的所有後代元素 除A元素以外的所有其它元素
//F/self::* 所有F的自身元素 F元素本身
//F/ancestor-or-self::* 所有F元素及它的祖先節點元素 F元素、F元素的父節點C元素和A元素
/A/C/descendant-or-self::* 所有A元素→C元素及它們的後代元素 id值為c2的C元素、該元素的子項目B、D、F元素
/A/C/following-sibling::* A元素→C元素的緊鄰的後序所有兄弟節點元素 沒有任何屬性的E元素
/A/C/preceding-sibling::* A元素→C元素的緊鄰的前面所有兄弟節點元素 id值為b1和b2的兩個B元素
/A/B/C/following::* A元素→B元素→C元素的後序的所有元素 id為b2的B元素、無屬性的C元素、無屬性的B元素、id為d2的D元素、無屬性的F元素、無屬性的E元素。
/A/C/preceding::* A元素→C元素的前面的所有元素 id為b2的B元素、id為e2的E元素、id為e1的E元素、id為d1的D元素、name為b的B元素、id為c1的C元素、id為b1的B元素