создать свой сайт на PHP, HTML, CSS
23.02.2012

Мы рекомендуем


RSS

rss новости   rss статьи

Обзор XML технологий


С момента своего появления язык XML зарекомендовал себя с самой лучшей стороны, поэтому довольно быстро получил широкое распространение. Он оказался чрезвычайно полезной технологией, которая, однако, может оказаться весьма непростой для понимания — если попытаться рассмотреть все, что попадает под определение «XML».

XML

XML 1.0 (Second Edition) — это, разумеется, основной ствол ветвящегося дерева XML.  Для определения жестких правил формирования текстового формата используется Document Type Definition (DTD). Нынешнее (втрое издание) этого документа содержит ряд исправлений, накопившихся за время его существования. Эта спецификация переведена на множество языков, хотя только английская версия является нормативной, что означает, что лишь один документ может считаться стандартом.

Спецификация XML 1.1  — это первая редакция, в которой изменено определение корректно оформленного (well-formed) XML-документа. Наиболее существенное изменение заключается в пересмотре обработки символов с целью более естественной адаптации спецификации XML к изменениям в стандарте Unicode и обеспечения нормализации символов для различных версий Unicode посредством указания на спецификацию «Модель символов для World Wide Web 1.0». Кроме того, в спецификации XML 1.1 в списке символов конца строки появился символ NEL, используемый для конца строки (EOL) в мейнфреймовых системах IBM. Это дополнение нельзя расценить однозначно — некоторые наблюдатели полагают, что та небольшая польза, которую извлекут пользователи мейнфреймов, не стоит внесения столь существенного изменения. С другой стороны, существует мнение, что все эти нововведения слишком незначительны, чтобы вызвать проблемы с совместимостью различных версий XML.

В основе XML лежит стандартный обобщенный язык разметки (Standard Generalized Markup Language, SGML), определенный в ISO 8879:1986. XML представляет собой значительно упрощенный вариант SGML, подвергнутый корректировке для лучшего соответствия среде Web.

 

Пространства имен

В спецификации «Пространства имен XML 1.0»  описывается механизм универсального обозначения имен элементов и атрибутов в XML-документах. Рассмотрим небольшой пример, который объясняет причины появления этой технологии: представим XML-словарь, в котором элементы с именами «head» и «body используются для описания частей человеческого тела. Предположим, что необходимо добавить в этот документ фрагмент XHTML. XHTML тоже определяет элементы «head» и «body». Возникает вопрос: как же тогда отличить эти XHTML-элементы от одноименных, представленных в главном словаре? Для решения этой задачи предлагается, используя пространства имен XML, назначать каждому словарю свой маркер. В пространствах имен XML каждый словарь называется пространством имен и для выражения маркеров словарей используется специальный синтаксис. Каждый элемент или атрибут может быть связан с одним пространством имен, и, таким образом, можно отличить элемент «head», используемый для описания части тела, от «head» в XHTML. Некоторые эксперты XML-технологий против применения просранства имен, т.к. это усложняет процесс обработки XML-документов. Тем не менее пространства имен превратились в фактически повсеместно признанный стандарт среди пользователей XML и, они задействованы практически во всех технологиях обработки XML.

Документ «Пространства имен XML 1.1»  — это уточненная версия спецификации, в которой учтены дополнения и исправления, а также, помимо прочего, добавлена поддержка локализованных URL.

 

Канонический XML («c14n»)

В спецификации «Канонический XML, версия 1.0»  определяется стандартный метод генерации физического представления XML-документа, называемого канонической формой. В этой спецификации объясняется, как выполнять эти модификации, допустимые с точки зрения синтаксиса XML, не меняя при этом содержания. Например, порядок атрибутов в XML не имеет значения, поэтому, если в одном документе все атрибуты отсортированы в алфавитном порядке, а другой документ отличается от первого только тем, что атрибуты располагаются в каком-то ином порядке, эти два документа являются идентичными с точки зрения XML 1.0, несмотря на различия в физическом представлении. В результате, возникают серьезные практические проблемы. Например, в случае если необходимо поставить цифровую подпись на документ, чтобы гарантировать его целостность, изменение порядка атрибутов приводит к нарушению подписи, несмотря на то, что сам документ при этом не изменяется. Решение этой проблемы заключается в преобразовании документов в каноническую форму (процесс называемый «канонизацией c14n») до того, как будут выполняться различные операции над документом: его подписание, сравнение текста и т.п. Благодаря этому, изменения, не существенные с точки зрения XML 1.0, вносятся корректным образом.

Иногда, XML-документ, который необходимо сравнить или подписать, на самом деле является просто разделом более крупного документа. Спецификация c14n учитывает и этот случай — указывая порядок обработки конструкций XML, например, объявлений пространств имен. В том случае, если требуется, чтобы эта спецификация ограничивалась подмножеством документа, необходимо использовать соответствующий алгоритм «Исключающая канонизация XML, версия 1.0».

 

XPath

В спецификации XML Path Language (XPath) 1.0 определяются синтаксис и модель данных для адресации частей XML-документа. В ней описываются некоторые функциональные возможности универсального языка выражений. Данная спецификация задумана как простой язык, который можно использовать для не зависящей от приложения обработки в XML-системах. Например, с помощью XPath можно определять в документе место элементов, являющихся заголовками разделов.

XPath, пожалуй, самая успешная XML-технология, за исключением XML 1.0. Она является основой XSLT, очень удачного языка трансформаций XML, поддерживается практически во всех платформах, предназначенных для обработки XML. В спецификации XPath 2.0 предусматривается значительное расширение функциональных возможностей, включая поддержку XML-схемы W3C (см. ниже) и множество новых базовых функций.

 

XML Base

В спецификации XML Base определяется способ ассоциирования XML-элементов с унифицированными идентификаторами ресурса (URI) с целью более точного задания того, как преобразовывать относительные унифицированные идентификаторы при проведении операций обработки XML. Предположим в качестве примера, что XML-элемент содержит сылку, которая использует относительный URL. В этом случае абсолютный унифицированный локатор, для которого необходимо задать ссылку, будет определятся путем указания на базовый унифицированный идентификатор этого элемента. Большинство XML-процессоров допускают базовый унифицированный идентификатор ресурса для каждой сущности XML, которая образует этот документ. Это поведение процессоров (по умолчанию) можно отменить, воспользовавшись технологией XML Base.

 

XInclude

В спецификации «Включения XML (XInclude) 1.0»  определяется система для объединения XML-документов. Обычно XInclude используется, если необходимо разбить XML-документы на управляемые части. Документы могут быть разбиты произвольным образом, а затем объединены обратно с помощью XInclude. Внешние разобранные сущности (External parsed entities), конструкции XML 1.0, которые позволяют загружать разделы документа из отдельного файла, могут быть использованы аналогичным образом. Некоторые обозреватели отмечают, что XInclude — это ненужная спецификация. Однако, XInclude предлагает некоторые специальные функциональные возможности, в том числе и выбор разделов документа для включения.

 

XML Infoset

В спецификации «Информационный набор XML», также известной как XML Infoset, определяется абстрактный способ описания XML-документа в виде набора объектов, называемых информационными единицами (information items), обладающих специальными свойствами. Этот абстрактный набор данных объединяет свойства XML-документов, которые определяются в спецификациях XML 1.0, «Пространства имен XML 1.0» и XML Base. Спецификация XML Infoset используется как основание для нескольких других спецификаций, которые пытаются разбить XML-документы на некую совокупность составных объектов.

 

XPointer

Спецификация XPointer Framework определяет язык, который можно использовать для указания фрагментов XML-документа. Вероятно, читатель уже знаком с тем, как использовать унифицированные локаторы ресурса со знаком решетки («#»), чтобы связываться с отдельным разделом HTML-документа. Язык XPointer характеризуется аналогичными, но гораздо более широкими возможностями по заданию ссылок или сносок на XML-документы. Эту структуру можно использовать с xpointer() scheme, element() scheme и xmlns() scheme, в которых определены специальные инструкции для выражения интересуемых фрагментов документа в рамках структуры XPointer.

История разработки и принятия этой спецификации довольно непростая. Так, сами члены Рабочей группы разработали спецификацию FIXptr, являющуюся полной противоположенностью XPointer. Некоторые альтернативные схемы XPointer включают the xpath1() scheme.

 

XLink

В спецификации XML Linking Language (XLink) 1.0 определяется общая структура для выражения ссылок в XML-документах. Поскольку основу Web-а составляет гипертекс, связанный при помощи ссылок, реализация возможностей задания сложных ссылок всегда рассматривалась как краеугольный камень XML. На самом деле первоначально XLink называлась «XML, часть 2». К сожалению, определить систему задания ссылок для XML оказалось намного сложнее, чем для статических словарей, как, например, HTML. Спецификация XLink прошла нелегкий и долгий путь разработки и утверждения. Например, разработчики XHTML решили не использовать XLink и разработали свою собственную систему HLink. Даже сегодня, спустя несколько лет после завершения работ над XLink, эта технология пока не пользуется широким признанием.

Тем не менее XLink играет значительную роль, находясь в центре многих важных XML-проектов, и обеспечивает задание гораздо более мощных ссылок по сравнению с простыми однонаправленными ссылками HTML. XLink поддерживает как ссылки HTML (простые ссылки, simple links), так и более сложные, которые могут иметь многочисленные конечные точки (расширенные ссылки, extended links), а также ссылки, которые выражаются не в связанных документах, а в специальных «кольцевых» документах (hub documents), называемых базами связей (linkbases).

 

XML-схема W3C

В спецификациях  XML Schema Part 1: Structures и XML Schema Part 2: Datatypes  определяется еще один язык схемы для XML. Первая спецификация позволяет накладывать ограничения на структуру документа, вторая — на содержание простых элементов и атрибутов. Спецификация XML-схема W3C (W3C XML Schema, WXS) была подвергнута серьезной критике за свою сложность и отсутствие выразительности; результатом чего явилось существование других конкурирующих языков, как, например, RELAX NG. Однако, сейчас пользователи всё чаще просто используют тот язык схемы, который их устраивает больше всего, а затем с помощью одного из широко представленных на рынке инструментальных средств выполняют преобразование из одного языка схем в другой. Несмотря на многочисленные просьбы разработать альтернативные системы типов, в многих других спецификациях используются типы «XML-схема, часть 2: типы данных». Рабочая группа начала работы над WXS 1.1.

 

RELAX NG

В спецификации RELAX NG (Спецификация комитета организации OASIS и стандарт ISO) описывается язык XML-схемы, то есть язык, который можно использовать для определения и ограничения XML-словарей. Исходным языком XML-схемы является Document Type Definition (DTD), определенный в XML 1.0. Тем не менее некоторым разработчикам не нравится язык DTD из-за его неудобного синтаксиса, ограниченности в возможности выразить конструкции для текста и разметки, а также из-за сложностей при обработке пространств имен XML. В результате, появилось несколько новых языков XML-схемы, предназначенных для замены или улучшения DTD, включая RELAX NG, который пользуется признанием за свое простоту и выразительность. Основная спецификация RELAX NG определяет синтаксис схем; в спецификации «Компактный синтаксис RELAX NG» RELAX NG Compact Syntax описывается простой текстовый синтаксис для схем RELAX NG. Ожидается, что этот текстовый синтаксис будет включен в стандарт ISO в качестве приложения. RELAX NG — это часть проекта ISO  Document Schema Definition Languages (DSDL), целью которого является стандартизация систем обработки XML-схем.

 

Schematron

В спецификации The Schematron Assertion Language 1.5 определяется язык схемы, который использует подход, отличный от примененного в DTD, RELAX NG или WXS. Schematron предполагает задание совокупности правил, по которым проверяется XML-документ, а не отображение всей структуры дерева XML-формата, который выражается от корневого узла до листьев. Благодаря этому Schematron оказывается очень удобным не только как язык схемы, но и как дополнение к другим языкам схем. Поскольку на Schematron можно выражать ограничения, которые невозможно записать на других языках схем, перечисленных выше, его часто используют совместно с ними.