This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Calling a template dynamically?


>
>
>
>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:variable>
><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> *
    </xsl:call-template>

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:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]