XPath 轴
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轴
轴表示与上下文(当前)节点的关系,用于在树上定位相对于该节点的节点。
轴名称 | 结果 |
---|---|
ancestor | 选择当前节点的所有祖先(父、祖父母等) |
ancestor-or-self | 选择当前节点和当前节点本身的所有祖先(父、祖父母等) |
attribute | 选择当前节点的所有属性 |
child | 选择当前节点的所有子节点 |
descendant | 选择当前节点的所有子代(子代、孙代等) |
descendant-or-self | 选择当前节点和当前节点本身的所有子代(子代、子代等) |
following | 选择文档中当前节点结束标记之后的所有内容 |
following-sibling | 选择当前节点之后的所有同级节点 |
namespace | 选择当前节点的所有命名空间节点 |
parent | 选择当前节点的父节点 |
preceding | 选择文档中当前节点之前出现的所有节点,但祖先、属性节点和命名空间节点除外 |
preceding-sibling | 选择当前节点之前的所有同级节点 |
self | 选择当前节点 |
位置路径表达式
位置路径可以是绝对路径,也可以是相对路径。
绝对位置路径以斜杠(/)开头,相对位置路径不以斜杠(/)开头。在这两种情况下,位置路径都由一个或多个步骤组成,每个步骤用斜线分隔:
An absolute location path:
/step/step/...
A relative location path:
step/step/...
将根据当前节点集中的节点对每个步骤进行求值。
步骤包括:
- 轴(定义选定节点和当前节点之间的树关系)
- 节点测试(标识轴内的节点)
- 零个或多个谓词(以进一步细化选定的节点集)
The syntax for a location step is:
axisname::nodetest[predicate]
实例
实例 | 结果 |
---|---|
child::book | 选择作为当前节点子节点的所有书本节点 |
attribute::lang | 选择当前节点的lang属性 |
child::* | 选择当前节点的所有元素子级 |
attribute::* | 选择当前节点的所有属性 |
child::text() | 选择当前节点的所有文本节点子节点 |
child::node() | 选择当前节点的所有子节点 |
descendant::book | 选择当前节点的所有账簿子体 |
ancestor::book | 选择当前节点的所有图书祖先 |
ancestor-or-self::book | 选择当前节点的所有书本祖先-如果当前节点是书本节点,则也选择它 |
child::*/child::price | 选择当前节点的所有子节点 |