フィルタで検索するページがあります。たとえば、このコードがあります。
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[@LastName != '"+txtSearch.value+"']");
xmlTempResultSearch.removeAll();
これにより、txtSearch
テキストボックスに入力されたLastNameと等しくないデータが選択され、結果セットから削除されて、txtSearch
テキストボックスの姓と等しくなるようにフィルタリングされます。
このコードに関する私の問題は、それがtxtSearch
。valueと等しい(=)必要があることです。必要なのは、結果セットが必要なことです[〜#〜] like [〜#〜]txtSearch.value
。私のページで何が起こるかというと、txtSearchテキストボックスに「santos
」と入力すると、その結果セットは「santos
」が付いたすべての姓になります。しかし、「sant
」と入力しても、何も表示されません。すべてに「sant」が含まれているため、「santos
」で同じ結果セットが必要です
すべてのXPath(1.0)文字列関数を使用できます。 XPath 2.0を使用できる場合は、RegExを使用することもできます。
XPath1.0には** ends-with()
はありませんが、このXPathで簡単に表現できます。 1.0式**:
_substring($s, string-length($s) - string-length($t) +1) = $t
_
はtrue()
であり、文字列_$s
_が文字列_$t
_で終わる場合です。
関数ではなく、start-with関数を使用できます。参照:
http://www.w3schools.com/xpath/xpath_functions.asp
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");
xPathのcontains()関数を使用できます。
xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");