Как использовать, как в 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+"'))]");