Ho guardato a questa domanda: Select first instance only with XPath?Selezionare primo risultato in XPath
Ma se ho un nodo-set come questo:
<container value="">
<data id="1"></data>
<data id="2">test</data>
<container>
<data id="1">test</data>
<data id="3">test</data>
</container>
</container>
Ora il mio scenario è che questo nodo-set è profondo all'interno di un documento, e ho un puntatore al contenitore interno. Quindi devo prefisso il mio XPath con "/ container/container" (il percorso è in realtà più lungo, ma per questo esempio dovrebbe farlo).
MODIFICA: Quello che voglio è un nodo "dati" con un ID di 1, che dovrebbe provenire dal nodo più basso prima o dall'antenato più vicino. Quindi, se non riesco a trovarlo sulla "corrente" (/ contenitore/contenitore) dovrei guardare gli antenati e prendere quello più vicino (o alla fine, non trovare nulla). Ho provato questo:
/contenitore/container/antenato-or-self :: contenitore/dati [@ id = "1"]
che riporta un set di risultati con due nodi. Pensavo di poter usare lo scorso() per ottenere quello più profondo, quindi l'ho attaccato alla fine, ma senza successo.
La specifica potrebbe fare con maggiore chiarezza. Vuoi il nodo dati? Il nodo dati deve avere un id di 1? Crea il contenitore originale se il nodo dati non ha un ID 1 vuoi spostare il documento in un contenitore genitore per vedere se ha un nodo dati con un id di 1, se non continua fino al nodo dati con un id di 1 trovato. Questo lo descrive? – AnthonyWJones
Ho cercato di descrivere quello che cercavo un po 'più chiaro, anche se alcuni lo hanno indovinato. Scusate! –