Variables en XSLT

por Alberto Martínez 24 DE JULIO DE 2020

Valoración de los usuarios

5 de media basado en 240 visitas.


Uso de variables en XSLT como en un lenguaje de programación. 

Al escribir filtros XSLT es posible usar variables como en lenguajes tradicionales de programación, para simplificar el código y optimizar algunos procesos. Sin embargo hay algunas diferencias fundamentales que hay que tener en cuenta.

Descripción


En XSLT, la sintaxis para asignar variables es


							
							
Donde por supuesto la “expresionXPath” corresponde al valor que se quiere asignar. De esta manera podemos usar la variable de las siguientes formas:

  • Usando <xsl:value-of select=”$nombre_de_la_variable” />
  • Concatenando con, por ejemplo, valores de argumentos en el HTML que se quiere generar. Por ejemplo,
  •  <div class="menuitem-{$nombre_de_la_variable}">...
  • En cualquier expresión XPath llamandola siempre como $nombre_de_la_variable.
Como se puede apreciar, se obtiene el valor almacenado llamando al nombre de la variable con el signo $ delante. En el caso de la concatenación la clave está en las llaves (“{}”) que rodean la expresión.




Scope (alcance) y cambio de valor


Un punto muy importante a tomar en cuenta es donde existe la variable como tal. En este sentido, el alcance de la variable es el elemento que la contiene. Miremos la siguiente expresión:


							
							
A diferencia de lo que podría esperarse, el resultado obtenido será

La variable vale:
Esto se debe a que el alcance de la variable es el elemento que la contiene, en este caso un <xsl:when>.

Ante esto podríamos aplicar lógica de programación tradicional, definiendo la variable fuera del <xsl:choose> de modo de asegurarnos de aumentar su alcance haciéndola existir fuera del bloque.

El código quedaría de la siguiente manera:

							
							
Esto tampoco funciona, dado que pasa a funcionar otro elemento importante (y para algunos más que extraño) de XSLT: no se puede cambiar el valor de una variable. Donde definamos la variable, aparece como siendo creada nuevamente, con el scope dentro del <xsl:when>.

Asignación condicional


Para saltarnos esta limitante y efectivamente darle un valor a la variable dependiendo de alguna condición, podemos usar una sintaxis alternativa, en que en lugar de usar un select para la asignación, damos el valor dependiendo de los hijos de la etiqueta, como en el siguiente ejemplo:


							
							
La variable vale: <xsl:value-of select="$mi_variable">
Ahora si obtenemos
La variable vale: hola que tal
ó
La variable vale: festival
dependiendo de la condición. Sin embargo, como decíamos anteriormente, una vez que fue asignada la variable no puede ser modificada.

¡Echa un vistazo a esto!


Si te ha gustado comparte

  Sobre el autor

Alberto Martínez

Analista Programador

Soy un apasionado del diseño gráfico y disfruto compartiendo mis conocimientos con todos aquellos que quieran conocer mi trabajo y afición.

Fuente: mirocl.com
Dirección

Calle Martinez, 24                     
29004 Málaga

Contacto

Email: webmalakadesign@gmail.com
Phone: 952.23.89.__
Fax: 952.23.89.__