Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Call template twice

File: Data.xml <chapter>   <title>Chapter 1</title>   <para>para1</para>   <para author="ar">para2</para>   <section>     <title>Chapter 1, Section 1</title>     <para>para3</para>     <para>line 1</para>   </section> </chapter> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:template name="titles">     <xsl:param name="headerElement">h4</xsl:param>     <xsl:element name="{$headerElement}">       <xsl:apply-templates />     </xsl:element>   </xsl:template>   <xsl:template match="chapter/title">     <xsl:call-template name="titles">       <xsl:with-param name="headerElement">h1</xsl:with-param>     </xsl:call-template>   </xsl:template>   <xsl:template match="section/title">     <xsl:call-template name="titles">       <xsl:with-param name="headerElement" select="'h2'" />     </xsl:call-template>   </xsl:template>   <xsl:template match="para">     <p>       <xsl:apply-templates />     </p>   </xsl:template>   <xsl:template match="chapter">     <html>       <body>         <xsl:apply-templates />       </body>     </html>   </xsl:template> </xsl:stylesheet> Output: <html>    <body>                <h1>Chapter 1</h1>                <p>para1</p>                <p>para2</p>                           <h2>Chapter 1, Section 1</h2>                  <p>para3</p>                  <p>line 1</p>                    </body> </html>