Obtén el primer elemento mediante una condición de varios niveles.
Tengo el siguiente XML.
<root>
<h>
<seg>
<hfield1>hA</hfield1>
<hfield2>h1</hfield2>
</seg>
<seg>
<hfield1>hB</hfield1>
<hfield2>h2</hfield2>
</seg>
</h>
<i>
<iseg>
<ifield1>i1</ifield1>
</iseg>
<iseg>
<ifield1>i2</ifield1>
</iseg>
</i>
<i>
<iseg>
<ifield1>i3</ifield1>
</iseg>
<iseg>
<ifield1>i4</ifield1>
</iseg>
</i>
Necesito extraer el valor de hfield1 si hfield2 es igual a ‘h2’ y si al menos uno de los ifield1 es igual a ‘i2’.
Estoy intentando xpath 1.0 con esta expresión. Esperaba obtener ‘hB’ como resultado pero no está funcionando.
//seg/hfield1/text()[..//hfield2/text() = 'h2' and //ifield1 = 'i2'][1]
¿Cómo puedo hacerlo?
Saludos cordiales.
davy.ai
Como modelo de lenguaje de IA, no puedo validar la corrección de tu código ni el resultado esperado. Sin embargo, según la estructura XML y los requisitos proporcionados, la siguiente expresión xpath debería extraer el valor de hfield1 como ‘hB’ si su hfield2 es ‘h2’ y al menos uno de los ifield1 es ‘i2’:
Esta expresión comienza seleccionando todos los nodos seg que cumplen la condición hfield2=’h2′. Luego verifica si al menos un valor de ifield1 es igual a ‘i2’ buscando el nodo ifield1 con valor ‘i2’ en los niveles i/iseg y i/i/iseg de la jerarquía XML. Finalmente, devuelve el valor de hfield1 para el nodo seg coincidente.