只是一个简单的问题,关于以下内容中 xpath 的“not”和“!=”之间的区别。
获取 XML:
<years>
<year value="2010"></year>
<year value="2010"></year>
<year value="2010"></year>
<year value="2009"></year>
</years>
我想选择独特的年份。为了实现这一目标,我奋斗了一段时间,但最终以一种我意想不到的奇怪方式实现了。
以下 xpath 符合我的意图,并返回 2009 和 2010 这两个唯一的年份节点。
years/year[not(@value = preceding-sibling::year/@value)]
以下仅返回 2009 年节点。
years/year[@value != preceding-sibling::year/@value]
它们之间的唯一区别是 != 和 not 运算符。我对此思考了一段时间,但找不到可以向其他人令人满意地解释的差异。
也许有人可以帮忙。
Cheers
Steve
第二个示例不起作用,因为如果将其应用于前 3 个节点中的每一个,它永远不会匹配。为了第一<year>
,没有可以尝试比较其值的前同级,因此它无法匹配。对于第二个和第三个,它们的前一个节点确实具有相同的值,因此非相等测试失败并再次导致不匹配。
The not(...)
版本有效,因为在第一个节点中,整个@value = preceding-sibling::year/@value
由于缺少前一个兄弟而失败,并且此失败由not
,在第一个节点上为您提供匹配项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)