XML и XSLT (2) Матросов Александр Васильевич Санкт-Петербургский государственный университет
2 Логическая и физическая структуры Extensible Markup Language (XML) 1.0 (Third Edition) W3C Recommendation 04 February 2004 (1998, 2000) Объект данных является XML-документом, если он формально- корректен в соответствии со спецификацией консорциума WWW Формально корректный XML-документ дополнительно МОЖЕТ быть действительным, если он удовлетворяет дополнительным ограничениям Каждый XML-документ имеет логическую и физическую структуры Физически состоит из сущностей, которые сами могут ссылаться на другие сущности. Сущность может содержать либо текстовые, либо двоичные данные. Сущность определяет некий универсальный способ ссылок на единицу хранимых данных в XML-документе Каждая сущность идентифицируется в документе своим именем Корневая сущность, или сущность документа, это та сущность, которая служит корнем дерева сущностей, передается синтаксическому анализатору и не имеет имени Логически состоит из объявлений, элементов, комментариев, символьных ссылок и инструкций по обработке, которые явным образом указываются в документе с помощью разметки Логическая и физическая структуры должны быть правильно вложены в соответствии с определением формальной корректности
3 Составляющие компоненты XML-документа Разметка: –начальный тег элемента ( ) –конечный тег элемента ( ) –тег пустого элемента ( ) –ссылка на сущность (&имя;) –ссылка на символ (&#десять_цифры; или &#xшестнад_цифры;) –комментарий (' ') –секция CDATA ( ) –объявление типа XML-документа –инструкция по обработке ( ) (имя не равно xml) –объявление xml ( ) Не относящийся к разметке текст называется символьными данными Пробельные символы (пробел, возврат каретки, перевод строки и табуляция) (регулируются атрибутом xml:space (default|preserve))
4 Формальная корректность (1) Текстовый объект является формально корректным XML-документом, если: 1. Рассматриваемый как целое, он соответствует продукции (правилу) document 2. Соответствует всем ограничениям формальной корректности, определенным в спецификации 3. Каждая из разобранных сущностей, явно или косвенно ссылаемая в документе, является формально корректной (1) document ::= prolog element Misc* Пролог состоит из –необязательного xml-объявления –необязательного блока инструкций по обработке, комментариев и пропусков –необязательного объявления типа документа, за которым может следовать необязательный блок инструкций по обработке, комментариев и пропусков За прологом следует один корневой элемент, который может включать обычный текст, другие элементы, символьные ссылки, ссылки на сущности, комментарии, инструкции по обработке и секции символьных неразмеченных данных ( ) Завершает документ необязательный блок инструкций по обработке, комментариев и пропусков
5 Формальная корректность (2) (2) Ограничения формальной корректности по-существу определяют синтаксические правила языка XML (3) Разобранная сущность формально корректна, если ее содержимое соответствует продукции content (обычный текст, элементы, символьные ссылки, ссылки на сущности, комментарии, инструкции по обработке и секции символьных неразмеченных данных). Это означает, что когда в документ вставлено содержимое всех разобранных сущностей, то он сам будет формально корректным. Smith Sam October 15, 2003 Tomatoes 8 $1.25 Oranges 24 $4.98
6 Элементы и атрибуты Имена тегов: –Начальный символ – буква, символ подчеркивания или двоеточие –Далее – буквы, цифры, символ подчеркивания, дефис, точки и двоеточие –Двоеточие лучше не использовать – применяется для отделения пространства имен XML чувствителен к регистру Элемент создается заданием начального и конечного тега (имена в них одинаковые!) – HELLO –Содержимое соответствует правилу content Пустой элемент Корневой элемент единствен и содержит все остальные элементы XML- документа Элемент может иметь атрибуты, определяющие дополнительные данные для элемента –Задаются в виде имя_атрибута=значение в начальном теге элемента –Значение атрибута задается обязательно в кавычках или апострофах – HELLO –Правило задания имен атрибутов как и для имен тегов –В одном теге имена атрибутов уникальны! – HELLO –Значения атрибутов всегда строковые Атрибут общего назначения xml:lang указывает применяемый язык для содержимого документа и значений атрибутов
7 Пространства имен XML (1) Что делать, если определенные разными разработчиками имена тегов совпадают, а словари следует использовать совместно (XHTML и MathML)? Пространства имен решают эту проблему (к именам атрибутов и тегов добавлять префикс, отделяемый двоеточием) Пространство имен определяется атрибутом xmlns: =уникальное_имя (обычно URN (URL или URI)) Reak World XML Совмещение нескольких пространств имен Reak World XML OK
8 Пространства имен XML (2) Локальное пространство имен Reak World XML OK Два пространства имен зарезервированы: xml и xmlns Пространства имен, заданные по умолчанию, задаются атрибутом xmlns без префикса (и все теги этого пространства имен также без префиксов) Reak World XML OK