谓词

谓词是一个 XPath 表达式,用于针对某个轴筛选节点集,并生成一个新的节点集。 此筛选过程包括按顺序针对节点集中的每个节点计算该谓词。 每次针对节点计算该谓词时:

  • 上下文节点是当前计算的节点。

  • 上下文大小节点集中正在计算的节点数。

  • 上下文位置是上下文节点在节点集中的位置。

最后一个上下文(即节点集中上下文节点的上下文)相对于定位步骤中指定的轴浏览文档树的方向。 通常,轴会按照正方向或反方向浏览树:

  • 正轴是包含上下文节点或上下文节点之后的节点的轴。 child::descendant::descendant-or-self::following::following-sibling:: 轴是正轴。 这些正轴按文档顺序为节点集中的节点编号,从第一个位置 1 开始。

  • 反轴是包含上下文节点或上下文节点之前的节点的轴。 ancestor::ancestor-or-self::preceding::preceding-sibling:: 轴是反轴。 这些反轴按文档顺序相反的顺序为节点集中的节点编号,从第一个位置 1 开始。

对于其他轴,self::parent:: 轴返回单个节点。 因此,指定正轴或反轴对这两个轴没有意义。 attribute::namespaces:: 轴没有定义顺序;所以,也没有正轴和反轴。

选择节点

谓词表达式计算为数值或布尔值。

如果谓词计算为数字,XPath 将该数字与上下文节点的上下文位置进行比较。 如果数字和位置相同(即上下文节点处于树中相应的位置),谓词将计算为 true,上下文节点将包含在新的节点集中。 否则,上下文节点将排除在新节点集之外。

如果谓词没有计算为数字,XPath 将使用 boolean 函数将结果转换为布尔值。 例如,谓词 [genre='Computer'] 计算为一个节点集。 如果上下文节点有一个内容为 Computer 的子级 <genre> 元素,此谓词就计算为 true,并且该上下文节点被包括在新节点集内。 否则,上下文节点将排除在新节点集之外。

ms256205.note(zh-cn,VS.100).gif注意:
数字谓词 [x] 等效于布尔谓词 [position()=x]

另请参见

参考

定位步骤

节点测试