15

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

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

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

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

4

3 に答える 3

17

すべての 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

于 2012-09-19T04:59:56.107 に答える
5

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

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

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(starts-with(@LastName,'"+ txtSearch.value +"'))]");
于 2012-09-19T03:45:51.617 に答える
3

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

xmlTempResultSearch = xmlResidentListDisplay.selectNodes("//PeopleList/Row[not(contains(@LastName,'"+txtSearch.value+"'))]");
于 2012-09-19T04:32:38.587 に答える