Condividi tramite


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

xsl:apply-templates, xsl:call-template

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:

Esempio di output

L'output del processore è il seguente:

<?xml version="1.0" encoding="UTF-16"?>

Vedere anche

Riferimenti

Elemento <xsl:call-template>

Elemento <xsl:variable>

Elemento <xsl:param>

Elemento <xsl:template>