Compartir a través de


Elemento <xsl:with-param>

Pasa un parámetro a una plantilla.

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

Atributos

  • name
    Obligatorio.Nombres completos del parámetro.

  • select
    Una Expresiones (XML) 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 cuyo valor de 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> son iguales a los utilizados 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 omite.

Ejemplo

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

Los mensajes para un idioma somelanguage se almacenan en un archivo XML, resources/languageabbreviation.xml, en el formato que se muestra en el siguiente archivo XML de ejemplo.

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"?>

Vea también

Referencia

Elemento <xsl:call-template>

Elemento <xsl:variable>

Elemento <xsl:param>

Elemento <xsl:template>