WEB-ТЕХНОЛОГИИ
Лекция 4
Задача преобразования XML-данных1
Задача преобразования
Для передачи данных между разными приложениями необходимо преобразовать их из модели, используемой одним приложением, в модель, используемую другим
XML:
– отделение данных от их представления
– передача данных между приложениями
Понятие XSLT 2
XSLT — это расширяемый язык стилей для преобразований (от англ. eXtensible Stylesheet Language for Transformations), который используется для описания преобразований структуры документов. XSLT позволяет трансформировать одни документы в другие, пользуясь простыми наборами правил преобразования
Технология XSLT – это технология, позволяющая преобразовывать (трансформировать) XML-документ– в другой XML-документ;– в HTML-документ для отображения Web-браузером;– в документы иных форматов (WML, RTF, PDF, TEX и т.п.).
Стадии:
1. Структурное преобразование, при котором структура данных исходного XML-документа конвертируется в структуру, отражающую желаемый вывод;
2. Форматирование, при котором новая структура выводится в желаемом формате, например, HTML или PDF.
Стадия преобразования 3
SAX – это интерфейс, основанный на событиях, когда по мере анализа документа синтаксический анализатор уведомляет приложение о каждом отдельном фрагменте данных. Если же используется DOM, синтаксический анализатор считывает документа и формирует в памяти его древовидную объектную структуру.
Эта стадия может включать выборку данных, их объединение и группирование, сортировку или выполнение арифметических действий, например, перевод сантиметров в дюймы.
XSLT все еще использует синтаксический анализатор – неважно, с каким интерфейсом, DOM или SAX, – чтобы привести XML-документ к древовидной структуре. XSLT манипулирует именно древовидным представлением XML-документа, а не самим документом.
XSLT-процессоры 4
Основная роль XSLT-процессора – применить таблицу стилей XSLT к исходному документу XML и сформировать конечный документ. Важно отметить, что все компоненты этого процесса являются приложениями XML, так что базовая структура каждого – дерево. Следовательно, XSLT-процессор фактически обрабатывает три дерева.Основные:
– SAXON
– XALAN
– MS XML Parser
XSLT и XSL 5
Язык XSLT возник как часть языка более высокого уровня – XSL (расширяемый язык таблиц стилей).
XSL разбит на две части: описание преобразований, или сам язык XSLT, и «остальное» для стадии форматирования – официально это все еще язык XSL, хотя некоторые предпочитают называть его форматирующими объектами XSL (XSL-FO).
Таблицы стилей 6
Язык XSLT возник как часть языка более высокого уровня – XSL (расширяемый язык таблиц стилей).
Таблица стилей – это XML-документ специального вида (обычно файл с расширением .xsl), содержащий набор правил преобразования исходного XML-документа, написанных на языке XSLT и предназначенных для XSLT-процессора.
XSLT вместо этого описывает необходимые действия в терминах особого представления XML-документа, которое называется деревом. Дерево – это абстрактный тип данных.
Стандартизация 7
XSL ― стандарт, рекомендованый World Wide Web Consortium.
Первые две части этого языка стали официальной рекомендацией W3C в ноябре 1999 года. Полная рекомендация по XSL, включая XSL-форматирование, стала кандидатом в официальные рекомендации в ноябре 2000 года.
Пространство имен XSLT 8
Чтобы XSLT-процессор «понимал» указания таблицы стилей, соответствующие имена, используемые в таблице стилей, должны принадлежать определенному пространству имен. В зависимости от используемой версии или диалекта XSLT эти пространства имен разные:
http://www.w3.org/1999/XSL/Transform
http://www.w3.org/TR/WD-xsl
Префикс: xsl
Как происходит преобразование 9
В ходе преобразования XSLT-процессор манипулирует тремя объектами:
1) деревом исходного документа или входным деревом, которое строится в памяти в ходе загрузки исходного документа. Процессор анализирует это дерево путем целенаправленного обхода его узлов;
2) деревом таблицы стилей, которое также строится в памяти процессора в ходе загрузки таблицы стилей. Процессор анализирует это дерево путем целенаправленного обхода его узлов;
3) деревом результирующего документа или выходным деревом, которое процессор последовательно, узел за узлом строит в своей памяти в ходе преобразования. После окончания строительства процессор выполняет так называемую сериализацию, в ходе которой выходное дерево преобразуется в выходной документ.
Как происходит преобразование 10
В ходе преобразования XSLT-процессор манипулирует тремя объектами:
1) деревом исходного документа или входным деревом, которое строится в памяти в ходе загрузки исходного документа. Процессор анализирует это дерево путем целенаправленного обхода его узлов;
2) деревом таблицы стилей, которое также строится в памяти процессора в ходе загрузки таблицы стилей. Процессор анализирует это дерево путем целенаправленного обхода его узлов;
3) деревом результирующего документа или выходным деревом, которое процессор последовательно, узел за узлом строит в своей памяти в ходе преобразования. После окончания строительства процессор выполняет так называемую сериализацию, в ходе которой выходное дерево преобразуется в выходной документ.
Структура таблицы стилей 12
xml version="1.0"encoding="windows-1251"
xsl ="http://www.w3.org/1999
stylesheet
version="1.0"
template
Инструкция
КЛЭ
/XSL/Transform"
Шаблоны 13
Таблица стилей должна содержать, по крайней мере, один шаблон; на самом деле их зачастую бывает много.
В свою очередь, тело шаблона может содержать:
– поддеревья конечных литеральных элементов, которые непосредственно копируются в выходное дерево;
– элементы-инструкции, выполнение которых процессором приводит к формированию отдельных узлов или целых поддеревьев на основе узлов исходного дерева, которые также помещаются в выходное дерево.
Форсирующая обработка 14
4
template
html
head
body
title=Снабжение
html
head
body
title=Снаб-1
h2 =Список поставщиков
h2=Список
постав-
match="/"
apply-template
template match="снаб"
br=Номер
apply-template
template match="поставщик"
p
apply-template
template match="поставка"
br
apply-template
template match="товар"
apply-template
xsl ="http://www.w3.org/1999
stylesheet
version="1.0" /XSL/Transform"
br=Номер=127
p=Смит
br=300=Гайка
br=200=Болт
p=Блейк
br=300=Гайка
жение
щиков
снаб
поставка =300
товар =Гайка
xml7
=1279
поставщик 12=Смит14
поставка17
=30019
товар21
=Гайка23
поставка26
=20028
товар30
=Болт32
поставщик =Блейк
2
3
5
6
7 9 32
4
10
11
12 14 23
15 24
16 25
26 2817 19
20 29
21 30
3
6
8
11
13
16
18
22
25
27
31
Извлекающая трансформация 16
template
html head
body
title =Снабжениеh3 =Список поставщиков
match="/"
for-each
= .value-of
xsl ="http://www.w3.org/1999
stylesheet
version="1.0" /XSL/Transform"
select="postion()"
html
head
bodytitle =Снабжение
h3=Список поставщиков=1.
=Смит
= --
= :b
=Гайка=300
поставщик
поставка
снаб
товар
xml
имя
кол
select="снаб/поставщик"
b value-of select="@имя"= :
for-each
= --value-of select="товар/@назв"
select="поставка"
b value-of select="@кол"= .
br
назв
= .
= --=Болт=200= .
br
=2.=Кларк
= --
= :b
=Гайка=300= .
br