Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турчин Д.Е. - Архитектура ИС. Практикум 2014 (И...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.42 Mб
Скачать

Xslt-процессоры.

В XSLT-преобразовании участвуют три документа:

  • входящий XML-документ, который подвергается преобразованию;

  • документ XSLT, который описывает само преобразование;

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

Выполнением преобразования над XML-документами занимаются специальные программы, которые называются XSLT-процессорами.

Процессор оперирует не самими документами, а древовидными моделями их структур.

Рис. 1.1. Общая схема XSLT-преобразования

Процесс обработки делится на три этапа:

  • Этап разбора (парсинг) документа, на котором процессор разбирает входящий XML-документ и документ XSLT, создавая для них древовидные структуры данных.

  • Этап преобразования, на котором к дереву входного документа применяются правила, описанные в XSLT-документе. В итоге процессор создаёт дерево выходного документа.

Таблица стилей XSLT состоит из шаблонов (templates), определяющих, каким образом каждый узел исходного дерева должен быть представлен в дереве результата. Преобразования в XSLT чаще всего это наборы правил вида «если обнаружен узел определённого типа, то выполнить следующие действия».

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

  • Этап сериализации, на котором созданное дерево выходного документа записывается в файл.

Пример преобразуемого XML-документа и простой таблицы стилей XSLT представлены в листингах 1.1 и 1.2. Выходным документом данного преобразования будет являться HTML-документ.

Листинг 1.1. Код XML-документа

<?xml version="1.0" encoding="utf-8" ?>

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

<employees>

<employee id="1">

<firstname>Игорь</firstname>

<lastname>Васильев</lastname>

<phone>(206) 555-9857</phone>

<notes>

<![CDATA[Закончил КузГТУ в 2009 г. по специальности "Автоматизация технологических процессов и производств".]]>

</notes>

</employee>

<employee id="2">

<firstname>Елена</firstname>

<lastname>Крылова</lastname>

<phone>(206) 555-9482</phone>

<notes>

<![CDATA[Закончила КузГТУ в 2011 г. по специальности "Информационные системы и технологии".]]>

</notes>

</employee>

</employees>

Листинг 1.2. Код таблицы стилей XSLT (transform.xslt)

<?xml version="1.0" encoding="utf-8" ?>

<xsl:stylesheet version="1.0"

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

<xsl:template match="/">

<html>

<head>

<title>Список сотрудников</title>

</head>

<body bgcolor="#DDDDFF">

<h1>Список сотрудников</h1>

<table border="1">

<tr>

<th>Код</th>

<th>Фамилия</th>

<th>Имя</th>

<th>Телефон</th>

<th>Примечания</th>

</tr>

<xsl:for-each select="employees/employee">

<tr>

<td>

<xsl:value-of select="@id"/>

</td>

<td>

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

</td>

<td>

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

</td>

<td>

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

</td>

<td>

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

</td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Результат преобразования XML-документа с помощью таблицы стилей XSLT показан на рис. 1.2.

Рис. 1.2. Результат XSLT-преобразования (MS Visual Studio 2012)