transformar partir online example crear xslt

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.