我必須做一個不區分大小寫的XML搜索。我寫了XPath表達式,它們工作正常,但是當我在XPath表達式中使用translate
函數時,出現錯誤。下面是被做工精細的XPath表達式:在XPath中使用translate函數給出錯誤
string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string lower = "abcdefghijklmnopqrstuvwxyz";
string xpath = "/data/item[AID/@iskey='true' and AID/text() = 'fep'][not(*[@iskey][local-name() != 'AID' ])]";
string xpath1 = "/data/item[translate('Aid','" + upper + "','" + lower + "')]";
這裏是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<data>
<item>
<AID iskey="true">fep</AID>
<account>MS</account>
</item>
</data>
我要放置translate
功能在第一XPath表達式是這樣的:
string xpath = "/data/item[translate('AID','" + upper + "','" + lower + "')/@iskey='true' and translate('AID','" + upper + "','" + lower + "')/text() = 'fep'][not(*[@iskey][local-name() != translate('aid','" + upper + "','" + lower + "') ])]";
當我這樣做時,我得到以下錯誤: 表達式必須評估爲一個節點集。
這個xpath對我來說工作正常。 string col =「AID」; string xpath =「/ data/item [col/@ iskey ='true'and col/text()='fep'] [not(* [@ iskey] [local-name()!='col']) ]「;
現在我的要求是col值可以是任何情況下的大寫或小寫,所以我想改變我的xpath,它返回給我結果,而不管在哪種情況下數據存在於xml中。 如果用戶提供援助或援助或aiD它返回給我的結果。
是的。你檢查這個表達式嗎?我仍然得到相同的錯誤 – 2012-07-06 16:57:28
@WaqarJanjua:看到我更新的答案 - 這在XSLT中使用時可以正常工作。 – 2012-07-06 17:10:44
是的,它的工作。但是有一個問題,你把翻譯功能等於'AID',這是固定的? 。它可以是aid或AiD或aID等,所以當我將它改爲'aid'時,表達式返回null。它希望它不區分大小寫。 – 2012-07-06 17:26:08