Como você usa uma variável em xsl ao tentar selecionar um nó?

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

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

Foi útil?

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}"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top