37

我有一个文本框,'txtSearch'。我用它来按姓氏搜索人。这是我的代码。

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

此代码选择 XML 中的所有姓氏,就像 txtSearch 文本框中的文本输入一样。

这会将所有大写字母转换为小写字母。

因此,如果我正在搜索“Dorosan”,如果我输入“doro”,它会检索到正确的人,因为它将“D”翻译成“d”。但是当我输入“Doro”时,它没有检索到正确的人。

我想知道我是否可以在 XPATH 中有两个条件,以及如何?我希望能够将所有大写字母翻译成小写字母,或者将所有小写字母翻译成大写字母。

4

4 回答 4

51

and并且or允许在条件内:[here]. 或者,您也可以使用管道符号在一个 XPath 表达式中使用多个路径。

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

于 2012-09-24T10:08:22.510 回答
41

你可以在里面使用or/and[....]

例子:

//*[contains('abc') or contains('def') or text()='abcdef']

有关运营商的更多信息:http: //www.w3schools.com/xpath/xpath_operators.asp

于 2012-09-24T10:04:10.260 回答
3

我认为您在这里不需要“或”。您只需要将两个操作数都翻译成小写,而不是只翻译其中一个。

于 2012-09-24T11:51:15.993 回答
3

正如 Michael Kay 所指出的,没有or必要。

只需使用

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

+ "')]");
于 2012-09-24T13:14:13.493 回答