• doctype-system
(необязательный). Определяет системный идентификатор, который будет использован в объявлении
вывода. Устанавливается в строковое значение;
• encoding
(необязательный). Задает кодировку символов. Устанавливается в строковое значение;
• indent
(необязательный). Определяет выравнивание вывода для отображения структуры вложенности. Устанавливается в «yes» или «no»;
• media-type
(необязательный). Задает тип MIME вывода. Устанавливается в строковое значение;
• standalone
(необязательный). Определяет, нужно ли включать в вывод отдельное объявление, и если да, задает его значение. Устанавливается в «yes» или «no».
Этот элемент содержит тело шаблона.
В следующем примере, основанном на упрощенной таблице стилей, я создаю в документе HTML две рамки (frame), и два HTML-документа, которые будут в них отображаться, frame1.html
и frame2.html
. Первую рамку и документ, который в ней появится, frame1.html
, я создам при помощи следующим образом (заметьте, что здесь я устанавливаю атрибут version в «1.1», поскольку мы используем возможность, входящую только в рабочий проект XSLT 1.1, но «1.1», вероятно, не будет правильным значением атрибута version
в долгосрочном периоде; если элемент будет включен в XSLT 2.0, версию следует установить в «2.0»):
Two Frames
This is frame 1.
.
.
.
После этого я могу создать вторую рамку и документ для вывода в нее, frame2.html
(листинг 6.10).
Листинг 6.10. Применение
Two Frames
This is frame 1.
This is frame 2.
ПРИМЕР ТОЛЬКО ДЛЯ XSLT 1.1
Обратите внимание на то, что этот пример предназначен только для рабочего проекта XSLT 1.1. Ни один из известных мне доступных процессоров XSLT пока не обрабатывает элемент .
Элемент : создание объявлений пространств имен
В XSLT 2.0 включен еще один новый элемент: , позволяющий добавлять в результирующий документ объявления пространств имен. Однако на текущий момент больше об этом элементе ничего не известно, так что я не могу дать здесь более подробную информацию. Следите за web-узлом W3C.
Элемент : создание наборов атрибутов
Иногда при создании нового элемента возникает потребность добавить в него сразу несколько атрибутов. Существует простой способ сделать это при помощи элемента . У этого элемента два атрибута:
• name
(обязательный). Имя набора атрибутов. Устанавливается в QName
;
• use-attribute-sets
(необязательный). Имена других наборов атрибутов, которые вы хотите включить в этот набор. Устанавливается в список QName
, разделенных символами-разделителями.
Элемент содержит элементы , по одному для каждого нового создаваемого атрибута. При использовании для создания нового набора атрибутов элемента нужно задать имя набору. Затем при создании нового элемента для использования набора атрибутов это имя можно присваивать атрибуту use-attribute-sets
элементов , , и даже самого элемента .
Ранее в текущей главе мы уже рассматривали один пример применения наборов атрибутов в JavaScript при создании шаблона. В том примере я при помощи набора атрибутов задавал все атрибуты HTML-кнопок планет и затем создавал их, используя этот набор атрибутов в элементе :
BUTTON
()
В результирующем документе такой набор атрибутов был добавлен каждой кнопке HTML:
<���Р></Р>
|
|
|
|
|
|
|
|
.
.
.
После этого я устанавливаю нужные правила шаблона (листинг 6.13), оба для режима обработки « fancy
», который выделяет выходные данные полужирным, и не задаю никакого специального режима обработки.
Листинг 6.13. Применение режимов
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
|
|
|
|
|
|
|
|
Вот результат. Заметьте, что одни только данные Земли выделены полужирным:
The Fancy Planets Table
The Fancy Planets Table
</Н1>
Name |
Mass |
Radius |
Day |
Mercury |
.0553 (Earth = 1) |
1516 miles |
58.65 days |
Venus |
.815 (Earth = 1) |
3716 miles |
116.75 days |
Earth |
1 (Earth = 1) |
2107 miles |
1 days |
Этот документ показан на рис. 6.4.
Читать дальше