2008-08-07 15 views
13

Hubiera pensado que podría ser fácil para Google, pero no he tenido éxito.¿Cómo se usa una variable en xsl cuando se intenta seleccionar un nodo?

Quiero asignar una variable al valor de un atributo (fácil hasta el momento) y luego usar esa variable para seleccionar otro nodo en función del valor de ese atributo.

Ejemplo:

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

que no funciona. Si reemplazo el {@myId} con el valor que está en la variable, entonces encuentra el nodo correcto, pero hacerlo de esta manera no produce nada. Estoy seguro de que me estoy perdiendo algo, o tal vez hay una forma diferente de hacerlo.

El contexto es que hay datos relacionados en diferentes nodos de nivel superior que comparten el mismo valor de id, así que necesito obtener los nodos relacionados en mi plantilla.

Respuesta

16

Ok, finalmente lo descubrí. Tonto problema realmente, simplemente necesitaba dejar de lado las comillas y los frenos. Una de esas veces cuando yo pensé que ya lo había intentado. : D Oh, y escribí mal @myId en el primer ejemplo, el código era realmente $ myId.

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

Todavía hay una cita que no debería estar ahí. Es una edición muy pequeña, así que no puedo hacerlo sin cambiar también el texto (límite mínimo de caracteres).

+0

Gracias, creo que eso es correcto ahora. También me perdí la cita de cierre original al final. – palehorse

4

Parece que tienes se confundió con el uso de una variable (que es sólo $ variable) y plantillas de atributos de valor, que le permiten poner cualquier expresión XPath en algunos atributos, por ejemplo,

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

Obviamente se pueden combinar, por lo que puede incluir una variable en una plantilla Atributo Valor, tales como:

<newElement Id="{$myId}"/> 
Cuestiones relacionadas