XPath Axes(轴)
-
定义和使用
在下面的示例中,我们将使用以下 XML 文档。<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="en">中国历史手册</title> <price>30.00</price> </book> <book> <title lang="en">学习 XML</title> <price>39.99</price> </book> </bookstore>
轴定义相对于当前节点的节点集。轴名 描述 ancestor 选择当前节点的所有祖先(父,祖父母等) ancestor-or-self 选择当前节点的所有祖先(父,祖父母等)和当前节点本身 attribute 选择当前节点的所有属性 child 选择当前节点的所有子节点 descendant 选择当前节点的所有后代(子代,孙代等) descendant-or-self 选择当前节点的所有后代(子代,孙代等)和当前节点本身 following 在当前节点的结束标记之后选择文档中的所有内容 following-sibling 选择当前节点之后的所有同级 namespace 选择当前节点的所有名称空间节点 parent 选择当前节点的父节点 preceding 选择出现在文档中当前节点之前的所有节点,但祖先,属性节点和名称空间节点除外 preceding-sibling 选择当前节点之前的所有同级 self 选择当前节点 -
位置路径表达
位置路径可以是绝对路径,也可以是相对路径。绝对位置路径以斜杠(/)开头,而相对位置路径则不是。 在这两种情况下,位置路径都包含一个或多个步骤,每个步骤之间都用斜杠分隔:绝对位置路径: /step/step/... 相对位置路径: step/step/...
针对当前节点集中的节点评估每个步骤。步骤包括:- 轴(定义所选节点和当前节点之间的树关系)
- 节点测试(标识轴内的节点)
- 零个或多个谓词(以进一步优化所选节点集)
定位步骤的语法为: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 选择当前节点的所有价格子孙