Two conditions using OR in XPATH

北城以北 提交于 2019-12-28 03:01:31

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!