Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

<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="URI"

 type="тип"

 title="название"

 media="тип носителя"

 charset="кодировка"

 alternate="yes" | "no"?>

Заметим, что

xml-stylesheet
может закреплять за XML-документами не только преобразования. Основным назначением инструкции
xml-stylesheet
является ассоциация с документом фиксированного стиля (англ.
stylesheet
— стиль, стилевая таблица). С этой точки зрения преобразования являются не более, чем частным случаем стилевых таблиц.

Инструкция

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 version="1.0"?>

<?xml-stylesheet type="text/xsl" href="#"?>

<body>

 <!-- ...
– ->

</body>

В этом документе инструкция

xml-stylesheet
указывает на то, что этот документ должен быть обработан XSLT-преобразованием
mytransform.xsl
.

Псевдоатрибут

title
может содержать краткое описание применяемого преобразования:

<?xml-stylesheet

 title="Generate menu"

 type="text/xsl"

 href="#"?>

Псевдоатрибуты

media
и
alternate
могут использоваться совместно для того, чтобы описать альтернативное представление документа, к примеру, на небольших мобильных устройствах:

<?xml-stylesheet

 type="text/xsl"

 href="#"

 alternate="yes"

 media="handheld"?>

Теоретически, если документ с такой инструкцией будет показываться на мобильном устройстве (например, на Palm Pilot), он должен быть преобразован при помощи

pda.xsl
. На практике не следует полагаться на подобные возможности, поскольку они сильно зависят от поддержки серверов и процессоров, которая в этом отношении все еще сильно ограничена.

В заключение описания инструкции

xml-stylesheet
приведем правила, которые определяют ее синтаксис.

[XMS1] StyleSheetPI ::= '<?xml-stylesheet' (S PseudoAtt)* S? '?>'

[XMS2] PseudoAtt ::= Name S? '=' S? PseudoAttValue

[XMS3] PseudoAttValue ::= ( '"' ([^"<&]|CharRef|PredefEntityRef)* '"'

| "'" ([^'<&]|CharRef|PredefEntityRef)* "'")

– (Char* '?>' Char*)

[XMS4] PredefEntityRef ::= '&quot;' | '&lt;'

| '&gt;' | '&amp;' | '&apos;'

Объединение документа и преобразования

XSLT-преобразование является, как правило, самостоятельным XML-документом, корневым элементом которого является

xsl:stylesheet
или
xsl:transform
. Вместе с тем, иногда бывает необходимо объединять преобразуемый документ и само преобразование так, чтобы они находились в одном файле.

Поделиться:
Популярные книги

Крысиный бег lll

А.Морале
3. Крысиный бег
Фантастика:
городское фэнтези
аниме
5.00
рейтинг книги
Крысиный бег lll

Моя простая курортная жизнь 5

Блум М.
5. Моя простая курортная жизнь
Любовные романы:
эро литература
5.00
рейтинг книги
Моя простая курортная жизнь 5

Наследник из прошлого

Чайка Дмитрий
16. Третий Рим
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Наследник из прошлого

Наемный корпус

Вайс Александр
5. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Наемный корпус

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21

Я уже барон

Дрейк Сириус
2. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже барон

Сын Тишайшего 4

Яманов Александр
4. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Сын Тишайшего 4

Всадники бедствия

Мантикор Артемис
8. Покоривший СТЕНУ
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Всадники бедствия

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

70 Рублей

Кожевников Павел
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
70 Рублей

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Казачий князь

Трофимов Ерофей
5. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Казачий князь

Измена дракона. Развод неизбежен

Гераскина Екатерина
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Измена дракона. Развод неизбежен

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8