Слайд 2
XML
XML = eXtensible Markup Language (расширяемый язык разметки)
Поддерживается W3C (World
Wide Web Consortium); первая рекомендация (описание) – 1998 год
Подмножество
SGML (Standard Generalized Markup Language): упрощенная версия SGML
XML - метаязык
Документ – дерево элементов
Элемент состоит из открывающего и закрывающего тегов
Описание элемента может быть дополнено атрибутами, помещаемыми в открывающий тег
Элемент может ссылаться или описывать мультимедийный объект
Отличия от HTML (также базирующегося на SGML):
HTML - для описания внешнего представления документа ; XML – для описания структуры и семантики документа
Расширяемый: можно задавать свои собственные теги
HTML - язык для публикации в Веб; XML - для более широкого применения
Слайд 3
XML
Термин “XML” иногда используется неправильно:
Ошибочные представления о XML:
XML
– не язык программирования (но язык программирования можно описать
с помощью XML-разметки)
XML – не протокол передачи данных (но типичная задача XML описывать структуру документов/данных, передаваемых по компьютерным сетям)
XML – не структура базы данных (но XML может храниться в бд и можно выполнять различные запросы к XML-данным)
of Multimedia Database Systems
Subrahmanian
Multimedia and Imaging Databases
Khoshafian
Baker
Слайд 5
XML
Языки разметки базируемые на XML:
Wireless Markup Language (WML):
формат данных для (беспроводных) устройств, работающих с протоколом WAP
(мобильные телефоны)
Synchronized Multimedia Integration Language (SMIL):
Задает временную разметку, внешнее вид и т.д. для мультимедийных презентаций
Определяет порядок воспроизведения мультимедийных файлов
Для просмотра требуется SMIL-совместимый плеер (AMBULANT, MS IE6)
Руководство и примеры: http://www.multimedia4everyone.com/
Scalable Vector Graphics (SVG): для описания двухмерной векторной графики
Mathematical Markup Language (MathML): для описания математических обозначений (формул)
Chemical Markup Language (CML): для представления химических формул
... множество других
Слайд 6
XML-термины
DTD = Document Type Definition:
Определяет структуру документа
Коллекция похожих
документов обычно имеет одинаковый DTD
Задает описание документа: какие элементы,
какие атрибуты, в каком порядке, количестве и т.д.
XML Schema:
DTD с более широкими возможностями
Замена DTD
Сравнение XML Schema и DTD:
DTD описывается не на XML (т.е. с помощью своего не XML формата)
XML Schema позволяет создавать более расширяемые и гибкие описания
XML Schema позволяет определять ограничения на тип данных
Слайд 7
XML-термины
Пространства имен (namespaces):
Позволяют избегать многозначных толкований элементов и
атрибутов (с одинаковыми именами)
Группируют понятия, относящиеся к одному и
тому же приложению (объекту, понятию и т.д.)
Используются уникальные идентификаторы – определяющие пространства имен
Элемент или атрибут однозначно идентифицируется по своему имени плюс по пространству имен к которому элемент/атрибут относится
Слайд 8
XML-термины
XSL = EXtensible Stylesheet Language (расширяемый язык таблиц
стилей):
Преобразование XML-документа
Изменение структуры XML-документов; например, для представления одних и
тех же XML-данных на различных носителях (экране, бумаге, мобильном телефоне)
XML-документ после преобразования может оказаться не XML-документом (например, документом в формате PDF)
XSL-спецификация состоит из двух частей:
XSL Transformations (XSLT): реорганизация структуры и содержимого
XSL Formatting Objects (XSL-FO): визуальное представление
Слайд 9
XML-термины
XPath:
Язык для адресации определенных частей в XML-документах
Используется в
XSLT, XPointer, XQuery
CSS - каскадные таблицы стилей (Cascading Style Sheets):
Применяется в
HTML
Более ограниченные возможности по сравнению с XSL-FO
XLink:
Ссылки между документами
Определяет действия, связанные с ссылками (например, как отображать документ по ссылке)
XPointer:
Расширение XPath, используемое XLink, для указания на любой фрагмент в другом документе
XHTML:
HTML, переформулированный на XML
Поддерживается W3C с 2000 года
Слайд 10
Программные средства для работы с XML
XML-Парсер:
Проверки структуры документов
и типов данных, задаваемых DTD/XML Schema
Пример: Xerces
XSLT-процессор:
Преобразование XML-документа в
другой тип документа (XML, HTML, текстовый и т.д.)
Пример: Xalan
Процессор форматирования (formatting objects processor):
Основан на XSL-FO
Результат форматирования: PDF, PCL, PS, SVG и ряд других
Пример: Apache FOP
XML-редактор:
Множество разных
Создание, редактирование XML-документов, DTD, XML Schema и т.д.
Пример: XML Spy
XML-браузер:
Преобразование XML в HTML
Реализовано во всех основных - MSIE, Firefox, Opera
Слайд 11
Программные интерфейсы (API) для XML
XML-документы – обычные текстовые
файлы; в принципе можно обойтись без API
Тем не менее,
в почти каждом приложении, работающим с XML-данными, используются стандартные операции для доступа к XML-данным
Document Object Model (DOM):
Рассматривает документы как объекты
Строит древовидную структуру документа в памяти
Предоставляет методы для движения по дереву и манипуляцией с узлами дерева
Также применима к грамматически правильным HTML-документам
Спецификация от W3C
Simple API for XML (SAX):
Две версии: SAX1 и SAX2
Основана на модели событий (под событием понимается начало тега, конец тега и т.д.)
Элементы обрабатываются в том порядке в каком встречаются
Streaming API for XML (StAX):
Лишено ряда недостатков DOM и SAX
Слайд 12
Хранение XML в СУБД
Два способа хранить XML-данные в
базе данных:
Преобразование схемы (схем) XML-документов в схему базы данных:
Использование
своей собственной модели данных – реляционной, иерархической, объектно-ориентированной
Например, хранение документа с описанием заказа (в XML) в реляционной база данных – данные распределяются в реляционной бд по таблицам «Заказы», «Наименования», «Клиенты» и т.д.
База данных, поддерживающая этот способ, называется базой данных с XML-поддержкой (XML-enabled); XML-функциональность может быть добавлена к бд с помощью стороннего программного обеспечения
Единица хранения (в случае реляционной модели данных): запись (строка в таблице)
Слайд 13
Хранение XML в СУБД
Два способа хранить XML-данные в
базе данных:
Использование определенного набора структур, позволяющего хранить любой XML-документ:
XML-модель
данных
Используется набор таблиц, позволяющий хранить произвольные XML-документы (Элементы, Атрибуты, Текст, и т.д.)
Хранение документов с произвольной схемой или даже с неизвестной (отсутствующей) схемой
База данных, поддерживающая этот способ, - нативная (или прирожденная) XML-база данных (native XML database)
Единица хранения: XML-документ
Слайд 14
Хранение XML в СУБД
База данных для хранения данных
или документов?
Дата-ориентированные документы (data-centric):
Документы, использующие XML для транспортировки данных
Преимущественно
для машинной обработки
Примеры: торговые заказы, расписания рейсов, биржевые индексы, научные данные (не всегда), многие контентно-насыщенные документы (вроде страницы с описанием книги на Ozon.ru)
Регулярная структура
Порядок элементов обычно не имеет значения
Многие контентно-насыщенные документы
Документо-ориентированные документы (document-centric):
Документы с которыми работают люди
Примеры: книги, сообщения электронной почты, реклама, почти все создаваемые вручную XHTML-документы
Менее регулярная или иррегулярная структура
Порядок элементов в большинстве случаев важен
На практике, разделение между дата-ориентированными и документо-ориентированными документами не всегда однозначно
Тем не менее, разделение важно:
Данные: хранить в базе данных с XML-поддержкой
Документы: в нативной XML-базе данных
Слайд 15
Хранение XML в СУБД
Нативная XML база
данных:
Формальное техническое определение отсутствует
Задает (логическую) модель XML-документа; как минимум,
модель должна включать в себя элементы, атрибуты, секции PCDATA, и порядок документа; примеры моделей – модель данных XPath, модели, основанные на DOM и событиях в SAX 1.0
Фундаментальная единица (логического) хранения - XML-документ (в то время как в реляционной базе данных – запись)
Использование определенной физической структуры хранения не обязательно; например, нативная XML-бд может строиться на основе реляционной, иерархической или объектно-ориентированной базе данных или использовать собственный формат хранения, например, в виде индексированных и заархивированных файлов
Слайд 16
Хранение XML в СУБД
Нативная XML-база данных или традиционная
(в первую очередь, подразумеваем, реляционную) база данных?
Открытый вопрос
Реляционная модель
данных (начало 1970-х годов) – устоявшаяся технология: множество решений, методик, продуктов, множество специалистов, ...; солидный математический и научный базис
XML-модель данных (стандарт с 1998г) – первые шаги ...
Причины не использовать нативную XML-бд: слабые гарантии производительности при больших и очень больших объемах документов; зачаточные возможности индексирования (над совершенствованием сейчас ведется активная работа)
Рекомендация на данный момент: при выборе реляционная бд с (или даже без) поддержкой XML должна иметь приоритет, но(!) активно использовать XML как формат описания данных
Тем не менее, для ряда приложений нативная XML-бд хороший вариант: в частности, когда требуется интенсивное выполнение запросов к XML-данным
Слайд 17
Пример нативной XML-базы данных:
Sedna1:
Открытый
исходный код
Разработана «с нуля» (не на основе какой-то бд)
Поддержка
XQuery
Поддержка ACID транзакций
Безопасность (пользователи, роли, привилегии)
Индексы по структуре и по значениям
API к нескольким языкам программирования
1 http://modis.ispras.ru/sedna/
Хранение XML в СУБД
Слайд 18
XQuery
Язык запросов XML
Разработан в W3C; первая версия -
XQuery 1.0 в 2003г.
Надмножество XPath
Совместим с другими XML-стандартами
Изначально предназначен
для извлечения информации и не включал средств для модификации существующих документов XML
XQuery аналог SQL для баз данных
XQuery поддерживается тремя главными производителями бд (IBM, Oracle, Microsoft), а также многими другими бд