有两种不同类型的位置路径 - 绝对路径和相对路径。绝对路径从固定参考点 - 根节点开始。相对路径从可变点 - 上下文节点开始。
位置路径返回节点集,节点集就是节点(XML 文档中的任何部分,例如,元素、属性、名称空间或注释)的集合。位置路径由位置步骤组成。每个步骤具有二部分:
位置步骤看起来为如下所示:
axis: node-test
可以通过用正斜杠将位置步骤隔开来组合位置步骤。获得的位置路径中的每个步骤设置该步骤中的下一个路径的上下文节点。
要访问“语法引用”选项,单击“XPath 表达式”向导中的引用选项卡。
每个 XPath 位置步骤都从上下文节点沿轴移动。例如,如果选择 child 作为轴,则 XPath 表达式搜索上下文节点的所有子代。
轴 | 对节点进行搜索的位置。 |
---|---|
ancestor:: | 包含上下文节点的根节点和所有元素节点。 |
ancestor-or-self :: | 上下文节点的所有祖代以及节点本身。 |
attribute:: | 上下文节点的所有属性。 |
child:: | 上下文节点的所有子代。属性和名称空间节点不是任何节点的子代,尽管它们具有父节点。
这是缺省值。 |
descendant:: | 上下文节点中包含的所有节点,即,任何子代或子代的子代,依此类推。只有根节点和元素节点才具有后代。与子轴相似,后代轴决不包含属性节点或名称空间节点。 |
descendant-or-self:: | 上下文节点的任何后代或上下文节点本身。 |
following:: | 从上下文节点结束之后开始的所有节点,属性节点和名称空间节点除外。 |
following-sibling:: | 跟在上下文节点末尾后面并具有相同父节点的所有节点。属性节点和名称空间节点没有兄弟节点。 |
namespace:: | 上下文节点的作用域中的所有名称空间。 |
parent:: | 直接包含上下文节点的元素或根节点。只有根节点才没有父节点。 |
preceding:: | 在上下文节点开始之前结束的所有节点,但属性节点和名称空间节点除外。 |
preceding-sibling:: | 在上下文节点的开头前面并具有相同父节点的所有节点。属性节点和名称空间节点没有兄弟节点。 |
self:: | 上下文节点本身。 |
每个位置步骤都至少具有一个轴和一个节点测试。节点测试进一步优化了由位置步骤选择的节点。例如,如果指定 child:: comment( ) 作为位置步骤,则 XPath 表达式会返回上下文节点的所有注释节点子代。
节点 | 它返回的内容 |
---|---|
* | 选择所有元素,不考虑名称。例如,child::* 将选择上下文节点的所有元素子代,attribute::* 将选择上下文节点的所有属性。 |
comment ( ) | 所有注释节点。 |
node( ) | 所有节点,不考虑类型。 |
processing-instruction ('target' ) | 没有自变量,它返回所有处理指令。当带有单个字符串自变量 target 时,它将选择具有指定目标的所有处理指令。 |
text( ) | 所有文本节点。例如,child::text() 将选择上下文节点的所有文本节点子代。 |
节点集
运算符 | 功能 |
---|---|
| | 这是联合运算符。它使用两个节点集,并(在除去重复节点之后)将两个节点集中的所有节点组合在一起。 |
/ | 选择所有子节点。 |
// | 选择后代节点。 |
布尔
布尔运算符可用来比较字符串或数字表达式或者比较布尔值。
运算符 | 返回 |
---|---|
<= | 如果第一个数字表达式的值小于或等于第二个数字表达式的值,则返回值为 true,否则为 false。 |
< | 如果第一个数字表达式的值小于第二个数字表达式的值,则返回值为 true,否则为 false。 |
>= | 如果第一个数字表达式的大于或等于第二个数字表达式的值,则返回值为 true,否则为 false。 |
> | 如果第一个数字表达式的值大于第二个数字表达式的值,则返回值为 true,否则为 false。 |
= | 如果两个表达式(字符串或数字)的值相同,则返回值为 True,否则为 false。 |
!= | 如果两个表达式(字符串或数字)的值不相同,则返回值为 true,否则为 false。 |
and | 如果两个布尔值都为 true,则返回值为 True ,否则为 false。 |
or | 仅当两个值都为 false 时,返回值才为 false,否则为 true。 |
数字
这些运算符可用来处理数字值。
运算符 | 返回 |
---|---|
+ | 两个数字表达式之和。 |
- | 第一个数字表达式减去第二个数字表达式获得的差值。 |
* | 两个数字表达式的乘积。 |
div | 第一个数字表达式除以第二个表达式。 |
mod \ | 第一个数字表达式对第二个表达式取模(返回余数)。 |