xslt - partir - diferencia entre xsl: param y xsl: variable
xslt online (1)
Estoy considerando cualquiera de los dos para usar al definir un xsl: template name = myTemplate que se llamará en otro archivo xsl.
el código heredado parece usar ''xsl: variable'' cuando se usa en xsl: template match = "legacyTemplate"
Entonces, ¿cuál es la diferencia entre xsl: param y xsl: variable al usarlo en xsl: template name = myTemplate?
La diferencia es que el valor de xsl:param
se puede establecer fuera del contexto en el que se declara. Por ejemplo, ver:
<xsl:template ...>
<xsl:param name="p" select="''x''" />
<xsl:variable name="v" select="''y''" />
...
entonces sabes que $v
siempre te dará la cadena ''y''
. Pero para $p
la cadena ''x''
solo es un valor predeterminado: verá un valor diferente si la plantilla se invoca con xsl:apply-templates
o xsl:call-template
que contiene una instrucción como:
<xsl:with-param name="p" select="''not x''" />
<xsl:param>
también se puede usar fuera de xsl:template
, en el nivel superior de la hoja de estilo. El valor de dicho parámetro se puede establecer cuando se llama al procesador XSLT. Cómo se hace esto depende del procesador y si lo llamas desde la línea de comando o por programa.