最新的Web开发教程
 

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轴

的轴定义节点集合相对于当前节点的。

AXISNAME 结果
祖先 选择所有祖先(parent, grandparent, etc.)当前节点的
祖先或自身 选择所有祖先(parent, grandparent, etc.)当前节点的与当前节点本身
属性 选择当前节点的所有属性
儿童 选择当前节点的所有子
后裔 选择所有后代(children, grandchildren, etc.)当前节点的
后代或自身 选择所有后代(children, grandchildren, etc.)当前节点和当前节点本身
以下 当前节点的结束标记之后选择文档中的一切
以下同胞 选择所有的兄弟姐妹当前节点之后
命名空间 选择当前节点的所有命名空间节点
选择当前节点的父节点
选择该文件在当前节点之前,除非出现祖先的所有节点,属性节点和命名空间节点
前同辈 在当前节点之前选择所有的兄弟姐妹
选择当前节点

位置路径表达式

位置路径可以是绝对或相对的。

绝对位置路径以斜线开始( / )和相对定位路径没有。 在这两种情况下的位置路径由一个或多个步骤,每个步骤由一斜线分开:

An absolute location path:

/step/step/...

A relative location path:

step/step/...

每个步骤对在当前的节点集合中的节点进行评价。

甲步骤组成:

  • 一个轴(defines the tree-relationship between the selected nodes and the current node)
  • 一个节点测试(identifies a node within an axis)
  • 零个或多个谓词(to further refine the selected node-set)

用于位置步骤的语法是:

axisname::nodetest[predicate]

例子

结果
孩子::书 选择是当前节点的所有子节点的书
属性::郎 选择lang当前节点的属性
儿童::* 选择当前节点的所有元素孩子
属性::* 选择当前节点的所有属性
孩子:: text() 选择当前节点的所有文本子节点
子:: node() 选择当前节点的所有子
后代::书 选择当前节点的所有后代书
祖先::书 选择当前节点的所有祖先书
祖先或自身::书 选择当前节点的所有祖先的书 - 和当前以及如果它是一本书节点
孩子:: * /子::价格 选择当前节点的所有价格孙子