Subject: RE: 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 !!
|