Solución:
A todas las respuestas les falta algo importante: lea más:
¿Alguien puede decirme cómo imprimir una variable en mi transformación XSL? Parece una cosa bastante fácil de hacer, pero parece que no puedo hacerlo.
En XSLT 1.0 hay dos formas principales de producir el contenido de un <xsl:variable>
, dependiendo de si contiene un valor escalar (cadena, número o booleano), o tiene un valor estructurado – un conjunto de nodos (uno o más nodos de documentos xml):
-
<xsl:value-of select="$yourscalarVariableName"/>
Use esto para producir un valor escalar. Realmente produce un nodo de texto, que contiene este valor escalar. -
<xsl:copy-of select="$yourStructuredVariableName"/>
Use esto para producir una copia de todos los nodos contenidos en la variable.
Es muy importante saber que si un xsl:variable
contiene una lista de nodos y el <xsl:value-of ...>
se utiliza la instrucción, solo se producirá el valor de cadena del primer nodo. Este es un error que se comete con frecuencia y una pregunta frecuente.
Hay una tercera forma: Si el <xsl:variable>
debe usarse para producir un atributo:
<someLiteralResultElement someAttribute="{$theVariable}"/>
La expresión XPath en las llaves (llamada AVT – plantilla-valor-atributo) se evalúa y el resultado se coloca en el valor del atributo.
En XSLT 2.0, los <xsl:value-of .../>
La instrucción, cuando no se ejecuta en modo de compatibilidad, produce una lista de nodos de texto, uno para cada nodo contenido en el xsl:variable
. Cuando se ejecuta en modo de compatibilidad (tiene el atributo version="1.0"
especificado), el <xsl:value-of>
La instrucción se comporta de la misma manera que en XSLT 1.0.
En Xslt 2.0 <xsl:copy-of>
se comporta de la misma forma que en XSLT 1.0. Sin embargo, se recomienda utilizar el nuevo <xsl:sequence>
instrucción, porque el primero produce una nueva copia de cada nodo, mientras que <xsl:sequence>
no produce nuevas copias de nodos.
Prueba esto:
<xsl:value-of select="$xmlElem"/>
Puedes usar:
<xsl:value-of select="$xmlElem" />