2012-09-19 18 views
11

Tengo una página que busca con filtros. Tengo este código, por ejemplo,¿Cómo usar como en XPath?

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

Esto selecciona los datos que no es igual a la Apellido introduce en el txtSearch cuadro de texto y luego los elimina del conjunto de resultados de manera que su filtró para igualar el último nombre de la txtSearch caja de texto.

Mi problema con este código es que debe ser igual (=) a la txtSearch .value, lo que quiero es que quiero que el conjunto de resultados COMO la txtSearch.value. Lo que sucede en mi página es que cuando escribo 'santos' en el cuadro de texto txtSearch, su conjunto de resultados es todos esos apellidos con 'santos'. pero cuando escribo 'sant', no aparece nada. Quiero el mismo conjunto de resultados con 'santos' porque todo contiene 'sant'

Respuesta

2

puede utilizar contiene la función() de XPath:

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

No puedo hacer que esto funcione. Estaba buscando 'hermano' ya que el último nombre que quiero obtener es 'Broerman'.Recibí un error que dice: Error: Token esperado ']' encontró 'NAME'. // PeopleList/Row [not -> contains <- (@ LastName, 'bro')] – edsamiracle

+0

Oh, lo siento, esto debería ser 'not (contains (...))' –

13

Usted puede utilizar todo el XPath (1.0) funciones de cadena. Si tiene XPath 2.0 disponible, entonces incluso puede usar RegEx.

contains()

starts-with()

substring()

substring-before()

substring-after()

concat()

translate()

string-length()

No hay ** ends-with() en XPath 1.0, pero puede fácilmente ser expresado con este XPath 1.0 expresión **:

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

es true() exactamente cuando la cadena $s termina con la cadena $t.