XPATH谓词中的OR运算符

时间:2012-01-03 07:44:54

标签: xml xpath

我有一个XML,我要查询的部分是:

<c14>06</c14> <c14 m='1' s='2'>01</c14> <c14 m='2'>01</c14>

以下XPATH谓词是否正确查询m='2'以外的元素?

( some $t in c14[not(@m) or @m=1]/text() satisfies fn:number($t) =01)

它给出了正确的结果,但我不确定如何,因为谓词中的or将返回两个节点 - not(@m) and @m=1。它是如何应用text()的?

由于

1 个答案:

答案 0 :(得分:2)

对于上一个node test - text()选择的每个项目,c14[not(@m) or @m=1] step执行一次。

请参阅this section of the spec(我的斜体):

  

某些语言结构,特别是路径表达式E1 / E2和   谓词E1 [E2],为评价创造新的焦点   子的表达。在这些结构中, E2每次评估一次   通过评估E1 得到的序列中的项目。每次E2都是   评估时,会以不同的焦点进行评估。