问题
I have a textbox, 'txtSearch'. I am using it to search people by Last Name. this is my code.
var xmlTempResultSearch = xmlResidentListDisplay.selectNodes(
"//PeopleList/Row[contains(translate(@LastName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '" +
txtSearch.value + "')]");
This code selects all last names in the XML like the text input in the txtSearch textbox.
This translates all uppercase letters to lowercase letters.
So if I am searching for 'Dorosan', if I type 'doro', it retrieves the correct person because it translated the 'D' to 'd'. But when I type 'Doro', it doesn't retrieve the correct person.
I'm wondering if I can have two conditions in an XPATH, and how? I want to be able to translate all uppercase to lowercase, OR translate all lowercase to uppercase.
回答1:
you can use or
/ and
inside [....]
Example:
//*[contains('abc') or contains('def') or text()='abcdef']
More info about operators: http://www.w3schools.com/xpath/xpath_operators.asp
回答2:
and
and or
are allowed inside the condition: [here]
. Or you may also use multiple paths in one XPath expression using the pipe sign.
//PeopleList/Row[c1] | //PeopleList/Row[c2]
回答3:
I don't think you need an "or" here. You just need to translate both operands to lower-case, rather than only translating one of them.
回答4:
As noted by Michael Kay, no or
is necessary.
Simply use:
PeopleList/Row
[contains(translate(@LastName,
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz'), '"
+
translate(txtSearch.value,
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')'"
+ "')]");
来源:https://stackoverflow.com/questions/12562597/two-conditions-using-or-in-xpath