Повторное использование вложенных шаблонов XSL - PullRequest
1 голос
/ 27 января 2012

Я пытаюсь повторно использовать шаблон XSL и помещать другие шаблоны в этот шаблон несколько раз.

Вот пример моего кода:

<xsl:template name="wrapper">
    <div>
        <xsl:apply-templates/>
    </div>
</xsl:template>

<xsl:template name="template1"></xsl:template>
<xsl:template name="template2"></xsl:template>

Итак, теперь я хочу применить как шаблон 1, так и шаблон 2 внутри шаблона 'обертка', что-то вроде этого (я знаю, что это не тот код, но идея есть):

<xsl:template name="template1">
    <xsl:template match="wrapper">
    <!--code here-->
    </xsl:template>
</xsl:template>
<xsl:template name="template2">
    <xsl:template match="wrapper">
    <!--code here-->
    </xsl:template>
</xsl:template>

Любая помощь в этом была бы признательна.

Ответы [ 2 ]

8 голосов
/ 27 января 2012

Синтаксически незаконно вкладывать определение шаблона в другое .

Согласно спецификации W3C XSLT (как 1.0, так и 2.0), xsl:template должен быть дочерним элементом верхнего элемента xsl:stylesheet.

Это означает, что все шаблоны в модуле таблицы стилейдолжны быть братьями и сестрами.

Способ вызова именованного шаблона состоит в использовании команды xsl:call-template, подобной этой :

<xsl:call-template name="someTemplateName">
 <!-- Possibly place one or more `xsl:with-param` elements here -->
</xsl:call-template>

Однако, имейте ввиду, что :

Это хороший стиль и больше в духе XSLT для использования неназванных шаблонов (которые имеют атрибут match)и выбрать наиболее подходящий шаблон с инструкцией xsl:apply-templates .

. Большинство ответов на вопросы SO XSLT демонстрируют использование xsl:apply-templates.

.
0 голосов
/ 27 января 2012

Итак, теперь я хочу применить и шаблон 1, и шаблон 2 внутри шаблона 'обертка',

Если я понимаю это буквально:

<xsl:template name="wrapper">
  <xsl:call-template name="template1" />
  <xsl:call-template name="template2" />
</xsl:template>

НоУ меня сильное чувство, что ты как-то стреляешь себе в ногу здесь.

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