我有一个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()
的?
由于
答案 0 :(得分:2)
对于上一个node test - text()
选择的每个项目,c14[not(@m) or @m=1]
step执行一次。
请参阅this section of the spec(我的斜体):
某些语言结构,特别是路径表达式E1 / E2和 谓词E1 [E2],为评价创造新的焦点 子的表达。在这些结构中, E2每次评估一次 通过评估E1 得到的序列中的项目。每次E2都是 评估时,会以不同的焦点进行评估。