valor tutorial texto secuencias recorrer obtener curso con buscar atributo altova xpath

tutorial - XPath-Selección de elementos que equivalen a un valor



xpath obtener el valor de un atributo (2)

En Xpath, quiero seleccionar elementos que igualen un valor específico.

Muestra de datos XML:

<aaa id="11" > <aaa id="21" > <aaa id="31" ></aaa> <bbb id="32" > <aaa id="41" ></aaa> <bbb id="42" ></bbb> <ccc id="43" ></ccc> <ddd id="44" >qwerty</ddd> <ddd id="45" ></ddd> <ddd id="46" ></ddd> </bbb> </aaa> <bbb id="22" > <aaa id="33" >qwerty</aaa> <bbb id="34" ></bbb> <ccc id="35" ></ccc> <ddd id="36" ></ddd> <ddd id="37" ></ddd> <ddd id="38" ></ddd> </bbb> <ccc id="23" >qwerty</ccc> <ccc id="24" ></ccc> </aaa>

Ahora, usando XPath:

//ccc[.=''qwerty'']

Obtengo los resultados correctos y esperados :

Name Value ccc qwerty

Ahora, usando XPath:

//aaa[.=''qwerty'']

Obtengo resultados inesperados :

Name Value aaa aaa qwerty

Y lo que me interesa especialmente es cómo seleccionar cualquier elemento con ese valor

XPath:

//*[.=''qwerty'']

Obtengo resultados inesperados muy extraños:

Name Value aaa bbb ddd qwerty bbb qwerty aaa qwerty ccc qwerty

¿Alguien puede explicar estos resultados y cómo arreglar mis expresiones XPath para obtener más resultados esperados?


Tratar

//*[text()=''qwerty''] porque . es tu elemento actual


La especificación XPath. define el valor de cadena de un elemento como la concatenación (en orden de documento) de todos sus descendientes de nodo de texto .

Esto explica los "resultados extraños".

Se pueden obtener resultados "mejores" usando las expresiones a continuación:

//*[text() = ''qwerty'']

Lo anterior selecciona cada elemento en el documento que tiene al menos un elemento de nodo de texto con el valor ''qwerty''.

//*[text() = ''qwerty'' and not(text()[2])]

Lo anterior selecciona cada elemento en el documento que tiene un solo hijo de texto y su valor es: ''qwerty''.