Elemento <xsl:with-param>

Pasa un parámetro a una plantilla.

<xsl:with-param
  name = QName
  select = Expression
</xsl:with-param>

Atributos

  • select
    Una Expresiones para comparar con el contexto actual. No existe ningún valor predeterminado. Se genera una cadena vacía si no hay contenido.

Información del elemento

Número de apariciones

Ilimitado

Elementos primarios

xsl:apply-templates, xsl:call-template

Elementos secundarios

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

Comentarios

El atributo name es necesario. Especifica el nombre del parámetro. El parámetro es la variable el valor de cuyo enlace va a sustituirse.

El elemento <xsl:with-param> está permitido dentro de <xsl:call-template> y <xsl:apply-templates>.

El valor del parámetro se especifica de la misma forma que para <xsl:variable> y <xsl:param>.

El nodo actual y la lista de nodos actual utilizados para calcular el valor especificado por el elemento <xsl:with-param> es el mismo que el que se utiliza para el elemento <xsl:apply-templates> o <xsl:call-template> dentro del que ocurre.

Si pasa un parámetro x a una plantilla que no tiene un elemento <xsl:param> para x, no es un error; el parámetro simplemente se ignora.

Ejemplo

Una hoja de estilos puede utilizar el siguiente método para llamar a cadenas de mensaje localizadas.

Los mensajes para un idioma algúnidioma se almacenan en un archivo XML, resources/languageabbreviation.xml, en el formulario que aparece en el archivo XML de ejemplo a continuación.

Archivo XML (app.xml)

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="showlocmsg.xsl" ?>
<showmsg>
   <msg23/>
</showmsg>

Archivo de recursos 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>

Archivo 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>

Resultados

Este es el resultado con formato:

Salida de ejemplo

Este es el resultado del procesador:

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

Consulte también

Referencia

Elemento <xsl:call-template>
Elemento <xsl:variable>
Elemento <xsl:param>
Elemento <xsl:template>