RE: [xsl] call-template error

Subject: RE: [xsl] call-template error
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 28 May 2007 13:01:13 +0100
The name of a template being called must be a fixed string, just as when you
call a function or method in languages like C or Java. Variables can only be
used in XPath expressions, and the name attribute of call-template is not an
XPath expression.

You can often achieve a dynamic call by using apply-templates to some
suitable node.

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

> -----Original Message-----
> From: Vaduvoiu Tiberiu [mailto:vaduvoiutibi@xxxxxxxxx] 
> Sent: 28 May 2007 11:24
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] call-template error
> 
> On my site I have a couple of categories/menus. Each time 
> you're in a category it loads a different template(content) I 
> have a parameter $menu which has the value of the name of the 
> menu you are at on the site. So until now I had something like this:
> 
> <xsl:if test="$menu= sport">
> <xsl:call-template name="toolbox_sport"></xsl:call-template>
> </xsl:if>
> <xsl:if test="$menu= 'news">
> <xsl:call-template name="toolbox_news"></xsl:call-template>
> </xsl:if>
> <xsl:if test="$menu= recent">
> <xsl:call-template name="toolbox_recent"></xsl:call-template>
> </xsl:if>
> <xsl:if test="$menu= test">
> <xsl:call-template name="toolbox_test"></xsl:call-template>
> </xsl:if>
> 
> like this, it works. But then I though of making it more 
> simple like this:
> 
> <xsl:call-template name="toolbox_$menu"></xsl:call-template> 
> so basically it should only loads the template of the 
> selected menu. Thing is it doesn't work..I get 
> java.util.EmptyStackException:
> 
> I also tried creating a variable
> <xsl:variable name="tool">toolbox_<xsl:value-of 
> select="$menu"/></xsl:variable> and then calling the template 
> with the name="$tool"..also doesn't work. So why doesn't he 
> load it?? 10x
> 
> 
>        
> ______________________________________________________________
> ______________________Take the Internet to Go: Yahoo!Go puts 
> the Internet in your pocket: mail, news, photos & more. 
> http://mobile.yahoo.com/go?refer=1GNXIC

Current Thread