xsl: calltemplate с именем, предоставленным параметром - PullRequest
2 голосов
/ 19 сентября 2011

Я хотел бы вызвать шаблон на основе входящего параметра в таблицу стилей xsl.

Использование параметра в атрибуте имени не удается, поскольку $ недопустимо в контексте.Означает ли это, что я должен использовать xsl: выбрать, чтобы выполнить это?

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Если вы хотите вызывать шаблоны, выбранные динамически, то вы обычно можете сделать это, используя 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]">

И, если необходимо, передать элемент контекста в качестве параметра.

Однако, если бы мы знали больше о проблеме, которую вы пытаетесь решить, мы могли бы предложить лучший способ ее решения..

1 голос
/ 19 сентября 2011

Если вы не используете процессор XSLT, такой как коммерческая версия Saxon 9, где у вас есть инструкция расширения, такая как http://www.saxonica.com/documentation/extensions/instructions/call-template.xml, вам нужно будет использовать xsl: выбирать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...