2012-08-07 16 views
27

sto prendendo in considerazione uno dei due da utilizzare quando si definisce un xsl: template name = myTemplate che verrà chiamato in un altro file xsl.differenza tra xsl: param e xsl: variabile

codice legacy sembra usare 'xsl: variable' quando viene utilizzato in xsl: template match = "legacyTemplate"

Allora qual è la differenza tra xsl: param e xsl: variable quando viene utilizzato in xsl: nome del modello = MyTemplate?

risposta

44

La differenza è che il valore di un xsl:param potrebbe essere impostato al di fuori del contesto in cui è stato dichiarato. Ad esempio, si veda :

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

poi si sa che $v vi darà sempre la stringa 'y'. Ma per $p la stringa 'x' è soltanto un default: si vedrà un valore diverso se il modello viene richiamato sia con xsl:apply-templates o xsl:call-template che contiene un'istruzione come ad esempio:
<xsl:with-param name="p" select="'not x'" />

<xsl:param> può anche essere utilizzato al di fuori xsl:template, al livello superiore in il foglio di stile. Il valore di tale parametro può essere impostato quando viene chiamato il processore XSLT . Il modo in cui questo viene fatto dipende dal processore e dal fatto che lo si chiami dalla riga di comando o dal programma.