Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-07.doc
Скачиваний:
7
Добавлен:
12.05.2015
Размер:
332.29 Кб
Скачать

5.3.4.3. Условное включение элемента

Любой элемент языка XSLTможет иметь атрибутuse-when, значением которого является выражениеXPath. Если атрибут задан для какого либо элемента и результат вычисления выражения XPath равенfalse, этот элемент и все элементы, для которых данный элемент является предком, исключаются из преобразования.

Пример задания атрибута use-when:

<xsl:import-schema

schema-location="http://mysite.com/schema"

use-when="system-property('xsl:is-schema-aware')='yes'"/>

Схема по адресу "http://example.com/schema" не будет импортирована, если системное свойство "xsl:is-schema-aware" не равно "yes".

5.3.4.4. Модульная структура преобразованийXslt

Как и любой, достаточно развитый язык программирования, XSLTобладает средствами для организации модульной структуры преобразований. Сущест­вуют два основных способа использования в преобразованиях внешних мо­дулей – включение и импорт. Кроме того, поскольку преобразования в XSLT также являются документами XML, для разбиения их на модули можно применять сущности.

5.3.4.4.1. Включение внешних файлов

Для включения внешних файловв преобразования вXSLTможно использовать элемент-объявлениеxsl:include, который имеет следующий синтаксис:

<xsl:include

href = "URI"

/>

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

Внешний модуль соответствовать правилам синтаксиса языка XSLT.

При включении модуля вместо элемента xsl:includeподставляется содержимое внешнего модуля. В свою очередь, во внешнем модуле также могут содержаться элементыxsl:include, однако рекурсивные вызовы, т.е. прямые и косвенные включения в вызванном модуле вызвавшего модуля, недопустимы.

Все ссылки и относительные URI, используе­мые во включаемом внешнем модуле, вычисляются относительно его базо­вого адреса.

Пример использования элемента xsl:include:

<xsl:include href="auxstyles.xsl"/>

5.3.4.4.2. Импорт внешних файлов

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

<xsl:import

href="URI"

/>

Импорт внешних файлов выполняется так же, как и включение файлов, однако он имеет следующие особенности:

  • элементы xsl:importдолжны быть первыми дочерними элементами элементаxsl:stylesheet;

  • порядок следования элементов xsl:importоказывает влияние на приоритет операций преобразования.

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

  • наивысший приоритет имеют преобразования в документе XSLT и во включаемых внешних файлах;

  • приоритет преобразования в импортируемом внешнем файле ниже, чем преобразования в документе XSLT и во включаемых внешних файлах;

  • если в импортируемых внешних файлах задано одно и то же преобразование, то больший приоритет имеет преобразование, которое определено в последнем из импортируемых файлов с одинаковыми преобразованиями;

  • если в импортируемом внешнем файле задан импорт другого внешнего файла, содержащего то же преобразование, то больший приоритет имеет преобразование, которое определено в вызывающем импорт внешнем файле.

Чтобы изменить приведенные выше правила используются элементы-инструкции xsl:apply-importsиxsl:next-match, которые имеют следующий синтаксис:

<xsl:apply-imports>

<!--

Содержимое: элементы xsl:with-param

-->

</xsl:apply-imports>

<xsl:next-match>

<!--

Содержимое: элементы xsl:with-param

-->

</xsl:next-match>

Элемент xsl:apply-importsиспользуется для изменения правил приоритета в импортируемых стилях, а элементxsl:next-match– для изменения правил приоритета во всех остальных случаях. Оба элемента выбирают преобразование, приоритет которого ниже, чем приоритет текущего преобразование (преобразование называется текущим, если оно имеет наивысший приоритет).

Элементы xsl:with-paramв содержимом элементовxsl:apply-importsиxsl:next-matchзадают параметры для выбранного преобразования.

Пример использования элемента xsl:import:

<xsl:import href="styles1.xsl"/>

Соседние файлы в папке Лекции