在XPATH中使用OR的两个条件

时间:2012-09-24 09:51:58

标签: javascript xpath translate uppercase lowercase

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

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

此代码选择XML中的所有姓氏,例如txtSearch文本框中输入的文本。

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

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

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

4 个答案:

答案 0 :(得分:30)

您可以在or

中使用and / [....]

示例:

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

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

答案 1 :(得分:26)

条件允许

andor[here]。或者,您也可以使用管道符号在一个XPath表达式中使用多个路径。

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

答案 2 :(得分:1)

我认为你不需要“或”。您只需将两个操作数转换为小写,而不是仅翻译其中一个。

答案 3 :(得分:1)

如Michael Kay所述,不需要or

只需使用

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

+ "')]");