Call a template with parameter : template match « XSLT stylesheet « XML






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

1.Define and use template
2.Locate parent tags and get value from children tags
3.Select value from an element with value-of
4.Get two values in one template
5.match an element
6.output in template
7.set match mode to fulltext
8.match and get value operations with namespace
9.template mode="index"
10.template with parameters
11.output a table without loop