考慮下面的XMLXPath表達式來選擇一個節點,如果屬性相匹配,或沒有該屬性節點否則
<xml>
<tag/>
<tag version="2.1"/>
</xml>
我想XPath 1.0表達式如果我搜索版本2.1返回<tag version="2.1"/>
,和<tag/>
如果我搜索2.2版本。
到目前爲止,我已經試過
/xml/tag[@version = '%version%' or not(@version)]
其中%version%
是可以是一個字符串或者2.1或2.2,但如果%version%
是2.1,它返回兩個節點。
在'2.1'上搜索會返回兩者,因爲在你的xpath中你做了或不做(@version)'而且這會導致沒有該屬性的標記。所以,不管你傳入'%version%',因爲總是' ''將會因爲'或'語句而被返回......你想在一個XPath語句中實現的功能是不可能的。應該在代碼 –