XSLT — страница 75 из 124

: применение именованных шаблонов

У элемента

есть атрибут
name
, задающий имя шаблона. Предположим, у меня есть элемент буквального результата, состоящий из двух элементов

и двух элементов

HTML, при помощи которого я создаю в документах HTML вертикальный разделитель:





Тогда я могу создать шаблон с именем «separator» (разделитель), использующий этот элемент буквального результата:





Это именованный шаблон — для его создания нужно только присвоить имя атрибуту name элемента

.

Заметьте, что этот шаблон не установлен для выбора чего-то конкретного. Для активизации шаблона необходимо вызвать его явно. Для этого служит элемент

, обладающий только одним атрибутом:

• 

name
(обязательный). Имя вызываемого шаблона, устанавливается в
QName
.

Следующий пример демонстрирует применение нашего шаблона «separator», для чего мне нужно было только вызвать его в соответствующих местах:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</code></pre></p><p><pre><code>     The Planets Table 

      The Planets Table

NameMassRadiusDay










Вот результат. Обратите внимание: элементы


и

были вставлены так, как требовалось:

</code></pre></p><p><pre><code>   The Planets Table</code></pre></p><p><pre><code>

   The Planets Table





NameMassRadiusDay
Mercury.0553 (Earth = 1)1516 miles58.65 days
Venus.815 (Earth = 1)3716 miles116.75 days
Earth1 (Earth = 1)2107 miles1 days





Результирующий документ показан на рис. 9.1.

Рис. 9.1. Вызов именованного шаблона


Таким образом, вы можете обращаться к элементу буквального результата по имени, легко помещая его в результирующий документ. Но это слишком статично — элемент буквального результата всегда один и тот же. Впрочем, как можно заметить, вызов именованного шаблона во многом похож на вызов подпрограммы в языке программирования. Так же, как вы передаете данные в подпрограмму, вы можете передать данные в именованные