[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: xsl:call-template question
Subject: Re: xsl:call-template question
From: Gerard Berthet <gberthet@xxxxxxxxxxxxxxx>
Date: Wed, 16 Feb 2000 23:04:09 -0800
|
Here is the way I would solve it.
Regards,
Gerard
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- / Template -->
<xsl:variable name="nexttemplate">1</xsl:variable>
<xsl:template match="/">
<HTML>
<xsl:call-template name="buildpage">
<xsl:with-param name="nexttemplate">buildbody</xsl:with-param>
</xsl:call-template>
</HTML>
</xsl:template>
<!-- buildpage Template -->
<xsl:template name="buildpage">
<xsl:param name="nexttemplate">defaulttemplate</xsl:param>
Invoking <xsl:value-of select="$nexttemplate"/>
<xsl:choose>
<xsl:when test="$nexttemplate = 'buildbody'">
<xsl:call-template name="buildbody"/>
</xsl:when>
<xsl:when test="$nexttemplate = ''">
<xsl:call-template name="defaulttemplate"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="defaulttemplate">
In defaulttemplate
</xsl:template>
<!-- buildbody Template -->
<xsl:template name="buildbody">
<BODY>
</BODY>
</xsl:template>
</xsl:stylesheet>
At 11:36 AM 2/16/00 -0800, you wrote:
Hello,
Is it possible to call a template and pass in as a parameter the name of
the template you would like the called template to call?
Here's a (non-working) example of what I am trying to do:
<!-- / Template -->
<xsl:template match="/">
<HTML>
<xsl:call-template name="buildpage">
<xsl:with-param name="nexttemplate">buildbody</xsl:with-param>
</xsl:call-template>
</HTML>
</xsl:template>
<!-- buildpage Template -->
<xsl:template name="buildpage">
<xsl:param name="nexttemplate">defaulttemplate</xsl:param>
<xsl:value-of select="$nexttemplate"/>
<xsl:call-template name="{$nexttemplate}"/>
</xsl:template>
<!-- buildbody Template -->
<xsl:template name="buildbody">
<BODY>
</BODY>
</xsl:template>
I get the error "No named template "{$nexttemplate}" found" when the line
<xsl:call-template name="{$nexttemplate}"/>
is processed. I am able to get the value of $nexttemplate though...
Thanks in advance for any help you can give me.
Joni
==========================
Gerard Berthet
XML Networks, Inc.
Email: gberthet@xxxxxxxxxxxxxxx
http://www.xmlnetworks.com
Tel: +1 (408) 356 - 5549
Cell: +1 (408) 218 - 1178
Fax: +1 (408) 356 - 0136
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|