Come si utilizza una variabile in XSL quando si tenta di selezionare un nodo?
-
08-06-2019 - |
Domanda
Avrei pensato che sarebbe stato facile per Google, ma non ho avuto successo.
Voglio assegnare a una variabile il valore di un attributo (facile finora), quindi utilizzare quella variabile per selezionare un altro nodo in base al valore di quell'attributo.
Esempio:
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />
Questo non funziona.Se sostituisco {@myId} con il valore presente nella variabile, trova il nodo giusto, ma farlo in questo modo non produce nulla.Sono sicuro che mi manca qualcosa, o forse c'è un modo diverso per farlo.
Il contesto è che ci sono dati correlati in diversi nodi di livello superiore che condividono lo stesso valore ID, quindi devo ottenere i nodi correlati nel mio modello.
Soluzione
Ok, finalmente l'ho capito.Problema davvero stupido, dovevo semplicemente tralasciare le virgolette e le parentesi graffe.Una di quelle volte in cui io Pensiero che l'avevo già provato.:D Oh, e ho digitato male @myId nel primo esempio, il codice era in realtà $myId.
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
Altri suggerimenti
Sembra che tu ti sia confuso con l'uso di una variabile (che è solo $variabile) e i modelli di valori di attributo, che ti consentono di inserire qualsiasi espressione XPath in alcuni attributi, ad es.
<newElement Id="{@Id}"/>
Ovviamente possono essere combinati, quindi puoi includere una variabile in un modello di valore di attributo, come ad esempio:
<newElement Id="{$myId}"/>