XSLT: Get nodo in cui un certo valore è presente
Domanda
Ho il seguente codice XML:
<data>
<page id="1118">
<itms>
<values>
<value>1104</value>
</values>
</itms>
</page>
<page id="1177">
<itms>
<values>
<value>1273</value>
<value>1215</value>
</values>
</itms>
</page>
</data>
Ho bisogno di ottenere il @id dalla
Questo significa che se il mio $ ITM / @ id è pari a 1273, ho bisogno di ottenere 1.177 restituiti. Non sono del tutto sicuro di come raggiungere questo obiettivo.
In realtà ho potuto XML che assomiglia a questo così:
<data>
<page id="1118">
<itms>
<values>
<value>1104</value>
</values>
</itms>
</page>
<page id="1177">
<itms>
<values>
<value>1273</value>
<value>1215</value>
</values>
</itms>
</page>
<page id="1352">
<itms>
<values>
<value>1242</value>
<value>1273</value>
</values>
</itms>
</page>
</data>
Se questo è il caso, ho bisogno l'ultimo id, quindi questo significa che se il $ ITM / @ id corrisponde valori in più
Spero che questo ha senso per voi ragazzi. E, a proposito, io lavoro con Umbraco CMS se che fa alcuna differenza.
Con i migliori saluti, Kim
Soluzione
È possibile utilizzare questo
(/data/page[itms/values/value = 1273])[last()]/@id
o anche questo
(//value[.=1273])[last()]/ancestor::page[1]/@id
Altri suggerimenti
Qualcosa di simile page[itms/values/value=$itm/@id][last()]/@id
.
la mia versione: / data / pagina [itms / Valori / Valore / text () = $ ITM / @ id] [last ()] / @ id