Recursive Templates

Subject: Recursive Templates
From: Michael Stillwell <mjs@xxxxxxxxx>
Date: Mon, 2 Aug 1999 03:12:41 +1000 (EST)
I've just started using XSL and am wondering how to achieve the
transformation such as the following.  I want to transform

  <section>Introduction</section>
  
into (say)

  <caps><strong>Introduction</strong></caps>
  
My first attempt used templates like

  <xsl:template match="emph" name="emph">
  <strong>
  <xsl:apply-templates/>
  </strong>
  </xsl:template>

  <xsl:template match="section">
  <caps>
  <emph>
  <xsl:apply-templates/>
  </emph>
  </caps>
  </xsl:template>

Unfortunately, the <emph> ... </emph> tags produced but the "section"
template are not transformed into <strong> ... </strong> tags.  I
more or less understand why this is, but the best set of templates I
have found that do what I want are

  <xsl:template match="emph" name="emph">
  <strong>
  <xsl:copy-of select="$content"/>
  </strong>
  </xsl:template>

  <xsl:template match="section">
  <caps>
  <xsl:call-template name="emph">
    <xsl:with-param name="content">
      <xsl:apply-templates/>
    </xsl:with-param>
  </xsl:call-template>  
  </caps>
  </xsl:template>

I cannot help but think there is a better way.


Michael

-- 
:::: mjs@xxxxxxxxx ::::::::::::::::::::::::::::: http://beebo.org ::::
:::: mjs@xxxxxxxxx ::::::::::::::::::::::::::::: http://beebo.org ::::
:::: mjs@xxxxxxxxx ::::::::::::::::::::::::::::: http://beebo.org ::::


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread