<bar>
Actualizado para reflejar una solución prevista por OP.
Véase la respuesta de @ David
Para un xml de ejemplo a continuación,
<root>
<foo id="0">
<bar attr="val"/>
<foo id="1">
<bar attr="xxx"/>
</foo>
<foo id="2">
<bar attr="val">
<one>1</one>
<two>
<three>3</three>
</two>
</bar>
</foo>
</foo>
un XPath válida en el eje inversa con <tres> como el nodo de contexto, una válida la solución es
./ancestor::foo[bar[@attr='val']][position() = 1]
"./" es opcional. position() = 1 no es opcional, ya que de lo contrario también se devolverá el ancestro foo
que satisfaga los predicados.
vieja respuesta: ignorar
Ésta es una cuestión de edad. pero cualquiera que esté interesado, lo siguiente debería conseguirte lo que la pregunta original pretendía.
eje inversa
//bar[@attr='val']/ancestor::*[position()=1]
eje Delantero
//*[child::bar[@attr='val']]
¿Qué obtienes? –
Nada. No se corresponde con el elemento que describí. ¿Debería funcionar esa expresión? –
Proporcione el documento XML (mínimo) en el que esto "no funciona". Solo sabemos que estás "metiendo la mano en la bolsa y no encuentras lo que quieres allí", pero no sabemos "qué hay en la bolsa" :) –