Вход/Регистрация
Технология XSLT
вернуться

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

Шрифт:

Порядок импорта

Как уже было сказано выше, элементы

xsl:import
должны всегда быть первыми дочерними элементами
xsl:stylesheet
. Порядок, в котором они находятся в преобразовании, определяет порядок импорта внешних модулей следующим образом.

□ Порядок импорта основного преобразования всегда старше порядка импорта внешнего преобразования.

□ В случае, если преобразование импортирует несколько внешних модулей, порядок импорта преобразований, которые импортируются раньше, младше порядка импорта последующих модулей.

□ Порядок импорта преобразования, включенного в основное при помощи элемента

xsl:include
, равен порядку импорта основного преобразования.

Эти правила могут быть проиллюстрированы следующими примерами.

Рассмотрим преобразование

alpha.xsl
, которое импортирует преобразования
bravo.xsl
и
сharlie.xsl
и включает преобразование
delta.xsl
.

Листинг 4.14. Фрагмент преобразования alpha.xsl

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:import href="#"/>

 <xsl:import href="#"/>

 <xsl:import href="#"/>

 <!-- ...
– ->

</xsl:stylesheet>

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

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
атрибуты определены по-разному, процессор должен использовать старшее в порядке импорта определение.

  • Читать дальше
  • 1
  • ...
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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