Re: [xsl] dynamic template invocation

Subject: Re: [xsl] dynamic template invocation
From: Vyacheslav Sedov <vyacheslav.sedov@xxxxxxxxx>
Date: Mon, 7 Sep 2009 10:17:13 +0400
http://www.saxonica.com/documentation9.2/extensions/instructions/call-templat
e.html

On Mon, Sep 7, 2009 at 10:06 AM, ac<ac@xxxxxxxxxxxxx> wrote:
> Hi,
>
> Is there, or shouldn't there be, a way to invoke templates dynamically as
> in:
>
> <xsl:apply-templates mode="$mode"/> or
> <xsl:call-template name="$name"/>
>
> rather than :
> <xsl:choose>
>   <xsl:when test="$mode eq 'mode1'"><xsl:apply-templates mode="mode1"/>
>   <xsl:when test="$mode eq 'mode2'"><xsl:apply-templates mode="mode2"/>
>   <xsl:when test="$mode eq 'mode3'"><xsl:apply-templates mode="mode3"/>
>   ...
> </xsl:choose>
> or
> <xsl:choose>
>   <xsl:when test="$mode eq 'mode1'"><xsl:call-template name="name1"/>
>   <xsl:when test="$mode eq 'mode2'"><xsl:call-template name="name2"/>
>   <xsl:when test="$mode eq 'mode3'"><xsl:call-template name="name3"/>
>   ...
> </xsl:choose>
>
> as the <xsl:choose/> seems clumsy, verbose, repetitive, error-prone, and
> counter productive,
> especially when also passing invocation parameters (<xsl:with-param .../>)
?
>
> A sample use case may be letting a user select in which mode she wishes to
> run a process, payroll for example, in trial, debug, report, post, archive,
> or purge modes.
>
> Thanks,
> ac

Current Thread