290 likes | 578 Views
XML- ТЕХНОЛОГИИ Лекция 4. XSLT- ТРАНСФОРМАЦИЯ. Трансформация XML- данных. Категории трансформации Структурные трансформации – трансформация одного словаря XML в другой по аналогии с переводом
E N D
XML-ТЕХНОЛОГИИЛекция 4 XSLT-ТРАНСФОРМАЦИЯ
Трансформация XML-данных Категории трансформации • Структурные трансформации – трансформация одного словаря XML в другой по аналогии с переводом • Создание динамических документов – возможность изменять порядок, сортировать и фильтровать части документа XML • Трансформации в язык формирования изображения – подготовка документа для визуального представления в какой-либо форме браузера пользователя
XSLT. Определение • XSLT (Extensible Stylesheet Language for Transformations — расширяемый язык таблиц стилей для преобразований) • Спецификация W3C —ноябрь 2000 года
Назначение XSLT XSLT позволяет преобразовывать XML-документ: – в другой XML-документ; – в HTML-документ для отображения веб-браузером; – в документы иных форматов (RTF, PDF, TeX и т. п.).
Таблицы стилей Таблица стилей (Stylesheet) — это XML-документ специального вида (обычно это файл с расширением «xsl»), содержащий набор правил преобразования исходного XML-документа, написанных на языке XSLT и предназначенных для XSLT-процессора.
XSLT-процессор XSLT-процессор — это программа, которая выполняет преобразование исходного XML-документа на основе таблицы стилей
XSL и FO • XSLT - язык преобразований XML • XPath- язык определения частей и путей к элементам XML • XSL FormattingObjects– язык форматирования XML
Пространство имен XSLT • Стандартный XSLT относится к пространству имен с URI: http://www.w3.org/1999/XSL/Transform • Общепринятым считается префикс «xsl:»
Как происходит преобразование Основные объекты • дерево исходного документа / входное дерево • дерево таблицы стилей • дерево результирующего документа / выходное дерево
Шаблоны в XSL CSS: p { font-family: arial} → XSL: шаблоны (templates) Таблица стилей содержит по крайней мере один шаблон Точка входа — шаблон для обработки корневого элемента Шаблон может содержать: • поддеревья конечных литеральных элементов • элементы-инструкции
Форсирующая трансформация • Форсирующая обработка (PushProcessing) — обработка, управляемая логикой исходного документа Основные инструкции • apply-templates • template match="образец" • Образец (pattern) — это информация, которая указывается в шаблоне для того, чтобы определить, соответствует ли шаблон выбранному узлу.
Примеры образцов в шаблонах template match = • "Студент/Предмет/ Сдача" • "Предмет [@объем = '120']/Сдача [1]" • "Студенты/Студент/Предмет/Сдача" • "Предмет"
Форсирующая трансформация Дополнительные инструкции • value-of select="образец" value-of select = • "Студенты/Студент/@Код" • "Студенты/Студент/@ФИО" • "Студенты/Студент[1]/@Код" • "count(Студенты/Студент[1]/Предмет [@объем = '120']/Сдача)"
Пример форсирующей трансформации • Исходный документ • XSL-таблица стилей
Пример форсирующей трансформации • Привязка XSLк XML • Результирующий документ
Пример форсирующей трансформации • Исходный документ • XSL-таблица стилей
Пример форсирующей трансформации • Привязка XSLк XML • Результирующий документ
Извлекающая трансформация • Извлекающая обработка (PullProcessing) —обработка, управляемая логикой таблицы стилей Основные конструкции • for-each select="XPath-выражение"
Пример извлекающей трансформации • Исходный документ • XSL таблица стилей
Пример извлекающей трансформации • Результирующий документ
Условные конструкции Основные инструкции • if: <xsl:if test="Условие"> инструкции </xsl:if> • choose <xsl:choose> <xsl:whentest="Условие1"> инструкции </xsl:when> <xsl:when test="Условие2"> инструкции </xsl:when> <xsl:otherwise> инструкции </xsl:otherwise> </xsl:choose>
Инструкция xsl:if • XSL-таблица стилей
Инструкция xsl:if • Результирующий документ
Инструкция xsl:choose • Исходный документ
Инструкция xsl:choose • XSL-таблица стилей
Инструкция xsl:choose • Результирующий документ
Переменные и параметры • <xsl:param name = "имя">значение</xsl:param> • <xsl:variable name = "имя" select = "XPath-выражение"/> • <xsl:variable name = “stud" select = «Студенты/Студент[1]/@ФИО"/> • <xsl:value-of select="$stud"/>