2012-09-24 48 views
16

我有一個文本框'txtSearch'。我正在使用它來按姓氏搜索人員。這是我的代碼。在XPATH中使用OR的兩個條件

var xmlTempResultSearch = xmlResidentListDisplay.selectNodes(
    "//PeopleList/Row[contains(translate(@LastName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '" + 
    txtSearch.value + "')]"); 

這段代碼在像txtSearch文本框中的文本輸入的XML選擇所有姓氏。

這將所有大寫字母轉換爲小寫字母。

因此,如果我搜索'Dorosan',如果我輸入'doro',它將檢索正確的人,因爲它將'D'翻譯爲'd'。但是當我輸入'Doro'時,它不會檢索到正確的人。

我想知道如果我可以在XPATH中有兩個條件,以及如何?我希望能夠將所有大寫翻譯爲小寫,或者將所有小寫翻譯爲大寫。

回答

19

andor被允許的條件內:[here]。或者,您也可以使用管道符號在一個XPath表達式中使用多個路徑。

//PeopleList/Row[c1] | //PeopleList/Row[c2]

+1

( 「的XPath」) - 它顯示錯誤的XQuery [dvEd.EnrichmentData.exist()]:XQuery的語法 '聯盟' 是不支持的。 –

1

我不認爲你需要一個 「或」 在這裏。你只需要將兩個操作數翻譯成小寫,而不是隻翻譯其中的一個。

1

正如邁克爾凱所說的,沒有or是必要的。

只需使用

PeopleList/Row 
    [contains(translate(@LastName, 
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
        'abcdefghijklmnopqrstuvwxyz'), '" 
+ 
      translate(txtSearch.value, 
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
        'abcdefghijklmnopqrstuvwxyz')'" 

+ "')]"); 
對於MS SQL Server中使用.exist