Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

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: