Elemento <xsl:with-param>
Passa un parametro a un modello.
<xsl:with-param
name = QName
select = Expression
</xsl:with-param>
Attributi
name
Obbligatorio. Nomi completi (XSLT) del parametro.select
Espressioni (XSLT) che deve corrispondere al contesto corrente. Non è previsto alcun valore predefinito. Se il contenuto non è disponibile, verrà generata una stringa vuota.
Informazioni sull'elemento
Numero di occorrenze |
Illimitato |
Elementi padre |
|
Elementi figlio |
xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable |
Note
L'attributo name è obbligatorio. Specifica il nome del parametro. Il parametro è la variabile con cui sostituire il valore dell'associazione.
L'elemento <xsl:with-param> è consentito sia in <xsl:call-template> che in <xsl:apply-templates>.
Il valore del parametro viene specificato come in <xsl:variable> e <xsl:param>.
Il nodo corrente e l'elenco di nodi corrente utilizzati per calcolare il valore specificato dall'elemento <xsl:with-param> corrispondono a quelli utilizzati per l'elemento <xsl:apply-templates> o <xsl:call-template> di cui fanno parte.
Se si passa un parametro x a un modello che non dispone di un elemento <xsl:param> per x, non si verifica alcun errore e il parametro viene semplicemente ignorato.
Esempio
In un foglio di stile può essere utilizzato il seguente approccio per chiamare le stringhe di messaggio localizzate.
I messaggi per una lingua somelanguage sono archiviati in un file XML, resources/languageabbreviation.xml, come indicato nel seguente file XML di esempio.
File XML (app.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?>
<showmsg>
<msg23/>
</showmsg>
File di risorse XML (resources/en.xml)
<?xml version='1.0'?>
<messages>
<message name="msg23">Error 23: The drive is full.</message>
<message name="msg42">Error 42: The file is not found.</message>
</messages>
File XSLT (showlocmsg.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- These 2 elements effectively assign
$messages = resources/en.xml/<messages>,
then $messages is used in the "localized-message" template. -->
<xsl:param name="lang">en</xsl:param>
<xsl:variable name="messages"
select="document(concat('resources/', $lang, '.xml'))/messages"/>
<xsl:template name="msg23" match="msg23">
<xsl:call-template name="localized-message">
<xsl:with-param name="msgcode">msg23</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="localized-message">
<xsl:param name="msgcode"/>
<!-- Show message string. -->
<xsl:message terminate="yes">
<xsl:value-of select="$messages/message[@name=$msgcode]"/>
</xsl:message>
</xsl:template>
</xsl:stylesheet>
Output
L'output formattato è il seguente:
L'output del processore è il seguente:
<?xml version="1.0" encoding="UTF-16"?>