Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabKompl1_XML.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
13.8 Mб
Скачать

Лабораторная работа №4 Модульная организация преобразования

Цель работы:

Изучить модульную организацию преобразований

Ходы работы:

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

Включение преобразований

Элемент xsl:include

<xsl: include

href = " URI"/>

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

Создайте документ с модульной организацией преобразования, для этого сделайте следующее:

  1. Создайте документ для таблицы стилей под названием a.xsl

<xsl:stylesheet version="l.0"

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

<xsl:variable name="date" select»"'16.07.2001'"/>

</xsl:stylesheet>

Документ a.xsl определяет значение переменной date.

Элемент <xsl:variable name>-определяет локальные переменные и параметры.

  1. Создайте документ для таблицы стилей под названием b.xsl

<xsl:stylesheet version="1.0"

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

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

<xsl:template match="/">

<content>

<xsl:text>Today is </xsl:text>

<xsl:value-of select="$date"/>

<xsl:text>.</xsl:text>

</content>

</xsl:template>

</xsl:stylesheet>

Включение в преобразование b.xsl преобразования a . x s l эквивалентно замене в b.xsl соответствующего элемента x s l : i n c l u d e на содержимое преобразования a.xsl. В нашем случае будет включено только определение переменной date. Это будет выглядеть так, как показано в документе b1.xsl:

<xsl:stylesheet version="1.0"

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

<xsl:variable name="date" select=" '16.07.2001' "/>

<xsl:template match="/">

<content>

<xsl:text>Today is </xsl:text>

<xsl:value-of select="$date"/>

<xsl:text>.</xsl:text>

</content>

</xsl:template>

</xsl:stylesheet>

  1. Создайте документ c.xml:

<?xml version="1.0" encoding="windows-1251"?>

<?xml-stylesheet type="text/xsl" href="b.xsl"?>

<date>

</date>

  1. Отобразите c.xml в браузере, у вас должно получится то что представлено на рисунке 4.6

Рисунок 4.6

Упражнения для самостоятельной работы

  1. Используя документы a.xsl и b1.xsl,создайте преобразование по элементу Year,так что бы в результате получилось Happy New Year 2011

  2. Отобразите в бразуре

Импорт преобразований

Другим способом использования внешних модулей в XSLT является импорт преобразований, который обеспечивается элементом xsi:import. Импорт преобразований более сложен, чем их простое включение — последовательность импорта модулей может влиять на то, как будет выполняться преобразование. Равно как и в случае с xsi:include, условное импортирование преобразований не разрешено

Элемент xsl:import

<xsl:import

href=" URI"/>

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

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

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

порта внешнего преобразования.

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

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

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

Cсоздайте документ с импортом преобразований, для этого сделайте следующее:

  1. Создайте документ для таблицы стилей под названием a.xsl:

<xsl:stylesheet

version="1.0"

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

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

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

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

</xsl:stylesheet>

- a.xsl, импортирует преобразования b.xsl и c. xsl и включает преобразование d.xsl.

В соответствии с первым правилом a.xsl является, страшим преобразованием. Согласно второму правилу порядок импорта преобразования b. xsl младше c. xsl. Преобразование d.xsl будет иметь порядок импорта такой же, как и у основного преобразования a.xsl. Таким образом, порядок импорта в этом примере будет иметь следующий вид:

b.xsl

c.xsl

a.xsl d.xsl

Преобразование b.xsl будет самым младшим, а преобразования a. xsl и d. xsl — самыми старшими

  1. Создайте документ для таблицы стилей под названием b.xsl:

<xsl:stylesheet version="1.0"

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

<xsl:variable name="First_Name" select="'Artur'"/>

<xsl:variable name="Last_Name" select="'Turkin'"/>

</xsl:stylesheet>

  1. Создайте документ для таблицы стилей под названием c.xsl:

<xsl:stylesheet version="1.0"

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

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

<xsl:template match="/">

<content>

<xsl:text>This is </xsl:text>

<xsl:value-of select="$First_Name"/>

<xsl:text> </xsl:text>

<xsl:value-of select="$Last_Name"/>

<xsl:text>.</xsl:text>

</content>

</xsl:template>

</xsl:stylesheet>

  1. Создайте документ для таблицы стилей под названием d.xsl:

<xsl:stylesheet version="1.0"

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

<xsl:variable name="First_Name" select="'Artur'"/>

<xsl:variable name="Last_Name" select="'Turkin'"/>

<xsl:template match="/">

<content>

<xsl:text>This is </xsl:text>

<xsl:value-of select="$First_Name"/>

<xsl:text> </xsl:text>

<xsl:value-of select="$Last_Name"/>

<xsl:text>.</xsl:text>

</content>

</xsl:template>

</xsl:stylesheet>

  1. Создайте документ e.xml:

<?xml version="1.0" encoding="windows-1251"?>

<?xml-stylesheet type="text/xsl" href="a.xsl"?>

<import>

</import>

  1. Отобразите e.xml в браузере, у вас должно получится то, что представлено на рисунке 4.7

Рисунок 4.7

Упражнения для самостоятельной работы

  1. Создайте таблицу стилей с импортом преобразовании и примените ее к документу xml

  2. Отобразите в бразуре

Элемент xsl:import-schema

Процессор XSLT отыскивает схему с идентификатором, записанным в атрибуте namespace, по указанному атрибутом schema-location адресу и подставляет ее на место элемента xsi:import перед преобразованием. Например:

<xsl:import-schema namespace="http://some.domain/names"

schema-location="http://some.domain/pub/defs/names.xsd" />

Если местоположение схемы известно процессору XSLT, то атрибут schemalocation

можно не записывать.

Упражнения для самостоятельной работы

  1. Основываясь на импорте преобразований, создайте внутри таблицы стилей импорт схемы, которая записана в отдельном документе и примените ее к документу xml.

  2. Отобразите в бразуре

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]