XPath Axes(軸)
XML 實(shí)例文檔
我們將在下面的例子中使用此 XML 文檔:
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore>
XPath 軸
軸可定義相對于當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)集。
軸名稱 | 結(jié)果 |
---|---|
ancestor | 選取當(dāng)前節(jié)點(diǎn)的所有先輩(父、祖父等)。 |
ancestor-or-self | 選取當(dāng)前節(jié)點(diǎn)的所有先輩(父、祖父等)以及當(dāng)前節(jié)點(diǎn)本身。 |
attribute | 選取當(dāng)前節(jié)點(diǎn)的所有屬性。 |
child | 選取當(dāng)前節(jié)點(diǎn)的所有子元素。 |
descendant | 選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子、孫等)。 |
descendant-or-self | 選取當(dāng)前節(jié)點(diǎn)的所有后代元素(子、孫等)以及當(dāng)前節(jié)點(diǎn)本身。 |
following | 選取文檔中當(dāng)前節(jié)點(diǎn)的結(jié)束標(biāo)簽之后的所有節(jié)點(diǎn)。 |
namespace | 選取當(dāng)前節(jié)點(diǎn)的所有命名空間節(jié)點(diǎn)。 |
parent | 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。 |
preceding | 選取文檔中當(dāng)前節(jié)點(diǎn)的開始標(biāo)簽之前的所有節(jié)點(diǎn)。 |
preceding-sibling | 選取當(dāng)前節(jié)點(diǎn)之前的所有同級節(jié)點(diǎn)。 |
self | 選取當(dāng)前節(jié)點(diǎn)。 |
位置路徑表達(dá)式
位置路徑可以是絕對的,也可以是相對的。
絕對路徑起始于正斜杠( / ),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:
絕對位置路徑:
/step/step/...
相對位置路徑:
step/step/...
每個步均根據(jù)當(dāng)前節(jié)點(diǎn)集之中的節(jié)點(diǎn)來進(jìn)行計(jì)算。
步(step)包括:
- 軸(axis)
- 定義所選節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)之間的樹關(guān)系
- 節(jié)點(diǎn)測試(node-test)
- 識別某個軸內(nèi)部的節(jié)點(diǎn)
- 零個或者更多謂語(predicate)
- 更深入地提煉所選的節(jié)點(diǎn)集
步的語法:
軸名稱::節(jié)點(diǎn)測試[謂語]
實(shí)例
例子 | 結(jié)果 |
---|---|
child::book | 選取所有屬于當(dāng)前節(jié)點(diǎn)的子元素的 book 節(jié)點(diǎn)。 |
attribute::lang | 選取當(dāng)前節(jié)點(diǎn)的 lang 屬性。 |
child::* | 選取當(dāng)前節(jié)點(diǎn)的所有子元素。 |
attribute::* | 選取當(dāng)前節(jié)點(diǎn)的所有屬性。 |
child::text() | 選取當(dāng)前節(jié)點(diǎn)的所有文本子節(jié)點(diǎn)。 |
child::node() | 選取當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)。 |
descendant::book | 選取當(dāng)前節(jié)點(diǎn)的所有 book 后代。 |
ancestor::book | 選擇當(dāng)前節(jié)點(diǎn)的所有 book 先輩。 |
ancestor-or-self::book | 選取當(dāng)前節(jié)點(diǎn)的所有 book 先輩以及當(dāng)前節(jié)點(diǎn)(如果此節(jié)點(diǎn)是 book 節(jié)點(diǎn)) |
child::*/child::price | 選取當(dāng)前節(jié)點(diǎn)的所有 price 孫節(jié)點(diǎn)。 |