я не знаю, если это возможно, но мне интересно, как это сделать ...Как вызвать именованные шаблоны на основе переменной?
Допустим, мы имеем следующий XSL:
<xsl:template name="foo">
Bla bla bla
</xsl:template>
...
<xsl:template name="bar">
Bla bla bla
</xsl:template>
...
<xsl:template match="/">
<xsl:if test="$templateName='foo'">
<xsl:call-template name="foo"/>
</xsl:if>
<xsl:if test="$templateName='bar'">
<xsl:call-template name="bar"/>
</xsl:if>
</xsl:template>
Можно ли изменить XSL для читать что-то вроде ...
<xsl:template match="/">
<xsl:call-template name="$templateName"/>
</xsl:template>
Ах, но есть уродливый взлом, чтобы обойти это - см. Мой ответ. –
@Tomalak Это возможно (хотя в другой синтаксической форме) почти 8 лет :) См. Мой ответ для деталей. –