如何防止XPath返回所有空比较变量?

时间:2009-11-13 08:02:04

标签: xml xpath

我有这个构造来用xaml中的绑定来质疑我的xml文档。

XPath="/doc/B/lists/entry[@value=(/doc/A/selectedValue)]"

如果路径/ doc / A / selectedValue为空或不存在,则返回/ doc / B / list / entry的所有节点。有没有办法定义在/ doc / A / selectedValue为空或不存在的情况下不应返回任何内容?

希望有人能提供帮助,

问候马丁

1 个答案:

答案 0 :(得分:2)

理论上,不会返回所有 B entires,而是唯一为空的。如果没有选定值,/doc/A/selectedValue将返回空节点集。与字符串(@value)进行比较时,空节点集将转换为空字符串。这意味着你的表达式将等于

/doc/B/lists/entry[@value='']

为避免这种情况,您只需确保/doc/A/selectedValue不为空:

/doc/B/lists/entry[/doc/A/selectedValue != '' and @value=/doc/A/selectedValue]

请注意,与任何XPath一样,/doc/A/selectedValue可以返回多个节点。更明确和更具防御性的是/doc/A/selectedValue[1]