Call a template with parameter
File: Data.xml
<?xml version="1.0"?>
<programme>
<opera>
<title>A</title>
<composer>B</composer>
<date>1791</date>
</opera>
<composer name="Mozart">
<fullname>Mozart</fullname>
<born>1756</born>
<died>1791</died>
</composer>
</programme>
File: Transform.xslt
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:variable name="list">
<xsl:call-template name="make-list">
<xsl:with-param name="names"
select="/programme/composer/fullname" />
</xsl:call-template>
</xsl:variable>
This week's composers are:
<xsl:value-of select="translate($list, ',', ';')" />
</xsl:template>
<xsl:template name="make-list">
<xsl:param name="names" />
<xsl:for-each select="$names">
<xsl:value-of select="." />
<xsl:if test="position()!=last()">,</xsl:if>
<xsl:if test="position()=last()-1">and</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?>
This week's composers are:
Related examples in the same category