He mirado en esta pregunta: Select first instance only with XPath?Seleccionar primer resultado en XPath
Pero si tengo un conjunto de nodos de esta manera:
<container value="">
<data id="1"></data>
<data id="2">test</data>
<container>
<data id="1">test</data>
<data id="3">test</data>
</container>
</container>
Ahora mi escenario es que este conjunto de nodos es profunda dentro de un documento, y tengo un puntero al contenedor interno. Así que tengo que prefijar mi XPath con "/ contenedor/contenedor" (la ruta es en realidad más larga, pero para este ejemplo debería hacerlo).
EDIT: Lo que quiero es un nodo de "datos" con una identificación de 1, que debe provenir del nodo más bajo primero o el antecesor más cercano. Entonces, si no puedo encontrarlo en la "corriente" (/ contenedor/contenedor) debería mirar a los antepasados y obtener el más cercano (o al final, no encontrar nada). He intentado esto:
/contenedor/envase/ancestro-o-self :: contenedor/datos [@ id = "1"]
¿Qué trae de nuevo un conjunto de resultados con dos nodos. Pensé que podría usar last() para obtener el más profundo, así que lo vi al final, pero fue en vano.
La especificación podría hacer con más claridad. ¿Quieres el nodo de datos? El nodo de datos debe tener una identificación de 1? Forme el contenedor original si el nodo de datos no tiene una ID de 1 que desea mover hacia arriba del documento a un contenedor principal para ver si tiene un nodo de datos con una ID de 1, si no continúa hasta el nodo de datos con una ID de 1 se encuentra. ¿Eso lo describe? – AnthonyWJones
Traté de describir lo que estaba buscando un poco más claro, aunque algunos lo adivinaron. ¡Lo siento! –