¿Cómo se utiliza una variable en xsl al intentar seleccionar un nodo?

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

  •  08-06-2019
  •  | 
  •  

Pregunta

Pensé que sería fácil para Google, pero no lo he conseguido.

Quiero asignar a una variable el valor de un atributo (hasta ahora es fácil) y luego usar esa variable para seleccionar otro nodo según el valor de ese atributo.

Ejemplo:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

Eso no funciona.Si reemplazo {@myId} con el valor que está en la variable, entonces encuentra el nodo correcto, pero hacerlo de esta manera no produce nada.Seguro que me falta algo, o quizás haya una forma diferente de hacerlo.

El contexto es que hay datos relacionados en diferentes nodos de nivel superior que comparten el mismo valor de identificación, por lo que necesito obtener los nodos relacionados en mi plantilla.

¿Fue útil?

Solución

Ok, finalmente lo descubrí.Realmente un problema tonto, simplemente necesitaba omitir las comillas y las llaves.Una de esas veces cuando yo pensamiento que ya lo había probado.:D Ah, y escribí mal @myId en el primer ejemplo, el código en realidad era $myId.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

Otros consejos

Parece que se ha confundido con el uso de una variable (que es simplemente $variable) y las plantillas de valor de atributo, que le permiten colocar cualquier expresión XPath en algunos atributos, p.

<newElement Id="{@Id}"/>

Obviamente se pueden combinar, por lo que puedes incluir una variable en una plantilla de valor de atributo, como por ejemplo:

<newElement Id="{$myId}"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top