Книга: Технология XSLT
Именованные шаблоны
Разделы на этой странице:
Вместо того чтобы при помощи атрибута match
указывать, какая часть входящего документа должна преобразовываться данным шаблоном, ему можно присвоить имя и вызывать в любой момент вне зависимости от контекста преобразования. Такие шаблоны очень схожи по принципу с процедурами в императивных языках программирования — они позволяют выносить часто используемые части преобразований, передавать им параметры и вызывать вне зависимости от того, что именно обрабатывается в данный момент.
Имя шаблонному правилу присваивается атрибутом name элемента xsl:template
. После этого шаблону более необязательно иметь атрибут match
, теперь он может быть вызван просто по имени. Два шаблона с одним порядком импорта не могут иметь одинаковых имен. Если же одинаковые имена имеют шаблоны различного порядка импорта, шаблоны старшего порядка переопределяют младшие шаблоны
Пример
При генерации HTML-страниц часто встречающейся задачей является создание элемента head
. Элемент head
, как правило, содержит несколько элементов meta
, предоставляющих метаинформацию, элемент title
, который определяет название страницы и элемент link
, который связывает данную страницу с другими документами, например, с каскадными таблицами стилей (CSS).
Для того чтобы упростить процедуру генерации head
, мы можем вынести ее в отдельный именованный шаблон.
Листинг 5.5. Именованный шаблон для генерации элемента head
<xsl:template name="head">
<head>
<meta name="keywords" content="XSLT, XPath, XML"/>
<meta name="description"
content="This site is dedicated to XSLT and Xpath."/>
<title>XSLTdev.ru - XSLT developer resource</title>
<link rel="stylesheet" type="text/css" href="style/main.css"/>
</head>
</xsl:template>
Думается, этот шаблон не требует пояснений — он просто создает в входящем документе несколько элементов. Непонятным пока остается другое — как вызывать именованные шаблоны? Элемент xsl:apply-templates
явно не подходит, поскольку именованные шаблоны не обязаны иметь атрибут match
. Их выполнение производится элементом xsl:call-template
.
- Шаблоны убеждающих писем
- Именованные константы и макроопределения
- Шаблоны с выбором
- Глава 9 Именованные шаблоны, параметры и переменные
- 1.4 Именованные константы
- 3. Схемы отношений. Именованные значения кортежей
- Часть III. Шаблоны разработки через тестирование
- ГЛАВА 4 Именованные и неименованные каналы
- Шаблоны
- Вы пока не видите поведенческие шаблоны?
- 28. Шаблоны зеленой полосы
- Простые графические шаблоны