<ROOT>
<xsl:apply-templates/>
</ROOT>
</xsl:template>
<xsl:template match='a'>
<A/>
</xsl:template>
<xsl:template match='b'>
<B/>
</xsl:template>
</xsl:stylesheet>
Совместное использование преобразований и XML-документов
Ассоциация преобразования с XML-документом
Тем, кому приходилось работать со стилями в HTML-документах, пожалуй будет знакома конструкция вида <LINK REL='stylesheet'>
, которая закрепляет за документом определенный стиль. Включив такую конструкцию, автор явным образом указывает, как следует отображать данный документ.
Подобные задачи возникают и при работе с XSLT. Например, если для обработки XML-документа всегда будет использоваться одно и то же преобразование, логично будет закрепить это преобразование за документом.
Для того чтобы закрепить XSLT-преобразование за XML-документом, в последнем должна быть использована инструкция по обработке xml-stylesheet
, которая имеет следующий вид:
<?xml-stylesheet
href='
type='
title='
media='
charset='
alternate='yes' | 'no'?>
Заметим, что xml-stylesheet
может закреплять за XML-документами не только преобразования. Основным назначением инструкции xml-stylesheet
является ассоциация с документом фиксированного стиля (англ. stylesheet
— стиль, стилевая таблица). С этой точки зрения преобразования являются не более, чем частным случаем стилевых таблиц.
Инструкция xml-stylesheet
содержит шесть псевдоатрибутов (приставка псевдо- поясняет, что на самом деле инструкции по обработке не имеют атрибутов), два из которых, href
и type
, являются обязательными. Использование псевдоатрибутов xml-stylesheet
поясняет табл. 4.2.
Псевдоатрибут | Описание |
---|---|
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 все