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