-
布尔、比较和集表达式
筛选模式可以包含布尔表达式、比较表达式和集表达式。
运算符 | 说明 |
---|---|
and | 逻辑与 |
or | 逻辑或 |
not() | 非 |
= | 相等 |
!= | 不相等 |
< 或 < | 小于 |
<= 或 <= | 小于或等于 |
> 或 > | 大于 |
<= 或 >= | 大于或等于 |
| | 集运算;返回两个节点集的联合 |
比较运算符和布尔运算符的优先级顺序(从最高优先级到最低优先级)如下表所示。
1 | ( ) | 分组 |
2 | [ ] | 筛选 |
3 | / // | 路径运算 |
4 | < 或者 < <= 或者 <= > 或者 > >= 或者 >= | 比较 |
5 | = != | 比较 |
6 | | | 联合 |
7 | not() | 布尔值非 |
8 | and | 布尔值与 |
9 | or | 布尔值或 |
在 XML 文档(例如 XSLT 样式表)中使用运算符时,< 和 > 标记必须分别转义为 < 和 > 。例如,以下 XSLT 指令在所有 <price> 元素的数值小于或等于 10 的 <book> 元素上调用 XSLT 模板规则。
XPath 表达式与 DOM 一起使用时,< 和 > 运算符不需要转义。例如,以下 JScript 语句选择所有 <price> 元素的数值小于或等于 10 的 <book> 元素。
布尔表达式可以匹配特定值的所有节点或包含特定范围的节点的所有节点。以下是返回 false 的布尔表达式的示例。
注:运算符区分大小写
逻辑与和逻辑或
布尔运算符 and 和 or 分别执行逻辑与和逻辑或运算。这些运算符与分组括号组合使用时,可以用于构建复杂的逻辑表达式。
示例:
表达式 | 引用 |
---|---|
author[degree and award] | 至少包含一个 <degree> 元素以及至少包含一个 <award> 元素的所有 <author> 元素。 |
author[(degree or award) and publication] | 至少包含一个 <degree> 或 <award> 元素以及至少包含一个 <publication> 元素的所有 <author> 元素。 |
布尔值非
not 布尔运算符在筛选模式中对表达式的值求非。
示例:
表达式 | 引用 |
---|---|
author[degree and not(publication)] | 至少包含一个 <degree> 元素但是不包含 <publication> 元素的所有 <author> 元素 |
author[not(degree or award) and publication] | 至少包含一个 <publication> 元素但是不包含任何 <degree> 元素或 <award> 元素的所有 <author> 元素。 |