Описание структуры XML-документа: DTD, XML Schema, RELAX NG...

Jan 20, 2010 10:02

Дошел до границы, потоптался и... пошел дальше в том же направлении :) Нет худа без добра, как говорится. Я все еще вздыхаю по Java, но - как там у классика? - наступаю мужественно на горло своей песне. А если вспомнить еще и китайскую философию, и понятия полноты и пустоты (о которых я узнал, читая комментарии к тратктату Сунь-Цзы "Искусство войны"), то можно сказать, что отступление от Java (пустота) позволяет мне теперь наступать в сторону XML (новая полнота). И может это даже хорошо - не исключено, что XML несет в себе более важный приоритет на пути к конечной цели "освоение BPM", чем Java.

И вот первая интересная остановка - описание структуры XML-документа. Исторически первым таким описанием был DTD (Document Type Definition). Однако как сказано в той же Википедии, в настоящее время вместо DTD рекомендовано другое описание - XML Schema. Переход к XML Schema обусловлен, как сказано, следующими основными причинами:
  1. Используется отличный от XML синтаксис - ну это понятно всякому, кто познакомится с тем, как описывается DTD
  2. Отсутствует типизация узлов - эта функция необходима для поддержки объектной модели XML-документа, или DOM (Document Object Model), в которой XML-данные представлены в виде древовиодной структуры, включащей в себя узлы
  3. Отсутствует поддержка пространств имён - важная составляющая XML-документа, определяющая видимость наименований элементов XML (по аналогии с видимостью имен в той же Java)
Но есть и еще один вариант описания XML - это RELAX NG. Но кстати про него в русской Википедии пока ничего нет. Есть, правда, старое сообщение 2003 года о том, что RELAX NG стал международным стандартом. В этом сообщении есть два интересных момента: во-первых, RELAX NG - это полноценный ISO-стандарт, и во-вторых, разработка RELAX NG проводилась OASIS, а не W3C. Поскольку именно OASIS разрабатывала BPEL и BPMN, то это уже становится любопытным.

Про XML Schema и RELAX NG кое-что нашел developerWorks (здесь  часть 1 и часть 2 статьи), а именно следующее (автор статьи - некий Юч Огбуджи, американский инженер из Нигерии, дата публикации английского оригинала статьи - 20 января 2004):

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) [Спецификация комитета организации OASIS] описывается простой текстовый синтаксис для схем RELAX NG. Ожидается, что этот текстовый синтаксис будет включен в стандарт ISO в качестве приложения. RELAX NG - это часть проекта ISO «Языки описания схемы документа» (Document Schema Definition Languages (DSDL)), целью которого является стандартизация систем обработки XML-схем.

2. Про XML Scema W3C

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

программирование, xml

Previous post Next post
Up