位置路径之谓词——XPath语法详解系列(十二)

  • 谓词

谓词是一个 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,上下文节点将包含在新的节点集中。否则,上下文节点将排除在新节点集之外。

注意

数字谓词 [x] 等效于布尔谓词 [position()=x]

你可能感兴趣的:(xpath语法,位置路径之谓词)