我有一个文本框'txtSearch'。我用它来按姓氏搜索人。这是我的代码。
var xmlTempResultSearch = xmlResidentListDisplay.selectNodes(
"//PeopleList/Row[contains(translate(@LastName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '" +
txtSearch.value + "')]");
此代码选择XML中的所有姓氏,例如txtSearch文本框中输入的文本。
这会将所有大写字母转换为小写字母。
因此,如果我正在搜索'Dorosan',如果我输入'doro',它会检索到正确的人,因为它将'D'翻译为'd'。但是当我输入'Doro'时,它并没有找到正确的人。
我想知道我是否可以在XPATH中有两个条件,以及如何?我希望能够将所有大写翻译为小写,或者将所有小写翻译为大写。
答案 0 :(得分:30)
您可以在or
and
/ [....]
示例:
//*[contains('abc') or contains('def') or text()='abcdef']
有关运营商的更多信息: http://www.w3schools.com/xpath/xpath_operators.asp
答案 1 :(得分:26)
and
和or
:[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')'"
+ "')]");