2012-08-07 15 views
27

Ich erwäge, eine zu verwenden, wenn Sie eine xsl: template name = myTemplate definieren, die in einer anderen xsl-Datei aufgerufen wird.Unterschied zwischen xsl: param und xsl: variable

Legacy-Code scheint 'xsl: Variable' zu verwenden, wenn in xsl verwendet: template match = "legacyTemplate"

so was ist der Unterschied zwischen xsl: param und xsl: variable, wenn es in xsl: template name = meinTemplate?

Antwort

44

Der Unterschied ist, dass der Wert eines xsl:param außerhalb des Kontexts gesetzt werden kann, in dem es deklariert ist. Zum Beispiel siehe:

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

dann wissen Sie, dass $v Sie immer 'y' die Zeichenfolge geben. Aber für $p die Zeichenfolge 'x' ist nur ein Standard: Sie einen anderen Wert sehen, ob die Vorlage mit aufgerufen wird entweder xsl:apply-templates oder xsl:call-template, die eine Anweisung enthält wie:
<xsl:with-param name="p" select="'not x'" />

<xsl:param> kann auch im Freien verwendet werden xsl:template, auf der obersten Ebene in das Stylesheet. Der Wert eines solchen Parameters kann eingestellt werden, wenn der XSLT-Prozessor aufgerufen wird. Wie das gemacht wird, hängt vom Prozessor ab und davon, ob Sie es von der Kommandozeile oder vom Programm aufrufen.