Два условия использования OR в XPATH - программирование
Подтвердить что ты не робот

Два условия использования OR в XPATH

У меня есть текстовое поле, txtSearch. Я использую его для поиска людей по имени. это мой код.

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

Этот код выбирает все имена в XML, такие как текстовый ввод в текстовом поле txtSearch.

Это переводит все заглавные буквы в строчные буквы.

Итак, если я ищу "Dorosan", если я нахожу "doro", он получает правильный человек, потому что он переводит "D" в "d". Но когда я набираю "Доро", он не получает правильного человека.

Мне интересно, могу ли я иметь два условия в XPATH и как? Я хочу, чтобы иметь возможность переводить все в верхнем регистре в нижний регистр, ИЛИ переводить все строчные буквы в верхний регистр.

4b9b3361

Ответ 1

вы можете использовать or/and внутри [....]

Пример:

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

Дополнительная информация об операторах: http://www.w3schools.com/xpath/xpath_operators.asp

Ответ 2

and и or разрешены внутри условия: [here]. Или вы также можете использовать несколько путей в одном выражении XPath, используя знак трубы.

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

Ответ 3

Я не думаю, что вам нужно "или" здесь. Вам просто нужно перевести оба операнда в нижний регистр, а не только перевести один из них.

Ответ 4

Как отмечено Майклом Кей, нет or.

Просто используйте:

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

+ "')]");