web-технологии

advertisement
WEB-ТЕХНОЛОГИИ
Лекция 4
Задача преобразования XML-данных
1
XML:
– отделение данных от их представления
– передача данных между приложениями
Задача преобразования
Для передачи данных между разными приложениями необходимо
преобразовать их из модели, используемой одним приложением, в модель,
используемую другим
2
Понятие XSLT
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) деревом результирующего документа или выходным деревом, которое
процессор последовательно, узел за узлом строит в своей памяти в ходе
преобразования. После окончания строительства процессор выполняет так
называемую сериализацию, в ходе которой выходное дерево преобразуется
в выходной документ.
Структура таблицы стилей
xml
version="1.0"
encoding="windows-1251"
stylesheet
xsl ="http://www.w3.org/1999
version="1.0" /XSL/Transform"
template
КЛЭ
Инструкция
12
Шаблоны
13
Таблица стилей должна содержать, по крайней мере, один шаблон; на самом
деле их зачастую бывает много.
В свою очередь, тело шаблона может содержать:
– поддеревья конечных литеральных элементов, которые непосредственно
копируются в выходное дерево;
– элементы-инструкции, выполнение которых процессором приводит к
формированию отдельных узлов или целых поддеревьев на основе узлов
исходного дерева, которые также помещаются в выходное дерево.
14
Форсирующая обработка
xml
1
снаб
4
7
=127
9
12
поставщик =Смит
14
17
поставка =300
товар
19
21
26
поставка =200
товар
28
30
=Болт
32
поставщик =Блейк
поставка =300
товар
html
head
title
3
=Снабжение
body
h2
6
=Гайка
23
stylesheet
xsl ="http://www.w3.org/1999
/XSL/Transform"
version="1.0"
2
template match="/"
html
3
head title
=Снабжение
body
4
apply-template
=Гайка
template match="снаб"
h2 =Список поставщиков
br
5
6
apply-template
8
13
7
9
32
template match="поставщик" 10
11
p
12 14 23
apply-template
template match="поставка" 15 24
16 25
br
17 19 26 28
apply-template
template match="товар"
apply-template
br
11
=Номер
20 29
21 30
=Список
поставщиков
=Номер
=127
p
=Смит
16
br
18
22
=300
=Гайка
25
br
27
=200
=Болт
31
p
=Блейк
br
=300
=Гайка
16
Извлекающая трансформация
stylesheet
xsl ="http://www.w3.org/1999
version="1.0"
/XSL/Transform"
match="/"
template
html head title =Снабжение
body h3 =Список поставщиков
for-each select="снаб/поставщик"
value-of select="postion()"
=.
b
value-of select="@имя"
=:
for-each select="поставка"
value-of select="товар/@назв"
= --
b
=.
br
value-of select="@кол"
html
head
body
title
h3
=Снабжение
=Список поставщиков
=1.
b =Смит
=:
=Гайка
= -=300
=.
=Болт
= -=200
=.
br
=2.
b =Кларк
=:
=Гайка
= -=300
=.
br
xml
снаб
поставщик
имя
поставка
кол
товар
назв
Download