Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Не следует импортировать или включать в преобразование больше кода, чем необходимо. Если в одном импортируемом модуле находится много разнородных шаблонов, определений и так далее, лучше разбить этот модуль на несколько более мелких. Половина модуля загружается быстрее, чем модуль целиком. При этом целый модуль загружается быстрее, чем две его половины по отдельности.
Главным отличием импорта преобразований является то, что последовательность импортирования внешних модулей, называемая порядком импорта оказывает влияние на приоритет исполнения шаблонов, определения и многое другое.
Порядок импорта
Как уже было сказано выше, элементы xsl:import
должны всегда быть первыми дочерними элементами xsl:stylesheet
. Порядок, в котором они находятся в преобразовании, определяет порядок импорта внешних модулей следующим образом.
□ Порядок импорта основного преобразования всегда старше порядка импорта внешнего преобразования.
□ В случае, если преобразование импортирует несколько внешних модулей, порядок импорта преобразований, которые импортируются раньше, младше порядка импорта последующих модулей.
□ Порядок импорта преобразования, включенного в основное при помощи элемента xsl:include
, равен порядку импорта основного преобразования.
Эти правила могут быть проиллюстрированы следующими примерами.
Рассмотрим преобразование alpha.xsl
, которое импортирует преобразования bravo.xsl
и сharlie.xsl
и включает преобразование delta.xsl
.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
В соответствии с первым правилом, порядок импорта основного преобразования старше порядка импорта внешних модулей, значит alpha.xsl
старше bravo.xsl
и charlie.xsl
. Далее, согласно второму правилу порядок импорта преобразования bravo.xsl
младше порядка charlie.xsl
, поскольку оно импортируется первым. Преобразование delta.xsl
будет иметь порядок импорта такой же, как и у основного преобразования alpha.xsl
. Таким образом, порядок импорта в этом примере будет иметь следующий вид:
bravo.xsl
charlie.xsl
alpha.xsl delta.xsl
Преобразование bravo.xsl
будет самым младшим, а преобразования alpha.xsl
и delta.xsl
— самыми старшими.
Заметим, что импортируемые преобразования могут и сами импортировать другие модули. В этих случаях вычисление порядка импорта несколько усложняется.
Техническая рекомендация XSLT предлагает решать эту проблему построением логического дерева импорта.
Рассмотрим следующую схему включений и импорта (табл 4.1).
Таблица 4.1. Включение и импорт преобразований
Преобразование | Импортирует | Включает |
---|---|---|
alpha.xsl |
bravo.xsl charlie.xsl |
|
bravo.xsl |
delta.xsl echo.xsl |
foxtrot.xsl |
charlie.xsl |
golf.xsl hotel.xsl |
|
hotel.xsl |
india.xsl |
Этой схеме будет соответствовать логическое дерево импорта на рис. 4.1.

Рис. 4.1. Обход дерева импорта преобразований
В соответствии с правилами, левые ветки дерева будут младше правых, вершины, находящиеся ближе к корню, будут старше тех, которые дальше от него, включенные преобразования имеют тот же приоритет, что и у родителей.
Таким образом, порядок импорта преобразований от младших к старшим будет выглядеть следующим образом:
delta.xsl
echo.xsl
bravo.xsl foxtrot.xsl
golf.xsl
hotel.xsl india.xsl
charlie.xsl
alpha.xsl
Порядок, в котором импортируются модули, непосредственным образом влияет на различные аспекты преобразования. Эффект, который оказывает порядок импорта на те или иные элементы, будет подробно описан при их рассмотрении — сейчас же мы их просто коротко перечислим.
□ xsl:attribute-set
— порядок импорта используется для определения главенства элементов xsl:attribute
, включенных в разные именованные списки атрибутов, но создающих атрибуты с одинаковыми именами.
□ xsl:namespace-alias
— в случае, если в преобразовании определяются несколько псевдонимов префиксов пространств имен, процессор использует самый старший в порядке импорта псевдоним.
□ xsl:output
— эти элементы объединяются процессором. В случае конфликтов, например, когда в разных элементах xsl:output
атрибуты определены по-разному, процессор должен использовать старшее в порядке импорта определение.
□ xsl:strip-space
и xsl:preserve-space
— в этих элементах порядок импорта также используется для разрешения конфликтов: выигрывают определения со старшим порядком импорта.
□ xsl:template
— порядок импорта используется для разрешения конфликтов, которые возникают в случаях, когда один узел может быть обработан несколькими шаблонами. Шаблон, содержащийся в преобразовании с младшим порядком импорта, будет просто исключен из рассмотрения.
□ xsl:variable
и xsl:param
— порядок импорта используется при обращении к глобальным переменным в случае, если в разных преобразованиях существуют разные определения переменной с одним именем. В подобной ситуации будет использована переменная со старшим порядком импорта.
Использование сущностей для разбивки на модули
Поскольку XSLT-преобразования являются XML-документами, мы можем воспользоваться средствами XML для модульной организации данных. Части преобразований можно просто вынести во внешние документы и включать в документ в виде сущности.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
&ab;
В этом примере в DTD-блоке мы определяем сущность с именем ab
, которая содержит два шаблонных правила для обработки элементов a
и b
. Файл ab.xsl
, в котором содержится текст внешней сущности, заменяет в документе ссылку &ab;
. После раскрытия процессором сущности (замены ссылки на ее содержимое) наше преобразование будет выглядеть следующим образом.
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Совместное использование преобразований и XML-документов
Ассоциация преобразования с XML-документом
Тем, кому приходилось работать со стилями в HTML-документах, пожалуй будет знакома конструкция вида
Читать дальшеИнтервал:
Закладка: