
- •Часть №1
- •Лабораторная работа №1 Структура xml документа
- •Лабораторная работа №2 Пространство имен и сущности
- •Лабораторная работа №3 Комментарии, разделы cdata,инструкции по обработке
- •Часть№2
- •Лабораторная работа №1 Синтаксис dtd
- •Лабораторная работа №2 Дочернее содержимое элемента, задание смешанного содержимого
- •Лабораторная работа №3 Атрибуты
- •Лабораторная работа №4 Подмножества dtd
- •Лабораторная работа №5 Валидность документа dtd
- •Валидность документа
- •Требования корректности формирования и валидности
- •Лабораторная работа №6 Общие внутренние и внешние примитивы dtd.
- •Xод работы:
- •Лабораторная работа №7 Параметрические внутренние и внешние примитивы
- •Xод работы:
- •Лабораторная работа №8 Ссылки на примитивы
- •Xод работы:
- •Использование предварительно определенных примитивов
- •Создайте xml-документ с использованием предварительно определенных примитивов и ссылками на примитивы на любую тематаку.
- •Отобразите документ в браузере Часть №3
- •Изучить встроенные простые типы данных xmlShema.
- •Xод работы:
- •Типы long, int, short и byte
- •Отобразите документ в браузере Лабораторная работа №2 Определение простых типов данных и пространство имен
- •Сужение
- •Не более чем из пяти целых чисел следующим образом:
- •Создайте xmlShema документ с простыми типами данных и пространством имен имен, для этого сделайте следующие:
- •Лабораторная работа №3 Объявление элементов и их атрибутов
- •Создание группы элементов и атрибутов в сложном типе
- •Лабораторная работа №5 Определение типа со сложным телом,
- •Лабораторная работа №6 Аннотирование схем, включение файлов схемы в другую схему
- •Часть №4
- •Лабораторная работа №1 Входной и выходной документы, инструкция обработки и корневой элемент
- •Лабораторная работа №2 Описание структуры с помощью шаблонов
- •Лабораторная работа №3 Встроенные шаблонные правила
- •Лабораторная работа №4 Модульная организация преобразования
- •Лабораторная работа №5 Инструкции управления
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Часть №5
- •Лабораторная работа №1 Интерфейс программы и создание xsd документа
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Xslt трансформация
- •Лабораторная работа №4 Создание документа dtd и его применение к xml.Конвертирование dtd в Shema.
- •Напечатайте следующий тест:
Лабораторная работа №4 Модульная организация преобразования
Цель работы:
Изучить модульную организацию преобразований
Ходы работы:
Существуют два основных способа использования в преобразованиях внешних модулей — включение и импорт. Кроме того, поскольку преобразования в XSLT также являются XML-документами, для разбиения их на модули можно применять сущности.
Включение преобразований
Элемент xsl:include
<xsl: include
href = " URI"/>
Обязательный атрибут href элемента xsi:include содержит URI внешнего модуля, который должен быть включен в текущее преобразование. Внешний модуль обязан быть корректным XSLT-преобразованием. Включение внешнего преобразования является включением в прямом смысле этого слова: преобразование, включающее внешний модуль, ведет себя так, как если бы на месте элемента xsi:include было содержимое этого внешнего модуля.
Создайте документ с модульной организацией преобразования, для этого сделайте следующее:
Создайте документ для таблицы стилей под названием 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>-определяет локальные переменные и параметры.
Создайте документ для таблицы стилей под названием 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>
Создайте документ c.xml:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="b.xsl"?>
<date>
</date>
Отобразите c.xml в браузере, у вас должно получится то что представлено на рисунке 4.6
Рисунок 4.6
Упражнения для самостоятельной работы
Используя документы a.xsl и b1.xsl,создайте преобразование по элементу Year,так что бы в результате получилось Happy New Year 2011
Отобразите в бразуре
Импорт преобразований
Другим способом использования внешних модулей в XSLT является импорт преобразований, который обеспечивается элементом xsi:import. Импорт преобразований более сложен, чем их простое включение — последовательность импорта модулей может влиять на то, как будет выполняться преобразование. Равно как и в случае с xsi:include, условное импортирование преобразований не разрешено
Элемент xsl:import
<xsl:import
href=" URI"/>
Порядок импорта:
Элементы xsi:import должны всегда быть первыми дочерними элементами xsi:stylesheet. Порядок, в котором они находятся в преобразовании, определяет порядок импорта внешних модулей следующим образом:
Порядок импорта основного преобразования всегда старше порядка им-
порта внешнего преобразования.
В случае, если преобразование импортирует несколько внешних модулей, порядок импорта преобразований, которые импортируются раньше, младше порядка импорта последующих модулей.
Порядок импорта преобразования, включенного в основное при помощи
элемента xsi: include, равен порядку импорта основного преобразования.
Cсоздайте документ с импортом преобразований, для этого сделайте следующее:
Создайте документ для таблицы стилей под названием 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 — самыми старшими
Создайте документ для таблицы стилей под названием 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>
Создайте документ для таблицы стилей под названием 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>
Создайте документ для таблицы стилей под названием 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>
Создайте документ e.xml:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<import>
</import>
Отобразите e.xml в браузере, у вас должно получится то, что представлено на рисунке 4.7
Рисунок 4.7
Упражнения для самостоятельной работы
Создайте таблицу стилей с импортом преобразовании и примените ее к документу xml
Отобразите в бразуре
Элемент 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
можно не записывать.
Упражнения для самостоятельной работы
Основываясь на импорте преобразований, создайте внутри таблицы стилей импорт схемы, которая записана в отдельном документе и примените ее к документу xml.
Отобразите в бразуре