Если вы хотите вызывать шаблоны, выбранные динамически, то вы обычно можете сделать это, используя xsl: apply-templates вместо xsl: call-template.Один из самых общих способов сделать это состоит в том, чтобы изменить каждый
<xsl:template name="n">
на
<xsl:template name="n" match="xsl:template[@name='n']">
, а затем изменить недействительный
<xsl:call-template name="$x"/>
на законный
<xsl:apply-templates select="document('')/*/xsl:template[@name=$x]">
И, если необходимо, передать элемент контекста в качестве параметра.
Однако, если бы мы знали больше о проблеме, которую вы пытаетесь решить, мы могли бы предложить лучший способ ее решения..