XML Tutorial

Download Report

Transcript XML Tutorial

XML
• Язык разметки
• Набор языков для хранения,
обработки и представления
документов
• Технологии обработки и
обмена информацией
Языки разметки
• SGML (Standart Generalised Markup
Language, 1986 год)
SGML
упрощение,
фиксирован один язык

HTML
•HTML
SGML, HTML
•XML

XML
• eXtensible Markup Language
• HTML – управление
представлением + средства
определения структуры +
средства верификации
• Основная функция – описание
структурированной текстовой
информации
• Скорее не язык, а средство
определения языков (мета-язык)
Определение XML-языков
Общий синтаксис XML
Общие грамматические ограничения
= корректные документы (well-formed)
DTD (document type definition) –
декларация типа документа
= действительные документы (valid)
XML-синтаксис + DTD-грамматика =
класс XML-документов
XML-языки (приложения)
• MathMl (Mathematical Markup Language) –
запись математических формул
• XQL (Extensible Query Language) – запросы
к базам данных
• KML – Google Earth
XML-синтаксис + DTD-грамматика =
класс XML-документов
Синтаксис XML (сравнение с HTML)
• Заголовок, вложенные теги
• Для каждого открывающегося тега
должен быть закрывающийся
• Строгая вложенность
• Учитывается регистр в именах тегов
• Более строгие синтаксические правила
Элементы синтаксиса XML
• Символы, спецсимволы: <,>,&,“,‘
• Теги, атрибуты
• Директивы
• Комментарии
• Ссылки на сущности
• Секции CDATA
Синтаксис XML
Директива
(заголовок)
Теги
<?xml version="1.0"?>
Комментарий
<bibliography>
<book> <!-- Информация по одной книге -->
<title>Использование символа &amp; в
гипертекстах</title>
Ссылка на
символ
<author>Иванов И.И.</author>
<keywords><![CDATA[символ,гипертекст,&]]>
</keywords>
</book>
Секция CDATA
</bibliography>
Структура: элементы
Элемент
Тип элемента
Содержимое
<?xml version="1.0"?>
элемента
<bibliography>
Символьные данные
<book id="1">
<title>Использование символа &amp;</title>
<author>Иванов И.И.</author>
<source form="hardcopy" pages="100"/>
</book>
</bibliography>
Пустой элемент
Атрибуты элементов
<?xml version="1.0"?>
<bibliography>
<book id="1">
<title>Использование символа &amp;</title>
<author>Иванов И.И.</author>
<source form="hardcopy" pages="100"/>
</book>
Значение
</bibliography>
Имя атрибута
Модель документа
<a>
<b>один</b>
<b>два</b>
<с>три</с>
</a>
a:
a:
b: один
b: два
c: три
b:
b:
один два
c:
три
Дерево
(ребра упорядочены)
XML
a(b(“один”), b(“два”),c(“три”))
Терм
(с произвольным количеством аргументов)
XML и HTML
<bibliography>
<book id="ivanov2003">
<title>Использование символа
&amp; в гипертекстах</title>
<author>Иванов И.И.</author>
<publisher>Питер</publisher>
<year>2003</year>
</book>
</bibliography>
<h2>Библиография</h2>
<p><i>Использование символа
&amp; в гипертекстах</i>,
Иванов И.И.,
<br>Питер, 2003
• Определяет содержание, не
• Определяет содержание
•
•
•
•
зависящее от представления
Ясна структура документа
Не определяет представление
Возможна частичная
верификация
•
неотделённое от
представления
Невозможно автоматически
выявить структуру
Невозможна верификация
XML и LaTeX
<bibliography>
<book>
<title>Использование символа
&amp; в гипертекстах</title>
<author>Иванов И.И.</author>
<publisher>Питер</publisher>
<year>2003</year>
</book>
</bibliography>
\begin{thebibliography}{9}
\bibitem{ivanov2003}
{\em Иванов И.И.} Использование
символа $\amp$ в гипертекстах
-- Питер, 2003.
\end{thebibliography}
XML и LaTeX
<bibliography>
<book>
<title>Использование символа
&amp; в гипертекстах</title>
<author>Иванов И.И.</author>
<publisher>Питер</publisher>
<year>2003</year>
</book>
</bibliography>
\begin{thebibliography}{9}
\begin{book}{ivanov2003}
\bibauthor{\em Иванов И.И.}
\bibtitle{Использование символа
$\amp$ в гипертекстах}
\bibpublisher{Питер}
\bibyear{2003}
\end{book}
\end{thebibliography}
• Определяет содержание, не
• Определяет содержание и
•
•
•
•
зависящее от представления
Ясна структура документа
Не определяет представление
Возможна частичная
верификация
•
•
представление
Есть возможности задавать
структуру
Для понимания структуры
нужна информация о командах
Невозможна верификация
Добавление специфики
• Декларации типа документа (DTD)

Определяют структуру документа (множество
элементов и правила их вложимости)
• Схемы XML (XML Schema)



Описывают структуру xml-документов
Создается наследственная система элементов. Новые
элементы определяются расширением и наложением
ограничений.
Мощнее и сложнее DTD
• Пространства имен XML (XML Namespaces)

Обеспечивают глобальную уникальность имен тегов
Классы документов
<?xml version="1.0"?>
<bibliography>
<book id="1">
<title>Использование символа &amp;</title>
<authors>
<author>Иванов И.И.</author>
</authors>
<publisher>Питер</publisher>
<year>2003</year>
<source form="hardcopy" pages="100"/>
</book>
</bibliography>
DTD
XML DTD
<!element bibliography book*>
<!element book
(title,authors,publisher,year,source?)>
<!element authors
author+>
Контекстно-свободная грамматика
bibliography
paper
authors
paper*
title authors publisher year source?
author+
Слева – имя элемента
справа – регулярное выражение над элементами и текстовыми данными
Синтаксис DTD
Декларация типа элемента
<!element
<!element
<!element
<!element
<!element
<!element
<!element
<!element
bibliography book*>
book (title, authors, publisher, year, source?)>
title (#PCDATA)>
authors author+>
author (#PCDATA)>
publisher (#PCDATA)>
year (#PCDATA)>
source EMPTY>
Декларация списка атрибутов
<!attlist book id ID #REQUIRED>
<!attlist source
form (hardcopy|latex|html|xml) #REQUIRED
pages CDATA>
Синтаксис DTD
Последовательность книг
(возможно пустая)
<!element
<!element
<!element
<!element
<!element
<!element
<!element
<!element
bibliography book*>
book (title, authors, publisher, year, source?)>
title (#PCDATA)>
Заголовок, затем автор, затем
authors author+>
издательство, затем год и может
author (#PCDATA)>
быть source
publisher (#PCDATA)>
Последовательность авторов
year (#PCDATA)>
source EMPTY>
Символьные данные
<!attlist book id ID #REQUIRED>
Пустой элемент
<!attlist source
form (hardcopy|latex|html|xml) #REQUIRED
pages CDATA>
Синтаксис DTD
<!element
<!element
<!element
<!element
<!element
<!element
<!element
<!element
bibliography book*>
book (title, authors, publisher, year, source?)>
title (#PCDATA)>
authors author+>
Имя элемента
author (#PCDATA)>
Имя атрибута
publisher (#PCDATA)>
year (#PCDATA)>
source EMPTY>
Тип атрибута
<!attlist book id ID #REQUIRED>
Атрибут обязательный
<!attlist source
form (hardcopy|latex|html|xml) #REQUIRED
pages CDATA>
Синтаксис DTD
Тип атрибута “ID”
<!attlist book id ID #REQUIRED>
<!attlist selectedbook ref IDREF #REQUIRED>
Тип атрибута
“ссылка на ID”
<selection>
<selectedbook ref="1">
</selection>
…
<bibliography>
<book id="1">
<title>… </title>
…
</book>
</bibliography>
IDREF атрибут
ID атрибут
MathML
• Сохраняет возможности LaTeX’а
структурированной разметки формул
• Два типа разметки:
Разметка представления (как в LaTeX’е)
 Разметка содержания (для работы
собственно с формулами, а не их
изображениями)

• Не привязан к полиграфии
Пример формулы
<mfrac>
<mn>1</mn>
<msup>
<mfenced>
<mrow>
<mi>&alpha;</mi>
<mo>+</mo>
<mi>&beta;</mi>
</mrow>
</mfenced>
<mn>2</mn>
</msup>
MathML
\[
\frac{1}
{(\alpha+\beta)^2}
\]
LaTeX
Представление XMLдокументов – XSLT
•
XSLT – Extensible Stylesheet Language –
Transformations (расширяемый язык таблиц
стилей – преобразования)

•
отделение содержания (XML) от представления
(XSLT)
CSS и XSLT

XSLT обладает большими возможностями:
 отбор элементов
 трансформации XML-деревьев
 внешний вид, основанный на содержании (результат
может зависеть от данных)
XSL(T)
• XSL использует синтаксис XML
• Компоненты XSL:
1. Язык XSLT для трансформации XMLдокументов
2. Словарь для форматирования XML.
FO (Formatting Objects – свойства
форматирования как в CSS)
Работа XSLT
Трансформация
XSLT таблица
стилей
XML исходное дерево
XML,HTML,csv, текст… результат
Элементы XSLT
• <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

•
корневой элемент
<xsl:template match=шаблон name=имя>
содержимое для замены
</xsl:template>

Определяет правило: шаблон  содержимое для замены
• <xsl:apply-templates select=множество узлов>

•
Применить правило к выбранному потомку (ко всем)
<xsl:call-template name=имя>
Алгоритм работы XSLT
•
Основные шаги




•
сопоставляет шаблон элементам в исходном дереве,
находит элементы, подходящие под шаблон,
заменяет элемент на содержимое (из правила),
выбирает узлы для дальнейшей обработки
Управление


Рекурсивная обработка (<xsl:apply-templates/>)
Применение части правила для выбранных элементов
(<xsl:for-each select=множество элементов>,
<xsl:if …)
Пример применения XSLT
Тип элемента
<bibliography>
<book id="1">
<title>Использование символа
&amp;</title>
<author>Иванов И.</author>
</book>
<book id="2">
<title>Использование символа
&lt;</title>
<author>Петров П.</author>
</book>
</bibliography>
<xsl:stylesheet version="1.0“ xmlns:xsl="http://…">
<xsl:template match="bibliography">
<html><body><h1>Список книг</h1>
<table width=600>
<xsl:apply-templates/>
</table></body></html>
</xsl:template>
<xsl:template match="book">
Текст
<tr><td><xsl:number/></td>
замены
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="author|title">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>
Список книг
1.
2.
Использование символа &
Использование символа <
Шаблон
Результат
Иванов И.
Петров П.
XML Applications & Industry Initiatives
http://www.oasis-open.org/cover/xml.html#applications
•
•
•
•
•
•
•
•
Advertising: adXML place an ad onto an ad network or to a single vendor
Literature: Gutenberg convert the world’s great literature into XML
Directories: dirXML Novell’s Directory Services Markup Language (DSML)
Web Servers: apacheXML parsers, XSL, web publishing
Travel: openTravel information for airlines, hotels, and car rental places
News: NewsML creation, transfer and delivery of news
Human Resources: XML-HR standardization of HR/electronic recruiting XML
•
•
•
•
•
•
•
•
Voice: VoxML markup language for voice applications
Wireless: WAP (Wireless Application Protocol) wireless devices on the World Wide
definitions
International Dvt: IDML improve the mgt. and exchange of info. for sustainable
development
Web
Weather: OMF Weather Observation Markup Format (simulation)
Geospatial: ANZMETA distributed national directory for land information
Banking: MBA Mortgage Bankers Association of America --> credit report, loan file,
underwriting…
Healthcare: HL7 DTDs for prescriptions, policies & procedures, clinical trials
Math: MathML (Mathematical Markup Language)
Surveys: DDI (Data Documentation Initiative) “codebooks” in the social and
behavioral sciences
Язык XPath
Набор синтаксических правил для
адресации элементов XML-документа
• Подобен синтаксису файловой системы.
Корневой элемент - /, далее указывается тип
вложенного элемента
• Отличается возможным множественным
выбором
Пример:
<html>
<p>1</p>
<div>
<img/>
</div>
<p>2</p>
</html>
1. /html
2. /html/p
3. /html/div/img
XPath 2.0
•
•
•
•
Язык позволяет строить выражения для указания
элементов xml-документа
Результатом выражений являются
последовательности элементов
Последовательности «плоские», т.е. вложение одной
последовательности в другую даёт вложение
элементов
Типы данных:




элементы
булевый тип
численный тип (с плавающей точкой)
строковый тип
XPath 2.0
Оператор Описание
/
Выбирает дочерние элементы, находящейся слева от него. При использовании в
начале шаблона означает поиск от корневого элемента.
//
Рекурсивный спуск; ищет указанный элемент на любой глубине.
.
Текущий контекст.
*
Выбирает элементы с любыми именами.
@
Атрибут; префикс имени атрибута. При использовании без имени атрибута
выбирает все атрибуты, независимо от их имени.
:
Отделяет префикс пространства имен от имени элемента или атрибута.
()
Группирует операции для явного задания очередности.
[]
Накладывает фильтр, используется для индексации последовательности.
+
Сложение.
-
Вычитание.
div
Деление с плавающей точкой.
*
Умножение.
mod
Остаток от деления.
|
Объединение двух последовательностей.
XPath 2.0
•
•
•
•
•
•
•
Функции
last()
position()
count( последовательность )
id( элемент )
local-name( последовательность )
namespace-uri( последовательность )
name( последовательность )
and
or
not
=
!=
Операторы
<
<=
>
>=
XPath 2.0
•
•
•
•
•
•
•
•
•
Имя
self
child
parent
descendant
descendant-or-self
ancestor
ancestor-or-self
following
following-sibling
• preceding
• preceding-sibling
• attribute
• namespace
Оси
Описание
Сам узел
Дочерние узлы
Родительский узел
Потомки узла
Узел и его потомки
Предки узла
Сам узел и его предки
Все узлы после данного
Все узлы этого же уровня после
данного
Все узлы перед данным
Все узлы этого же уровня перед
данным
Узлы аттрибутов
Узлы пространства имен
XPath 2.0
<biblio>
<book id="1">
•
<title>Язык XML</title>
•
<author>Иванов И.</author>•
</book>
•
<book id="2">
•
<title>Стихи</title>
<author>Петров П.</author> •
<author>Иванов И.</author>•
•
<year value="2003"/>
•
</book>
•
<book id="3">
•
<title>Сказки</title>
<author>Петров П.</author>
</book>
</biblio>
/biblio/book/*
/biblio/*[year]/author
/biblio/book[author='Ива
нов И.']/title
/biblio/book/year[@value
='2003']/../author
/biblio/book[year/@value
='2003']/author
//book//[@]
/biblio/book[1]
/biblio/book[last()]
//book[not(year)]
/biblio/book[count(autho
r)=2]
//author[followingsibling::* | precedingsibling::* = 'Иванов И.']