xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
В начале документа я также присваиваю это имя, "stylesheet", атрибуту href
элемента :
Теперь процессору XSLT известно, какой элемент я хочу использовать в качестве таблицы стилей — элемент с ID "stylesheet". Но что это за элемент? Элементы XML формируют элементы типа ID в объявлениях DTD или схемах XML, и, как вы помните, информация объявлений DTD и схем пока еще не передается процессору XSLT.
Некоторые процессоры XSLT, такие как Saxon, читают объявление DTD, если оно есть, для определения атрибутов, обладающих типом ID, поэтому я включил DTD в embedded.xml
(листинг 2.8).
Листинг 2.8. planets.xml со встроенной таблицей стилей
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
xmlns:xsl="http //www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
|
|
|
|
Следует отметить еще одно: включив всю таблицу стилей в файле embedded.xml
в элемент , я должен был предоставить шаблон таблицы стилей для элемента . (Если бы я этого не сделал, текст из текстовых узлов таблицы стилей был бы скопирован в результирующий документ, — это обсуждается в главе 3 в разделе, посвященном правилам по умолчанию для шаблонов.) Я оставил этот элемент пустым, поместив в конце таблицы стилей в embedded.xml
следующую строку, поэтому из самой таблицы стилей в результирующий документ ничего не копируется:
Теперь в Saxon я могу из embedded.xml
создать planets.html
. В Windows для указания того, что используется встроенная таблица стилей, в Saxon служит параметр -а
:
C:\planets>saxon -a embedded.xml > planets.html
Другой способ вставить таблицы стилей внутрь других документов — использовать элемент , позволяющий включить содержимое файла в определенное место в таблице стилей. У этого элемента только один атрибут:
• href
(обязательный). URI таблицы стилей, которую вы хотите включить.
Этот элемент пустой и не обладает никаким содержимым.
Рассмотрим листинг 2.9. В этом случае я помещу часть таблицы стилей из planets.xsl
в новый документ, rules.xml
. Затем я смогу включить rules.xml
в planets.xsl
.
Листинг 2.9. Включение таблицы стилей
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
А вот как выглядит rules.xsl
(листинг 2.10). Обратите внимание на то, что это полный документ XSL с объявлением XML и элементом .
Листинг 2.10. rules.xsl
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
|
Вот как это работает. Кроме , для вставки таблиц стилей или фрагментов таблицы стилей можно также применять .
НОВШЕСТВА В XSLT 2.0
Один из аспектов, которые явно войдут в XSLT 2.0, следующий — включаемые документы могут использовать свои собственные таблицы стилей. Например, если вы включите документ, написанный на XML языке MathML, этот включенный документ должен иметь возможность использовать свою собственную таблицу стилей.
Так же как и , позволяет вставить таблицу стилей или фрагмент таблицы стилей в другую таблицу стилей. И так же, как , у есть только один атрибут:
• href
(обязательный). URI включаемой таблицы стилей.
И так же, как , пуст и не имеет содержимого. В чем же тогда разница между ними? Разница заключается в старшинстве импорта (import precedence).
Порядок включения дает процессору XSLT способ разрешения; конфликтов, которые могут возникнуть, например, когда двум правилам соответствует один и тот же узел. Старшинство импортируемой таблицы стилей или фрагмента таблицы меньше, чем старшинство таблицы стилей, которая ее импортирует. Если вы импортируете несколько таблиц стилей или фрагментов таблицы стилей, первая из них будет обладать меньшим старшинством, чем импортируемая вслед за ней, которая в свою очередь будет обладать меньшим старшинством, чем следующая, и т.д.
В остальном, однако, импорт таблицы стилей или фрагмента таблицы практически аналогичен их включению, хотя вы и используете вместо :
Листинг 2.11. Импорт таблицы стилей
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Читать дальше