XSLT: Obtenir un nœud où certaine valeur est présente
Question
J'ai le code XML suivant:
<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>
Je dois obtenir le @id de la
Cela signifie que si mon $ id itm / @ est égal à 1273, je dois obtenir 1177 sont revenus. Je ne suis pas tout à fait sûr de savoir comment y parvenir.
En fait, je pourrais avoir XML qui ressemble à ceci ainsi:
<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>
Si tel est le cas, je dois le dernier identifiant, donc cela signifie que si l'itm $ / @ id correspond à des valeurs plus
Espérons que cela fait sens pour vous les gars. Et en passant, je travaille avec Umbraco CMS si cela ne la différence.
Cordialement, Kim
La solution
Vous pouvez utiliser cette
(/data/page[itms/values/value = 1273])[last()]/@id
ou même ce
(//value[.=1273])[last()]/ancestor::page[1]/@id
Autres conseils
Quelque chose comme page[itms/values/value=$itm/@id][last()]/@id
.
ma version: / data / [iTMS / valeurs / valeur / text () = $ itm / @ id] [last ()] / @ id