Как использовать, как в XPath?
У меня есть страница, которая ищет с фильтрами. У меня есть этот код, например,
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[@LastName != '"+txtSearch.value+"']");
xmlTempResultSearch.removeAll();
При этом выбираются данные, которые не равны LastName, введенному в текстовое поле txtSearch
а затем удаляются их из набора результатов, чтобы их фильтрация соответствовала фамилии в текстовом поле txtSearch
.
Моя проблема с этим кодом является то, что оно должно быть равно (=) к txtSearch
.value, что я хочу, что я хочу, чтобы результирующий набор Понравился txtSearch.value
. Что происходит на моей странице, так это то, что когда я набираю ' santos
' в текстовом поле txtSearch, его набор результатов - все эти фамилии с ' santos
'. Но когда я sant
' sant
', ничего не появляется. Я хочу тот же набор результатов с ' santos
', потому что все это содержит 'Sant'
Ответы
Ответ 1
Вы можете использовать все строковые функции XPath (1.0). Если у вас есть XPath 2.0, вы можете даже использовать RegEx.
contains()
starts-with()
substring()
substring-before()
substring-after()
concat()
translate()
string-length()
В XPath 1.0 нет ** ends-with()
, но его можно легко выразить с помощью этого XPath 1.0 выражение **:
substring($s, string-length($s) - string-length($t) +1) = $t
есть true()
, когда строка $s
заканчивается строкой $t
.
Ответ 2
Вы можете использовать функцию start-with, а не функцию. Справка:
http://www.w3schools.com/xpath/xpath_functions.asp
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");
Ответ 3
вы можете использовать функцию contains() XPath:
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");