tengo documentos XML como:XPath 'o' comportarse como unión ('|') con xmllib2
<rootelement>
<myelement>test1</myelement>
<myelement>test2</myelement>
<myelement type='specific'>test3</myelement>
</rootelement>
me gustaría recuperar la específica myelement
, y si no está presente, entonces el primero. Así que escribo:
/rootelement/myelement[@type='specific' or position()=1]
Los XPath spec estados acerca de la 'o la expresión' que:
El operando de la derecha no se evalúa si el operando de la izquierda se evalúa como verdadera
El problema es que libxml2-2.6.26 parece aplicar la unión de ambas expresiones, devolviendo un "2 Node Set" (por ejemplo usando xmllint --shell
).
¿Es libxml2 o estoy haciendo algo mal?
Buena pregunta (1). Vea mi respuesta para una única expresión XPath que selecciona exactamente los nodos que desea. :) –