2012-09-19 30 views
11

Tôi có một trang tìm kiếm bằng các bộ lọc. Tôi có mã này ví dụ,Cách sử dụng như trong XPath?

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

này sẽ chọn các dữ liệu mà không phải là tương đương với LastName đầu vào trên txtSearch textbox và sau đó loại bỏ chúng khỏi tập hợp kết quả để lọc nó để bằng tên cuối cùng trên txtSearch hộp văn bản.

Vấn đề của tôi với mã này là nó phải bằng (=) đến txtSearch .Value, những gì tôi muốn là tôi muốn kết quả thiết NHƯ các txtSearch.value. Điều gì xảy ra trên trang của tôi là khi tôi nhập 'santos' vào hộp văn bản txtSearch, tập kết quả của nó là tất cả những tên cuối cùng có 'santos'. nhưng khi tôi nhập 'sant', không có gì xuất hiện. tôi muốn cùng một tập hợp kết quả với 'santos' vì tất cả đều có 'sant'

Trả lời

4

Bạn có thể sử dụng chức năng bắt đầu bằng và không hoạt động. Tham khảo:

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

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

bạn có thể sử dụng chứa) chức năng (của XPath:

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

Tôi không thể làm việc này. Tôi đã tìm kiếm 'bro' từ tên cuối cùng tôi muốn nhận là 'Broerman'.Tôi gặp lỗi: Lỗi: Mã thông báo dự kiến ​​']' được tìm thấy 'NAME'. // PeopleList/Row [not -> contains <- (@ LastName, 'bro')] – edsamiracle

+0

Ồ, tôi xin lỗi, điều này phải là 'không (chứa (...)) ' –

13

Bạn có thể sử dụng tất cả các XPath (1.0) chức năng chuỗi. Nếu bạn có sẵn XPath 2.0, bạn thậm chí có thể sử dụng RegEx.

contains()

starts-with()

substring()

substring-before()

substring-after()

concat()

translate()

string-length()

Không có ** ends-with() trong XPath 1.0, nhưng nó có thể dễ dàng được thể hiện với XPath 1.0 biểu thức này **:

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

true() chính xác khi nào chuỗi $s kết thúc với chuỗi $t.

Các vấn đề liên quan