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

Лабораторная работа №2 Описание структуры с помощью шаблонов

Цель работы:

Изучить шаблоны(элементы) описывающие структуры XSLT

Ход работы:

Элемент xsl:template

Для управления выходными данными, формируемыми из определенных входных данных, в таблицу стилей XSLT следует добавить шаблоны. Каждый шаблон представлен элементом xsl:template. Этот элемент имеет атрибут match, содержащий образец XPath, определяющий входные данные, которым соответствует данный шаблон

<xsl:template match="name">Сергей </xsl:template>

Создайте документ с элементом <xsl:template>,для этого сделайте следующие:

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

<?xml version="l.0" encoding="windows-1251" ?>

<xsl:stylesheet version="1.0"

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

<xsl:template match="person">Человек</xsl:template>

</xsl:stylesheet>

Простейший образец – это имя элемента. В частности, данный шаблон говорит о том, что каждый раз, когда встречается элемент person, процессор таблиц стилей генерирует текст «Человек»:

<xsl:template match="person">Человек</xsl:template>

  1. Примените эту таблицу стилей к документу из листинга 3.7, для этого добавьте после <?xml version="1.0" encoding="windows-1251"?> инструкцию обработки со ссылкой на таблицу стилей:

<?xml-stylesheet type="text/xsl" href=" template.xsl "?> и сохраните под именем template.xml

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

Рисунок 4.1

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

  1. С помощью листинга 3.7 и элемента <xsl:template> сделайте так что бы при встрече элемента <first_name> генерировался текст Алан , <last_name>- Тьюринг,а при элементе <profession> генерировалось все три вида профессии

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

Элемент xsl:value-of

Одним из наиболее полезных элементов является xsl:value-of. Этот элемент рассчитывает строковое значение заданного входного элемента и вставляет его в выходной документ. Значение элемента – это его текстовое содержимое после удаления всех тегов. Атрибут select, содержащий выражение XPath, задает элемент, из которого берется значение

Пример синтаксиса:

<xsl:template match="name">

<xsl:value-of select="last_name"/>,

<xsl:value-of select="first_name"/>

</xsl:template>

Создайте xml документ с элементом xsl:value-of для этого сделайте следующие:

  1. Предположим, например, что вы хотите извлечь из входного документа имена всех людей, для этого файл с таблицей стилей под названием value-of.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="person">

<xsl:value-of select="name"/>

</xsl:template>

</xsl:stylesheet>

  1. Примените эту таблицу стилей к документу из листинга 3.7, для этого добавьте после <?xml version="1.0" encoding="windows-1251"?> инструкцию обработки со ссылкой на таблицу стилей:

<?xml-stylesheet type="text/xsl" href=" value-of.xsl "?> и сохраните под именем value-of.xml

  1. Откройте value-of.xml в браузере, у вас должно получится то, что на рисунке 4.2:

Рисунок 4.2

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

  1. С помощью листинга 3.7 и элемента < value-of > извлеките профессии людей

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

Элемент xsl:apply-templates

Элемент xsl:apply-templates позволяет сделать явный выбор порядка обработки элементов.

Пример синтаксиса:

<xsl:template match="cd">

<xsl:apply-templates select="artist"/>

</xsl:template>

Создайте xml документ с элементом xsl:apply-templates для этого сделайте следующие:

  1. Предположим, например, что вы хотите перечислить имена людей из входного документа(листинг 3.7), однако сначала хотите вывести фамилии (last _name) независимо от порядка, в котором имена и фамилии присутствуют во входном документе, и не хотите выводить профессии и хобби, создайте файл для таблицы стилей под названием apply-templates.xsl и напишите следующие:

<xsl:template match="name">

<xsl:value-of select="last_name"/>,

<xsl:value-of select="first_name"/>

</xsl:template>

  1. Вам также потребуется шаблон для per son, который говорит о том, что шаблоны должны применятся к элементам name, но не к другим дочерним элементам, таким как profession и hobby. Добавьте следующий шаблон к выше написанному:

<xsl:template match="person">

<xsl:apply-templates select="name"/>

</xsl:template>

  1. Допишите инструкцию по обработке:

<?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="name">

<xsl:value-of select="last_name"/>,

<xsl:value-of select="first_name"/>

</xsl:template>

<xsl:template match="person">

<xsl:apply-templates select="name"/>

</xsl:template>

</xsl:stylesheet>

  1. Примените эту таблицу стилей к документу из листинга 3.7, для этого добавьте после <?xml version="1.0" encoding="windows-1251"?> инструкцию обработки со ссылкой на таблицу стилей:

<?xml-stylesheet type="text/xsl" href=" apply-templates.xsl "?> и сохраните под именем apply-templates.xml

  1. Откройте apply-templates xml в браузере, у вас должно получится то, что на рисунке 4.3:

Рисунок 4.3.

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

  1. На сонове пройденного матирала создайте xml документ,который использует таблицу стилей в которой присутствуют все три элемента XSL

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

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