XPath 轴(Axes)

创建于 2024-12-03 / 29
字体: [默认] [大] [更大]

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 选择当前节点的所有子节点


0 人点赞过