XPath 轴(Axes)


XPath是一种用于在XML文档中定位节点的语言。XPath定位节点的语法非常强大,其中包括轴(Axes)的概念。轴是XPath中非常有用的一种语法,可以用于定位XML文档中的节点。本篇技术文档将介绍XPath中的轴及其使用方法。

  1. 轴(Axes)

XPath中的轴可以表示相对于当前节点的节点集合。用于表示从当前节点出发访问其他节点的一种方法。可以使用XPath中以下9种轴:

名称 描述
ancestor 当前节点的所有祖先节点
ancestor-or-self 当前节点的所有祖先节点以及当前节点本身
attribute 当前节点的所有属性节点
child 当前节点下的所有子节点,不包括属性节点和命名空间节点
descendant 当前节点的所有后代节点,不包括属性节点和命名空间节点
descendant-or-self 当前节点的所有后代节点以及当前节点本身
following 文档中当前节点之后的所有节点,不包括当前节点的后代节点
following-sibling 当前节点之后的所有同级节点
namespace 当前节点的所有命名空间节点
parent 当前节点的父节点
preceding 文档中当前节点之前的所有节点,不包括当前节点的祖先节点
preceding-sibling 当前节点之前的所有同级节点
self 当前节点
  1. 坐标轴

XPath中的轴还可以通过坐标来管理。坐标是XPath中的一种机制,用于表示一个XML文档中节点的位置。在XPath中,可以使用两种类型的坐标:数字坐标和名称坐标

数字坐标(Number Coordinate)是整数,它用于表示节点在节点集合中的位置。例如,“/books/book[1]”表示文档中第一个book元素,而“/books/book[2]”表示第二个book元素。

名称坐标(Name Coordinate)是一组以“节点名称”和“节点值”组成的定位信息。例如,“//book[@id=‘001’]”表示文档中具有属性id值为“001”的book元素。

  1. 轴的使用方法

在使用轴的过程中,需要注意以下几点:

  • 轴名称必须带有前缀“axis::”(例如“ancestor::”)
  • 通常需要提供一个轴名称、一个节点测试和一个可能的谓词(例如“/ancestor::book[@category=‘web’]”)
  • 坐标可以用于节点测试和谓词(例如,“/bookstore/book[2]”表示第二个book元素)
  1. 轴示例

(1)选择所有的祖先节点

//book/ancestor::*

(2)选择当前节点以及所有的后代节点

//*

(3)选择输入节点元素之前的所有元素

$peerNodes := /person/preceding-sibling::* $peerNodes[position() > last() - 5]

(4)选择当前节点之后的所有节点

following-sibling::*

(5)选择父元素

parent::*

总的来说,XPath中的轴是一个很有用的工具,它可以帮助开发人员更准确地选择他们所需要的节点。本文档旨在介绍XPath中的轴的基础知识和使用方法,希望对读者有所帮助。