Элементы таблиц стилей высокого уровня
В XSL определен ряд элементов высокого уровня, которые могут быть прямыми дочерними элементами <xsl:stylesheet>
:
• <xsl:attribute-set>
;
• <xst:decimal-format>
;
• <xsl:import>
;
• <xsl:include>
;
• <xsl:key>
;
• <xsl:namespace-alias>
;
• <xsl:output>
;
• <xsl:param>
;
• <xsl:preserve-space>
;
• <xsl:strip-space>
;
• <xsl:template>
;
• <xsl:variable>
.
Рабочий проект XSLT 1.1 добавляет еще один элемент высокого уровня:
• <xsl:script>
В книге мы поработаем со всеми этими официальными элементами XSLT высокого уровня.
Заметьте, что, в дополнение ко всем элементам высокого уровня, вы можете также повсюду использовать обычные комментарии XML, поскольку таблицы стилей XSLT являются также документами XML:
<?xml version='1.0'?>
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<!-- Этот шаблон содержит все элементы PLANETS -->
<xsl:template match='/PLANETS'>
<HTML>
<HEAD>
.
.
.
В дополнение к официальным элементам высокого уровня, некоторые процессоры XSLT определяют свои собственные элементы высокого уровня, использующие пространства имен, отличающиеся от пространства имен XSL. Функциональность таких элементов полностью определяется разработчиком процессора XSLT.
Вы также можете определять собственные элементы высокого уровня, называемые «элементами высокого уровня, определенными пользователем». Эти элементы должны иметь пространство имен, отличное от XSL и элементов, определенных разработчиком процессора. Процессор XSLT игнорирует определенные пользователем элементы высокого уровня; но, поскольку вы способны сами получить доступ ко всему документу при помощи функции документа (как мы увидим в главе 8), вы можете самостоятельно работать с этими элементами.
Из всех элементов высокого уровня самым популярным является элемент <xsl:template>
:
<?xml version='1.0'>
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template>
.
.
.
</xsl:template>
.
.
.
Создание шаблонов и работа с ними — суть XSLT, и сейчас мы рассмотрим этот элемент, продолжая создавать таблицу planets.xsl
.
Элемент <xsl:template>
Шаблоны XSL позволяют задать способ выполнения вашего преобразования. Каждый элемент <xsl:template>
устанавливается для выбора одного узла (который может содержать другие узлы) или ряда узлов в исходном документе, а также точного указания способа преобразования этого узла. В следующем списке перечислены атрибуты <xsl:template>
:
• match
(необязательный). Задает шаблон, выбирающий обрабатываемые узлы. Устанавливается в допустимый шаблон;
• name
(необязательный). Содержит имя шаблона, что разрешает его вызов. Если вы не используете этот атрибут, вы должны использовать атрибут match
. Принимает значение типа QName
;
• priority
(необязательный). Положительное или отрицательное целое или действительное число, задающее приоритет шаблона. Используется, когда один и тот же узел удовлетворяет нескольким шаблонам. Устанавливается в число;
• mode
(необязательный). Если вы применяете <xsl:apply- templates>
к множеству узлов, будут использоваться только шаблоны с совпадающим режимом (mode). Принимает значение типа QName
.
Каждый такой элемент <xsl:template>
называется правилом (rule). В общем случае элемент <xsl:template>
может содержать ноль или более элементов <xsl:param>
(как мы увидим в главе 9), за которыми следует тело шаблона, задающего способ осуществления преобразования.
Тела шаблонов
Шаблоны формируются по жестко заданным правилам. Они способны содержать элементы <xsl:param>
, за которыми следует тело шаблона; в последнем могут содержаться данные PCDATA
, инструкции XSLT, элементы расширения и элементы буквального результата.
Инструкции XSLT
В теле шаблона может присутствовать ряд элементов XSLT, называемых инструкциями:
• <xsl:apply-imports>
;