
- •Часть №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.
- •Напечатайте следующий тест:
Лабораторная работа №3 Встроенные шаблонные правила
Цель работы:
Изучить встроенные шаблонные правила языка XSLT
Ход работы:
В XML-документе существует семь видов узлов: корневой узел, узлы элементов, узлы атрибутов, текстовые узлы, узлы комментариев, узлы инструкций обработки и узлы пространств имен. Для каждого из семи типов XSLT предоставляет встроенные шаблонные правила, указывающие, что делать с этим узлами, если автор таблицы стилей не дал более конкретных инструкций.
Шаблонное правило по умолчанию для текстовых узлов и узлов атрибутов
Самое основное из встроенных шаблонных правил копирует значение
текстовых узлов и узлов атрибутов в выходной документ. Это выглядит следующим образом:
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
Функция text() – это выражение XPath, соответствующее всем текстовым узлам, first_name. @* – выражение XPath, соответствующее всем узлам атрибутов. Вертикальная черта объединяет эти два выражения, выбирая и текстовые узлы и узлы атрибутов. Содержимое этого шаблона говорит о том, что при обнаружении текстового узла или узла атрибута процессор должен вывести значение этого узла, т. е. непосредственно текст или значение атрибута соответственно.
Примените к Литину 3.7 таблицу стилей для его трансформирования, используя шаблон по умолчанию для текста и атрибутов, для этого сделайте следующие:
Создайте документ для таблицы стилей под названием ShabTextAtr.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="CP866" />
<xsl:template match="people">
<html>
<head><title>Знаменитые ученые</title></head>
<body>
<dl>
<xsl:apply-templates/>
</dl>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<dt><xsl:apply-templates select="name"/></dt>
<dd><ul>
<li>Родился: <xsl:apply-templates select="@born"/></li>
<li>Умер: <xsl:apply-templates select="@died"/></li>
</ul></dd>
</xsl:template>
</xsl:stylesheet>
Примените эту таблицу стилей к документу из листинга 3.7, для этого добавьте после <?xml version="1.0" encoding="windows-1251"?> инструкцию обработки со ссылкой на таблицу стилей:
<?xml-stylesheet type="text/xsl" href=" ShabTextAtr.xsl "?> и сохраните под именем apply-templates.xml
Откройте ShabTextAtr.xml в браузере, у вас должно получится то, что на рисунке
4.4:
Рисунок 4.4
Упражнения для самостоятельной работы
Создайте документ xml и создайте для него шаблон по умолчанию для текста и атрибутов
Отобразите в бразуре
Шаблонное правило по умолчанию для узлов элементов и корневого узла
Правило выглядит следующим образом:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
Символ «звездочка» (*) является подстановочным выражением XPath, соответствующим всем узлам элементов, независимо от имени и пространства имен, к которому они относятся. Косая черта (/) – это выражение XPath, соответствующее корневому узлу.
Шаблон по умолчанию для узлов комментариев и узлов инструкций обработки
Встроенное шаблонное правило для комментариев и инструкций обработки выглядит следующим образом:
<xsl:template match="processing-instruction()|comment()"/>
Упражнения для самостоятельной работы
На основе выше приведенного примера работы с шаблоном по умолчанию для текстовых узлов и узлов атрибутов, создайте и примените для Листинга 3.7 таблицу стилей с данным шаблоном по умолчанию для комментариев (текст Знаменитые ученые примите за комментарии) и для корневого элемента и др. 2 элементов.
Отобразите в бразуре
Режимы
Иногда одно и то же содержимое из входного документа должно появиться в выходном документе несколько раз, каждый раз отформатированное в соответствии с разными шаблонами. Например, заголовки глав книги могут форматироваться в одном стиле в самих главах и в другом – в оглавлении книги. Оба элемента – xsl:apply-templates и xsl:template – могут иметь необязательный атрибут mode, ставящий разные шаблоны в соответствие разным применениям. Атрибут mode элемента xsl:template указывает, в каком режиме следует активизировать этот шаблон. Элемент xsl:apply-templates с атрибутом mode активизирует только шаблоны с соответствующими атрибутами mode.
Создайте таблицу стилей использующею режимы, для этого сделайте следующее:
Создайте документ для таблицы стилей под названием Reg.xsl:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="CP866" />
<xsl:template match="people">
<html>
<head><title>Знаменитые ученые</title></head>
<body>
<ul><xsl:apply-templates select="person" mode="toc"/></ul>
<xsl:apply-templates select="person"/>
</body>
</html>
</xsl:template>
<!-- Шаблоны режима оглавления -->
<xsl:template match="person" mode="toc">
<xsl:apply-templates select="name" mode="toc"/>
</xsl:template>
<xsl:template match="name" mode="toc">
<li><xsl:value-of select="last_name"/>,
<xsl:value-of select="first_name"/></li>
</xsl:template>
<!--Шаблоны обычного режима -->
<xsl:template match="person">
<p><xsl:apply-templates/></p>
</xsl:template>
</xsl:stylesheet>
Заметьте как выглядит элемент <xsl:output method="html" encoding="CP866" />,значение выходного элемента =html,это значит что на выходе мы получаем html документ,что видно на рисунке 3.6
Документ демонстрирует такое использование шаблонов в таблице стилей, начинающей выходной документ со списка имен. Это действие
совершается в режиме toc. Затем отдельный шаблон и отдельный элемент xsl:apply-templates в режиме по умолчанию (то есть без атрибута mode) выводят полное содержимое всех элементов person.
Примените эту таблицу стилей к документу из листинга 3.7, для этого добавьте после <?xml version="1.0" encoding="windows-1251"?> инструкцию обработки со ссылкой на таблицу стилей:
<?xml-stylesheet type="text/xsl" href=" Reg.xsl "?> и сохраните под именем Reg.xml
Откройте ShabTextAtr.xml в браузере, у вас должно получится то, что на рисунке
4.5:
Рисунок 4.5