【发布时间】:2013-10-11 10:36:39
【问题描述】:
考虑以下 XML
<xml>
<tag/>
<tag version="2.1"/>
</xml>
我想要一个 XPath 1.0 表达式,如果我搜索版本 2.1,则返回 <tag version="2.1"/>,如果我搜索版本 2.2,则返回 <tag/>。
到目前为止,我已经尝试过
/xml/tag[@version = '%version%' or not(@version)]
其中%version% 是一个可以是2.1 或2.2 的字符串,但如果%version% 是2.1,它会返回两个节点。
【问题讨论】:
-
在
2.1上搜索会返回两者,因为在您的xpath 中您执行or not(@version),这将导致标签没有属性。因此,传递给%version%的内容并不重要,因为<tag/>总是会因为or语句而被返回......你试图实现的目标在一个XPath 语句中是不可能的。应该在代码中解决