online ejemplos curso consultas altova xml xpath

xml - ejemplos - xpath altova



Cómo filtrar con XPath en todos los elementos sin un atributo específico (3)

Estás muy cerca:

//StateProvince[not(@territory) or @territory != ''true'']

Debería conseguirte el resultado que deseas.

Mi XPath está un poco oxidado ... Digamos que tengo este simple archivo XML:

<?xml version="1.0" encoding="utf-8" ?> <States xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <States> <StateProvince name="ALABAMA" abbrev="AL" /> .... <StateProvince name="AMERICAN SAMOA" abbrev="AS" territory="true" /> </States> </States>

Me gustaría ejecutar una consulta XPath simple para analizar todos los estados verdaderos (así que no tire de los estados donde territorio = verdadero). Intenté / StateProvince [@territory! = ''True''] pero obtuve cero. Otras variaciones parecen estar fallando. Esto parece que debería ser simple, pero no encontrar lo que quiero.

Cualquier ayuda apreciada.


Esto debería funcionar:

//StateProvince[not(@territory=''true'')]


Una expresión XPath que selecciona los elementos deseados :

/*/States/StateProvince[not(@territory=''true'')]

Tenga en cuenta que uno debe evitar la // abreviación siempre que sea posible, ya que hace que se escanee todo el documento (subárbol arraigado en el nodo de contexto) .

La expresión XPath anterior evita el uso de la abreviatura // teniendo en cuenta la estructura del documento XML proporcionado originalmente.

Solo si la estructura del documento XML es completamente desconocida (y la expresión XPath está diseñada para usarse en muchos documentos XML con estructura desconocida) se debe considerar el uso de la abreviatura // .