XML-ТЕХНОЛОГИИ Лекция 4
Download
Report
Transcript XML-ТЕХНОЛОГИИ Лекция 4
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 Formatting Objects – язык форматирования XML
Пространство имен XSLT
Стандартный XSLT относится к пространству
имен с URI:
http://www.w3.org/1999/XSL/Transform
Общепринятым считается префикс «xsl:»
Структура таблицы стилей
xml
xsl:stylesheet
version = "1.0" encoding = "UFT-8"
xsl = "http://www.w3.org/1999/XSL/Transform"
version = "1.0"
xsl:template
КЛЭ
Инструкции
Как происходит преобразование
Основные объекты
дерево исходного документа / входное дерево
дерево таблицы стилей
дерево результирующего документа / выходное
дерево
Шаблоны в XSL
CSS: p { font-family: arial } → XSL: шаблоны (templates)
Таблица стилей содержит по крайней мере один
шаблон
Точка входа — шаблон для обработки корневого
элемента
Шаблон может содержать:
поддеревья конечных литеральных элементов
элементы-инструкции
Шаблон с КЛЭ
Шаблон
xsl:template — match = "/"
html
head
title
= "Студенты"
body
h2
= "Список
студентов"
Результат
html
head
title
= "Студенты"
body
h2
= "Список
студентов"
Студенты
Список
студентов
Форсирующая трансформация
Форсирующая обработка (Push Processing) —
обработка, управляемая логикой исходного
документа
Основные инструкции
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
Результирующий документ
Извлекающая трансформация
Извлекающая обработка (Pull Processing) —
обработка, управляемая логикой таблицы
стилей
Основные конструкции
for-each select="XPath-выражение"
Пример извлекающей трансформации
Исходный документ
XSL таблица стилей
Пример извлекающей трансформации
Результирующий документ
Условные конструкции
Основные инструкции
if:
<xsl:if test="Условие">
инструкции
</xsl:if>
choose
<xsl:choose>
<xsl:when test="Условие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"/>