Подтвердить что ты не робот

Разница между xsl: param и xsl: variable

Я рассматриваю один из них, который следует использовать при определении xsl: template name = myTemplate, который будет вызываться в другом файле xsl.

устаревший код, похоже, использует "xsl: variable" при использовании в xsl: template match = "legacyTemplate"

так какая разница между xsl: param и xsl: variable при использовании в xsl: template name = myTemplate?

4b9b3361

Ответ 1

Разница в том, что значение xsl:param может быть устанавливается вне контекста, в котором он объявлен. Например, см:

<xsl:template ...>
   <xsl:param name="p" select="'x'" />
   <xsl:variable name="v" select="'y'" />
...

то вы знаете, что $v всегда даст вам строку 'y'. Но для $p строка 'x' является только значением по умолчанию: вы увидите другое значение, если шаблон вызывается с помощью xsl:apply-templates или xsl:call-template, который содержит инструкцию таких как:
 <xsl:with-param name="p" select="'not x'" />

<xsl:param> также может использоваться вне xsl:template, на верхнем уровне в таблица стилей. Значение такого параметра может быть установлено, когда Вызывается XSLT-процессор. Как это делается, зависит от процессора и вы вызываете это из командной строки или программы.