Инструкция xml-stylesheetсодержит шесть псевдоатрибутов (приставка псевдо- поясняет, что на самом деле инструкции по обработке не имеют атрибутов), два из которых, hrefи type, являются обязательными. Использование псевдоатрибутов xml-stylesheetпоясняет табл. 4.2.
Таблица 4.2. Псевдоатрибуты инструкции по обработке xml-stylesheet
| Псевдоатрибут |
Описание |
href |
Указывает местоположение стиля, закрепляемого за документом. В случае преобразований, hrefуказывает местоположение преобразования, которое нужно применять к этому документу. В псевдоатрибуте hrefможет быть также указан уникальный идентификатор преобразования, если оно включено в сам документ ( см. раздел "Включение преобразования в документ" ). |
type |
Указывает тип стиля, закрепляемого за документом. В нашем случае, поскольку мы ассоциируем с документом XSLT-преобразование, псевдоатрибут typeдолжен иметь значение " text/xsl" |
title |
Задает название закрепляемого стиля. Название не имеет особого значения при обработке — оно просто поясняет назначение стиля |
media |
Указывает тип носителя или устройства, для которого предназначен результирующий документ |
charset |
Определяет кодировку, в которой создан стиль. Если стиль является XSLT-преобразованием, значение псевдоатрибута charsetв расчет не принимается, поскольку кодировка преобразований явно или неявно определена в них самих |
alternate |
Указывает, является ли данный стиль основным (" no") или альтернативным (" yes"). Значением этого атрибута по умолчанию является " no" |
Примечание
Что касается псевдоатрибута type, то на самом деле нет стандарта, который заставлял бы использовать значение " text/xsl". Рабочая группа XSL Консорциума W3 до сих пор обсуждает, какой именно тип должен быть присвоен XSLT. Поскольку XSLT есть XML-язык, формально следовало бы использовать " application/xml", однако с легкой подачи Microsoft все используют " text/xsl".
Инструкция xml-stylesheetможет быть включена только в пролог документа, то есть она должна предшествовать корневому элементу. Не рекомендуется включать эту инструкцию в блоки DOCTYPE, поскольку некоторые парсеры и процессоры будут ее в этом случае игнорировать.
Примеры
Стандартный механизм использования xml-stylesheetможет быть продемонстрирован следующим документом:
В этом документе инструкция xml-stylesheetуказывает на то, что этот документ должен быть обработан XSLT-преобразованием mytransform.xsl.
Псевдоатрибут titleможет содержать краткое описание применяемого преобразования:
Псевдоатрибуты mediaи alternateмогут использоваться совместно для того, чтобы описать альтернативное представление документа, к примеру, на небольших мобильных устройствах:
Теоретически, если документ с такой инструкцией будет показываться на мобильном устройстве (например, на Palm Pilot), он должен быть преобразован при помощи pda.xsl. На практике не следует полагаться на подобные возможности, поскольку они сильно зависят от поддержки серверов и процессоров, которая в этом отношении все еще сильно ограничена.
В заключение описания инструкции xml-stylesheetприведем правила, которые определяют ее синтаксис.
[XMS1] StyleSheetPI ::= ' '
[XMS2] PseudoAtt ::= Name S? '=' S? PseudoAttValue
[XMS3] PseudoAttValue ::= ( '"' ([^"<&]|CharRef|PredefEntityRef)* '"'
| "'" ([^'<&]|CharRef|PredefEntityRef)* "'")
- (Char* '?>' Char*)
[XMS4] PredefEntityRef ::= '"' | '<'
| '>' | '&' | '''
Объединение документа и преобразования
XSLT-преобразование является, как правило, самостоятельным XML-документом, корневым элементом которого является xsl:stylesheetили xsl:transform. Вместе с тем, иногда бывает необходимо объединять преобразуемый документ и само преобразование так, чтобы они находились в одном файле.
Мы опишем два способа объединения документов и преобразований. Первый основывается на использовании инструкции xml-stylesheetдля того, чтобы закрепить за документом преобразование, находящееся внутри него самого. Во втором способе обрабатываемый документ включается в преобразование как пользовательский элемент верхнего уровня и обрабатывается при помощи функции document('')с пустым строковым параметром.
Включение преобразования в документ
Читать дальше