Re: [xsl] Calling a template dynamically?

Subject: Re: [xsl] Calling a template dynamically?
From: Alessio Mazzieri <mazzieri@xxxxxxxxxxx>
Date: Tue, 13 Nov 2001 15:36:23 +0100

Hello everybody, I'm trying to call a template whose name is in the XML file that I'm parsing. Example: XML file contains a tag like: ... <label>sample</label> ...

And I want to call the template "sample".

Therefore I think that I would need to do something like:
<xsl:variable name="templatename">
<xsl:value-of select="label"/>
<xsl:call-template name="$templatename">

but this doesn't work, as it doesn't the following:

<xsl:call-template name="{$templatename}">

I think it's not possibile, in fact, from the XSL documentation, this is the sintax of <xsl:call-template>:

   <xsl:call-template name=QName>
       <xsl:with-param> *

So, the "name" attribute must be a valid QName, not an Expression.
I've had the same problem, and I've resolved it using a "static" template, calling it with a param whose value is the "dynamic" name of the node.
Then, the template, with <xsl:choose>, select the appropriate transformation to apply.

Other solutions?

Alessio Mazzieri

XSL-List info and archive:

Current Thread