Como você usa uma variável em xsl ao tentar selecionar um nó?
-
08-06-2019 - |
Pergunta
Eu teria pensado que isso seria fácil para o Google, mas não tive sucesso.
Quero atribuir a uma variável o valor de um atributo (fácil até agora) e usar essa variável para selecionar outro nó com base no valor desse atributo.
Exemplo:
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />
Isso não funciona.Se eu substituir {@myId} pelo valor que está na variável, ele encontrará o nó correto, mas fazer dessa forma não produz nada.Tenho certeza de que estou faltando alguma coisa, ou talvez haja uma maneira diferente de fazer isso.
O contexto é que existem dados relacionados em diferentes nós de nível superior que compartilham o mesmo valor de ID, portanto, preciso obter os nós relacionados em meu modelo.
Solução
Ok, finalmente descobri.Problema bobo, na verdade, eu simplesmente precisava deixar de fora as aspas e os colchetes.Uma daquelas vezes em que eu pensamento que eu já tinha tentado isso.:D Ah, e eu digitei errado @myId no primeiro exemplo, o código era na verdade $myId.
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
Outras dicas
Você parece ter se confundido com o uso de uma variável (que é apenas $variable) e modelos de valor de atributo, que permitem colocar qualquer expressão XPath em alguns atributos, por exemplo.
<newElement Id="{@Id}"/>
Obviamente, eles podem ser combinados, então você pode incluir uma variável em um modelo de valor de atributo, como:
<newElement Id="{$myId}"/>