Come si utilizza una variabile in XSL quando si tenta di selezionare un nodo?

StackOverflow https://stackoverflow.com/questions/5374

  •  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.

È stato utile?

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}"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top