Дошел до границы, потоптался и... пошел дальше в том же направлении :) Нет худа без добра, как говорится. Я все еще вздыхаю по Java, но - как там у классика? - наступаю мужественно на горло своей песне. А если вспомнить еще и китайскую философию, и понятия полноты и пустоты (о которых я узнал, читая
комментарии к тратктату Сунь-Цзы "Искусство войны"), то можно сказать, что отступление от Java (пустота) позволяет мне теперь наступать в сторону XML (новая полнота). И может это даже хорошо - не исключено, что XML несет в себе более важный приоритет на пути к конечной цели
"освоение BPM", чем Java.
И вот первая интересная остановка - описание структуры XML-документа. Исторически первым таким описанием был DTD (Document Type Definition). Однако как
сказано в той же Википедии, в настоящее время вместо DTD рекомендовано другое описание -
XML Schema. Переход к XML Schema обусловлен, как сказано, следующими основными причинами:
- Используется отличный от XML синтаксис - ну это понятно всякому, кто познакомится с тем, как описывается DTD
- Отсутствует типизация узлов - эта функция необходима для поддержки объектной модели XML-документа, или DOM (Document Object Model), в которой XML-данные представлены в виде древовиодной структуры, включащей в себя узлы
- Отсутствует поддержка пространств имён - важная составляющая 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.