Алексей Валиков - Технология 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, получить доступ к нему можно при помощи выражения
Интервал:
Закладка: