Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Подобные задачи возникают и при работе с XSLT. Например, если для обработки XML-документа всегда будет использоваться одно и то же преобразование, логично будет закрепить это преобразование за документом.
Для того чтобы закрепить XSLT-преобразование за XML-документом, в последнем должна быть использована инструкция по обработке xml-stylesheet
, которая имеет следующий вид:
Заметим, что 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-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('')
с пустым строковым параметром.
Включение преобразования в документ
Корневой элемент преобразования xsl:stylesheet
может быть включен в преобразуемый документ со всеми дочерними элементами верхнего уровня и так далее. Для того чтобы использовать это преобразование, псевдоатрибут href
инструкции по обработке xml-stylesheet
должен указывать на идентификатор элемента xsl:stylesheet
, определенный в его атрибуте id
.
Main content
id="transform"
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Main content
Поскольку элемент xsl:stylesheet
включен в преобразуемый документ, он также подвергнется преобразованию. Для того чтобы избежать этого, в преобразование включается шаблонное правило, которое указывает, что элементы xsl:stylesheet
следует игнорировать:
К сожалению, приходится констатировать тот факт, что описанную возможность (хотя она и включена в спецификацию языка XSLT) поддерживают очень немногие процессоры и поэтому пока что на нее не следует полагаться.
Включение документа в преобразование
Другой возможностью объединения документов и преобразований является включение элемента документа в преобразование в виде элемента верхнего уровня.
Поскольку преобразование также является XML-документом, доступ к данным, которые оно содержит можно получить при помощи функции document
, так же, как если бы документ преобразования был внешним документом. Функция document
, которой в качестве параметра была передана пустая строка, возвращает множество, состоящее из корневого узла самого преобразования. То есть, если документ был включен в преобразование в качестве элемента верхнего уровня с именем, к примеру, user:input
, получить доступ к нему можно при помощи выражения
Интервал:
Закладка: