i am considering either one to use when defining an xsl:template name = myTemplate that will be called in another xsl file.
legacy code seems to use 'xsl:variable' when being used in xsl:template match="legacyTemplate"
so what's the difference between xsl:param and xsl:variable when using it in xsl:template name=myTemplate?
The difference is that the value of an
xsl:param
could be set outside the context in which it is declared. For example, see:then you know that
$v
will always give you the string'y'
. But for$p
the string'x'
is only a default: you will see a different value if the template is invoked with eitherxsl:apply-templates
orxsl:call-template
which contains an instruction such as:<xsl:with-param name="p" select="'not x'" />
<xsl:param>
may also be used outsidexsl:template
, at the top level in the stylesheet. The value of such a parameter may be set when the XSLT processor is called. How this is done depends on the processor and whether you call it from the command line or by program.