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

本文介绍了XPath谓词的概念及其使用方式,谓词用于筛选节点集并生成新的节点集。文章详细解释了谓词如何通过计算数值或布尔值来选择节点,以及在不同轴上的节点编号规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 谓词

谓词是一个 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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值