XML-технология обеспечивает кроссплатформенный и расширяемый стандарт для формата данных. При обсуждении XML-технологии мы будем опираться на спецификации XML 1.0, XML Information Set, Namespaces in XML 1.0 и XML Schema.
В архитектуре Web-сервисов XML-формат используется как для описания сервисов, так и для обмена сообщениями с Web-сервисами.
eXtensible Markup Language (XML) — это язык разметки документов, обеспечивающий текстовый формат хранения данных. Язык XML является подмножеством языка Standard Generalized Markup Language (SGML) и описывает определенный класс объектов, называемых XML-документами.
XML-формат представляет собой платформонезависимый способ структурирования информации путем представления документа в виде дерева элементов, каждый из которых может иметь набор атрибутов, представляющих пару "имя/значение", и содержать другие элементы и/или текст. При этом каждый элемент дерева может ссылаться на другие элементы с помощью своих атрибутов.
Приложения, работающие с XML-документами, для их обработки используют программный компонент — XML-процессор, обеспечивающий доступ к содержимому и структуре XML-документа. В технологии Java XML-процессоры представлены семейством Java for XML Processing (JAXP), включающим в себя процессоры DOM, SAX, StAX и TrAX.
XML-процессоры подразделяются на две категории — потоковые и объектные обработчики. При потоковой обработке XML-документа XML-процессор анализирует документ последовательно, в реальном времени, что экономит ресурсы памяти. SAX — это потоковый XML-процессор. При объектной обработке XML- документа XML-процессор создает в памяти объекты, представляющие состояние документа, что дает возможность в произвольном порядке анализировать его части. DOM — это процессор, поддерживающий объектную модель документа.
Процессор StAX является промежуточным между SAX и DOM, обеспечивая управление анализом XML-документа в приложении.
Процессор TrAX дает возможность трансформации XML-документа в другие форматы данных с использованием таблицы стилей XSLT. Существуют также XML- процессоры, трансформирующие XML-документы в формат HTML и XHTML с использованием каскадных таблиц стилей CSS.
Модель XML-документа описывает его в терминах логической и физической структуры. Логическая структура состоит из объявления, определения типа документа, элементов, комментариев, ссылок и инструкций по обработке документа.
Каждый XML-документ может начинаться с объявления, ограниченного тегами <?xml
и ?>
и включающего в себя атрибуты version (версия XML-спецификации — на сегодняшний день только 1.0), encoding (символьная кодировка документа, по умолчанию Unicode) и standalone (по умолчанию no, означает, что документ может иметь свое внешнее описание).
Далее в XML-документе может находиться описание структуры документа — определение типа документа DTD (Document Type Definition) или ссылка на внешний DTD-файл.
После объявления и определения типа документа его логическая структура представлена набором элементов, комментариев, ссылок и инструкций по обработке документа.
Элементы XML-документа, ограниченные тегами, которые называются разметкой, формируют его иерархическую структуру и могут иметь атрибуты, которые так же, как и элементы, способны хранить данные. XML-документ должен содержать как минимум один корневой элемент.
XML-теги определяют значение, типы данных, а не способ их отображения, как в формате HTML.
Атрибуты элементов представляют собой пары "имя/значение" и могут быть трех типов — строковый тип, лексемы и перечисления.
Дочерний элемент корневого элемента — это такое же его свойство, как и атрибут, за исключением того, что дочерний элемент может иметь свою сложную структуру.
Комментарии ограничиваются тегами <!--
и -->
и предназначены для документирования XML-документа.
Ссылки ограничиваются амперсандом (&
) и точкой с запятой (;
) и используются в XML-документах для подстановки при обработке документа вместо них символов или различного рода данных, описанных в определении DTD. Подставляемые данные могут быть обрабатываемыми XML-процессором, т. е. представлены в XML- формате, или необрабатываемыми — текстовые данные не формата XML, изображения и другие двоичные данные. Кроме того, для включения в XML-документ символьных данных, которые не следует обрабатывать XML-процессором, используется секция CDATA, ограниченная тегами <![CDATA[
и ]]>
.
XML-ссылка — это ссылка на внешний объект, сущность, содержимое которого размещается в текущем месте, т. е. ссылка на сущность работает как подстановка и обеспечивает модульность XML-документа, в отличие от HTML-ссылки, являющейся инструкцией приложению для перехода на другой HTML-документ или фрагмент HTML-документа.
Инструкции по обработке ограничиваются тегами <?
и ?>
и предназначены для передачи информации приложению, работающему с XML-документом.
Физическая структура XML-документа описывает его как набор сущностей, которые могут быть обрабатываемыми и необрабатываемыми, внешними и внутренними. XML-документ должен содержать как минимум одну сущность — корневую сущность документа. Сущности могут включаться в XML-документ с помощью ссылок.
XML-документы характеризуются условиями корректности (правильности) и действительности. Правильный XML-документ — это документ, имеющий один корневой элемент, элементы которого не перекрываются, удовлетворяющий другим требованиям спецификации XML. Действительный XML-документ — это документ, имеющий описание своей структуры и соответствующий этому описанию.
Помимо базового XML-синтаксиса, основные понятия XML-технологии, используемые в технологии Web-сервисов, — это XML Infoset, XML Schema и XML Namespaces.