绝对路径表达式,相对路径表达式

XPath 使用路径表达式在模型抽象树中选取节点,路径表达式分为两类,绝对路径表达式相对路径表达式

绝对路径表达式,是指从根节点开始选取的表达式,下表列出两类绝对路径表达式:
表达式 描述
/ 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个节点的绝对路径
// 如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

示例(以图 7模型为依据,下同):

路径表达式 结果
/root 选取根节点,只返回一个节点
/root/products/Row 选取root节点下的products节点下的所有Row节点,得到3个Row节点
//Row 选取所有 Row节点,而不管它们在树中的的位置。得到14个节点

相对路径表达式:指的是以当前节点开始选取的表达式,(本章开始部分已经说明何为当前节点),下表列出相对路径表达式:

表达式 结果
节点名 当前节点下所有名称匹配子节点
. 选取当前节点
.. 选取当前节点的父节点

示例

路径表达式 假设当前节点$ 结果
Row /root/products 取得当前节点下的所有Row节点,返回三个Row节点
../customers/Row /root/products 选取父节点的customers子节点下的Row节点,返回11个Row节点
./Row /root/products 取得当前节点下的所有Row节点,返回三个Row节点,同一

节点过滤

我们在路径表达式中,可以加入过滤条件用来查找某个特定的节点或节点集。过滤条件被嵌在方括号中。在下面的表格中,我们列出了带有过滤条件的一些路径表达式,以及表达式的结果:
路经表达式 结果
/root/products/Row[1] 选取属于products下的第一个Row节点
/root/customers/Row[last()] 选取属于 customers下的最后一个 Row节点
/root/customers/Row[last()-1] 选取属于 customers下的倒数第二个 Row节点
/root/customers/Row[position()<3] 选取最前面的两个属于 customers的Row节点

选取未知节点
XPath 通配符可用来选取未知的节点。

通配符 描述
* 匹配任何元素节点

实例

路径表达式 结果
/root/* 选取 root下的所有子节点,得到products和customers两个子节点
//* 选取文档中的所有子节点,得到root, products, customers和14个Row节点,总共17个节点


杰创软件·版权所有
©2008 Jatools Software Co.,Ltd.  All rights reserved .