web-dev-qa-db-ja.com

XPathのように使用する方法は?

フィルタで検索するページがあります。たとえば、このコードがあります。

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[@LastName != '"+txtSearch.value+"']");
xmlTempResultSearch.removeAll();

これにより、txtSearchテキストボックスに入力されたLastNameと等しくないデータが選択され、結果セットから削除されて、txtSearchテキストボックスの姓と等しくなるようにフィルタリングされます。

このコードに関する私の問題は、それがtxtSearch。valueと等しい(=)必要があることです。必要なのは、結果セットが必要なことです[〜#〜] like [〜#〜]txtSearch.value。私のページで何が起こるかというと、txtSearchテキストボックスに「santos」と入力すると、その結果セットは「santos」が付いたすべての姓になります。しかし、「sant」と入力しても、何も表示されません。すべてに「sant」が含まれているため、「santos」で同じ結果セットが必要です

12
edsamiracle

すべてのXPath(1.0)文字列関数を使用できます。 XPath 2.0を使用できる場合は、RegExを使用することもできます。

contains()

starts-with()

substring()

substring-before()

substring-after()

concat()

translate()

string-length()

XPath1.0には** ends-with()はありませんが、このXPathで簡単に表現できます。 1.0式**:

_substring($s, string-length($s) - string-length($t) +1) = $t
_

true()であり、文字列_$s_が文字列_$t_で終わる場合です。

14

関数ではなく、start-with関数を使用できます。参照:

http://www.w3schools.com/xpath/xpath_functions.asp

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");
4
swemon

xPathのcontains()関数を使用できます。

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");
2
Khue Vu