2009-11-13 24 views
0

我有這個構造來質疑我的xml文檔在xaml中的綁定。如何防止XPath返回所有空比較變量?

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

如果路徑/文件/ A /了selectedValue爲空或不存在/ DOC/B /表/條目的所有節點都返回。有沒有辦法定義在/ doc/A/selectedValue爲空或不存在的情況下什麼都不應該返回?

希望有人能幫忙,

問候馬丁

回答

2

從理論上講,不將返回所有乙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]

+0

有幾個在線測試它很好,但在我的XAML綁定它總是返回第一個路徑元素的內容的值。 – martin 2009-11-13 10:09:42

+0

我發現問題是我的源代碼中有一段數據廢棄物。 – martin 2009-11-13 10:18:28