RE: [xsl] calling a template and xsl:include

Subject: RE: [xsl] calling a template and xsl:include
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 23 Sep 2004 16:57:20 +0100
> I have 2 questions:
> I remember that I once saw somewhere a snippet of XSLT code about
> calling a template having the name in a variable, something like this:
> 
> <xsl:call-template select="$tempalteToCall"/>
> 
> As far as I know this can't be done with XSLT 1.0, but there was a
> work-around to do so. 

Correct it can't be done in XSLT 1.0.

Saxon has an extension saxon:call-template that does this.

But there is a workaround that doesn't need extensions: it's a technique
introduced by Dimitre Novatchev in his FXSL library. Essentially, if you
have a template

<xsl:template name="x">

then add a match pattern:

<xsl:template name="x" match="dynamic:x"/>

Define a variable whose value is a node:

<xsl:variable name="dynamic:x"><dynamic:x/></xsl:variable>

Now you can define a variable:

<xsl:variable name="templateToCall" select="$dynamic:x/*"/>

and do:

<xsl:apply-templates select="$templateToCall"/>

which in this case will call the template dynamic:x, but can be adapted to
call whatever template the variable templateToCall is set to.

Michael Kay
http://www.saxonica.com/  


Any one know how to do that or where to find
> info about that? It would help.
> 
> The other question is about performance. I use many xsl:include and I
> would like to know if this could cause some notable performance issue
> on the processor?
> 
> Thanks.
> Bye
> 
> Francesco.
> -- 
> www.GetFirefox.com !!

Current Thread