with-param
El elemento with-param
permite definir el valor de un parámetro que será pasado a una plantilla.
La estructura de este elemento es la siguiente:
<xsl:with-param name="nombre" select="expresion-xpath"/>
Donde:
name
es un atributo obligatorio que especifica el nombre del parámetro.select
es un atributo opcional que define el valor del parámetro mediante una expresión XPath.
Valores de atributos
name
El valor del atributo name
tiene que coincidir con el atributo name
de un elemento param
. En el caso de que no exista esa asociación, el elemento with-param
será ignorado.
Un ejemplo completo de su uso sería el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<ul>
<xsl:for-each select="catalogo/cd">
<xsl:call-template name="mostrar-titulo">
<xsl:with-param name="titulo" select="titulo" />
</xsl:call-template>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
<xsl:template name="mostrar-titulo">
<xsl:param name="titulo" />
<li>Título: <xsl:value-of select="$titulo"/></li>
</xsl:template>
</xsl:stylesheet>
Consideremos que tenemos el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="hoja.xsl"?>
<catalogo>
<cd>
<titulo>Thriller</titulo>
<artista>Michael Jackson</artista>
</cd>
<cd>
<titulo>The Wall</titulo>
<artista>Pink Floyd</artista>
</cd>
<cd>
<titulo>Abbey Road</titulo>
<artista>The Beatles</artista>
</cd>
</catalogo>
En ese caso, la transformación XSLT daría como resultado un documento HTML:
<!DOCTYPE html>
<html>
<body>
<ul>
<li>Título: Thriller</li>
<li>Título: The Wall</li>
<li>Título: Abbey Road</li>
</ul>
</body>
</html>
El documento HTML se visualizaría de la siguiente manera:
Probar en el navegador