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 |
|
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:
Este es el resultado del procesador:
<?xml version="1.0" encoding="UTF-16"?>