XPath 軸
XML 示例文件
我們將在下面的示例中使用以下 XML 文件。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">哈利波特</title>
<price>29.99</price>
</book>
<book>
<title lang="en">學習 XML</title>
<price>39.95</price>
</book>
</bookstore>
XPath 軸
軸表示與上下文(當前)節點的關係,並用於在樹中相對於該節點定位節點。
AxisName | 結果 |
---|---|
ancestor | 選擇當前節點的所有祖先(父節點、祖父節點等) |
ancestor-or-self | 選擇當前節點的所有祖先(父節點、祖父節點等)以及當前節點本身 |
屬性 | 選擇當前節點的所有屬性 |
child | 選擇當前節點的所有子節點 |
descendant | 選擇當前節點的所有後代(子節點、孫子節點等) |
descendant-or-self | 選擇當前節點的所有後代(子節點、孫子節點等)以及當前節點本身 |
following | 選擇當前節點結束標籤之後文件中的所有內容 |
following-sibling | 選擇當前節點之後的所有同級節點 |
namespace | 選擇當前節點的所有名稱空間節點 |
parent | 選擇當前節點的父節點 |
preceding | 選擇文件中出現在當前節點之前的所有節點,不包括祖先、屬性節點和名稱空間節點 |
preceding-sibling | 選擇當前節點之前的所有同級節點 |
self | 選擇當前節點 |
Location Path Expression
位置路徑可以是絕對的,也可以是相對的。
絕對位置路徑以斜槓 (/) 開始,相對位置路徑則不以斜槓開始。在這兩種情況下,位置路徑都包含一個或多個由斜槓分隔的步(step)。
絕對位置路徑
/step/step/...
相對位置路徑
step/step/...
每個步都針對當前節點集中的節點進行評估。
一個步由以下部分組成:
- 軸(axis)(定義所選節點與當前節點之間的樹形關係)
- 節點測試(node-test)(標識軸內的節點)
- 零個或多個謂詞(predicate)(用於進一步細化所選節點集)
位置步的語法是:
axisname::nodetest[predicate]
示例
示例 | 結果 |
---|---|
child::book | 選擇當前節點的所有 book 子節點 |
attribute::lang | 選擇當前節點的 lang 屬性 |
child::* | 選擇當前節點的所有元素子節點 |
attribute::* | 選擇當前節點的所有屬性 |
child::text() | 選擇當前節點的所有文字節點子節點 |
child::node() | 選擇當前節點的所有子節點 |
descendant::book | 選擇當前節點的所有 book 後代節點 |
ancestor::book | 選擇當前節點的所有 book 祖先節點 |
ancestor-or-self::book | 選擇當前節點的所有 book 祖先節點 - 如果當前節點本身是一個 book 節點,則也包括當前節點。 |
child::*/child::price | 選擇當前節點的所有 price 孫子節點 |