Консалтинг и автоматизация в области управления
эффективностью банковского бизнеса

Журнал ВРМ World

Язык XML: качественно новый уровень

В феврале этого года расширяемому языку разметки исполнилось 6 лет. Много это или мало? По общепринятым меркам не так уж и много, но в век Интернета шесть лет - это весьма значительный срок. Так, за это время язык XML превратился в стандарт де-факто, универсальный формат для обмена данными. Важно то, что сейчас уже можно говорить не просто о становлении нового сегмента рынка информационных технологий, а выходе на качественно новый уровень, когда можно прогнозировать, пусть и с большой долей вероятности, перспективы его развития.

На сегодняшний день создан необходимый набор базовых XML-стандартов, которые, во-первых, успешно используются, а, во-вторых, служат основой для разработки новых перспективных технологий и спецификаций.

Появился целый ряд международных консорциумов, занимающихся разработкой всевозможных стандартов. Ведущее место среди них, бесспорно, занимают OASIS, W3C и некоторые другие организации, которые и определяют направление развития XML-технологий.

Как известно, консорциум W3C "ответственен" за создание базовых XML-стандартов (XML 1.0, XML Schema, Namespaces in XML и др.). Прошлый год, как впрочем и другие, был успешен для W3C - появились окончательно одобренные версии (рекомендации в терминах W3C) спецификаций SOAP 1.2, XForms, XML Events, SVG 1.1, XPointer и PNG. С перипетиями создания некоторых из них (например, о долгом пути SOAP 1.2) мы уже знакомили читателей. Этот год, похоже, также благоприятствует "стандартотворческой деятельности" W3C: во-первых, это появление долгожданной версии "самой главной" спецификации - XML 1.1, во-вторых, работа над новыми технологиями, например, xml:id и XML Schema API.

Так, в феврале, буквально за несколько дней до "дня рождения" XML, по словам некоторых представителей XML-сообщества, практически в обстановке повышенной секретности, W3C выпустил две спецификации в статусе рекомендаций: Extensible Markup Language (XML) 1.1 ("Расширяемый язык разметки (XML), версия 1.1") и Namespaces in XML 1.1 ("Пространства имен XML, версия 1.1").

Помимо этого на сайте консорциума появилось второе издание рекомендации XML Information Set. Данный документ содержит набор определений, предназначенных для использования в других спецификациях, которые ссылаются на информацию, содержащуюся в XML-документе. В этой редакции XML Information Set обновлен Infoset, применяемый в спецификациях Extensible Markup Language (XML) 1.1 и Namespaces in XML 1.1, уточнены последствия определенных видов несостоятельности документов, исправлены опечатки.

Кроме того, W3C обнародовал третье издание спецификации Extensible Markup Language (XML) 1.0 - данная публикация не является новой версией документа, в ней исправлены опечатки, обнаруженные во втором издании, и уточнено использование терминов RFC 2119: должен (must), следует (should) и может (may).

Как известно, впервые рекомендация XML 1.0 была опубликована в 1998 году и, несмотря на наличие многочисленных опечаток, для исправления которых потребовалось выпустить еще три издания этой версии языка, эта спецификации остается неизменной в отношении того, что считается корректно-оформленным XML-документом. Бесспорно, такая стабильность является исключительно ценной с точки зрения обеспечения возможности взаимодействия программных средств. Разговоры о будущих версиях XML ведутся уже не первый день, поэтому давайте посмотрим, чем отличается новая версия языка от предыдущей.

Новая версия XML призвана разрешить ряд проблемных мест: в первую очередь это вопросы, связанные с использованием символов Unicode (Unicode 4.0). Другие нововведения коснулись различия в декларировании версий XML-документов (1.0 и 1.1), поведения XML-процессоров в отношении XML-документов версий 1.0 и 1.1, объявления сущностей (entity).

Что касается спецификации Namespaces in XML 1.1, то в ней исправлены опечатки, выявленные в предыдущей версии документа, а также приведено описание механизма, позволяющего не объявлять префиксы.

Мы планируем посвятить обсуждении этих новых спецификаций языка XML одну из будущих статей нашего Журнала.

Еще одним примером совершенствования существующих технологий является публикация обновленных рабочих версий спецификации Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language ("Язык описания Web-сервисов (язык WSDL), версия 2.0, часть 1: Базовый язык") и WSDL 2.0: Web Services Description Language (WSDL) Version 2.0 Part 2: Message Exchange Patterns ("Язык описания Web-сервисов (язык WSDL), версия 2.0, часть 2: Шаблоны для обмена сообщениями").

В первом документе описывается базовый язык, который можно использовать для описания Web-сервисов, опираясь на абстрактную модель того, что данный сервис предлагает. Кроме того, в этом документе приводятся условия, которым должен отвечать процессор это языка.

Во втором документе определяются шаблоны, предназначенные для использования с языком WSDL. Эти шаблоны задают последовательность и количество абстрактных сообщений, зарегистрированных в одной операции. Помимо этого, данные шаблоны определяют, с каких и на какие узлы отправляются сообщения и какой сервис реализует эту операцию. Такие шаблоны описываются в терминах компонентной модели WSDL, а именно при помощи компонентов Label и Fault Reference.

Надо сказать, что консорциум W3C последовательно занимается разработкой языка WDSL: казалось бы, совсем недавно мы писали о версии 1.1 и работе над версией 1.2, однако W3C уже занялся WDSL 2.0.

Говоря о разработке новых технологий, стоит отметить рабочий проект спецификации xml:id Version 1.0 ("xml:id, версия 1.0"), опубликованный рабочей группой XML Core. Данная технология определяет механизм аннотирования элементов разметки с помощью уникальных идентификаторов. Представители рабочей группы предлагает "разрезервировать" атрибут xml:id, который в настоящий момент не допускается объявлять в корректно-оформленных (well-formed) XML-документах.

Что же послужило причиной появления этого документа? Известно, что спецификация XML 1.0 предоставляет механизм аннотирования элементов разметки с помощью уникальных идентификаторов. Этот механизм состоит в объявлении типа атрибута ID, после чего парсер проверяет, соответствует ли значение ID допустимой лексической форме, уникально ли это значение в разбираемом XML-документе и обладает ли каждый элемент единственным уникальным идентификатором. Чтобы объявить атрибуты ID в XML-документе, необходимо предоставить внутреннее или внешнее подмножество, содержащее такое объявление. Однако, поскольку обработка такой информации, если она находится во внешнем подмножестве, необязательна для XML-процессоров, нет никакой гарантии того, что все потребители XML-документа смогут успешно узнать эти идентификаторы.

Идентификаторы могут также быть объявлены с помощью внешнего механизма. Исключительный интерес в этой связи представляют XML-схемы, которые предоставляют тип xs:ID, обладающий теми же ограничениями по уникальности и проверке на допустимость, что и XML. Однако, и в этом случае нет гарантии того, что у потребителям будет доступна "нужная" схема или что они ее обработают.

Еще одна проблема заключается в том, идентификаторы, используемые в DTD и XML-схеме, раскрываются через концептуально различные механизмы - через свойство infoset (свойство атрибута) и через семейство свойств (определение типа), соответственно.

Таким образом, становится очевидной необходимость универсального механизма различения идентификаторов. Желательно, чтобы такой механизм позволял всем XML-процессорам, вне зависимости от того, осуществляют ли они проверку на допустимость или нет, различать уникальные идентификаторы элементов, что должно обеспечить надежное связывание XML-ресурсов.

Поэтому авторы этого документа предлагают снять запрет на использование атрибута xml:id в качестве обычного синтаксиса для идентификаторов в XML-документах. При использовании XML-процессоров, поддерживающих пространства имен, префикс xml, в соответствии с требованиями спецификации Namespaces in XML, ассоциируется с именем пространства имен http://www.w3.org/XML/1998/namespace.

Надо сказать, что вопросы использования уникальных идентификаторов всегда были предметом "яростных дискуссий" (см. например, Identity Crisis). И это неудивительно, если учесть значимость этого атрибута - например, в языке XBRL и разработанных на этом языке таксономиях финансовой отчетности активно используется механизм связывания ресурсов XLink, который опирается на уникальные идентификаторы элементов id.

При подготовке данного проекта члены рабочей группы учитывали опубликованный в августе прошлого года документ xml:id Requirements ("Требования к xml:id") и заключение Группы технического проектирования W3C (W3C Technical Architecture Group, TAG) How should the problem of identifying ID semantics in XML languages be addressed in the absence of a DTD? ("Как следует разрешать проблему идентификации семантики ID в XML-языках в случае отсутствия DTD?"). В этом документе TAG кратно излагается данная проблема и приводится общая схема ее решения - для этого предлагается применить семантику ID ко всем XML-процессорам.

Представители рабочей группы заявляют, что в предложенной рабочей версии спецификации пока не рассматривается, как соотносится xml:id Version 1.0 с другими спецификациями. И хотя, по словам авторов этого документа, цель их предложения состоит в обеспечении предельной согласованности с другими спецификациями, в некоторые спецификации, особенно те, которые не опираются на XML Information Set, потребуется вносить исправления. Эти "точки пересечения" с другими спецификациями является предметом изучения группы и будут перечислены в будущих версиях документа.

Еще одна интересная задумка W3C - членская подача (member submission) XML Schema API (интерфейс прикладного программирования для XML-схемы), подготовленная представителями компаний IBM и X-Hive. В этом документе описывается независящий от платформы и языка интерфейс, с помощью которого программы и скрипты могут динамически обращать к PSVI (post-schema-validation infoset, информационный набор после проверки на допустимость по схеме), определенный в рекомендации W3C XML Schema (документ XML Schema Part 1: Structures ("XML-схема, часть 1: Структуры") - Приложение С "C.2 Contributions to the post-schema-validation infoset"). Эта спецификация реализована в парсере Apache Xerces2 Java, кроме того также разработана компоновка на C++ и реализация в виде парсера Apache Xerces C++.

Давайте попробуем разобраться, что подвигло IBM и X-Hive на разработку этого интерфейса. Дело в том, что несмотря на то, что в спецификации DOM Level 3 Core предусмотрен улучшенный по сравнению со спецификациями DOM Level 1 или 2 доступ к свойствам XML Information Set, эта спецификация DOM не обеспечивает доступ к расширению, определенному в спецификации XML Schema (более подробно об этом рассказывается в статье "DOM Level 3 Core: отличительные особенности, часть 2)". Если принять во внимание то, насколько широко используется эта спецификация, очевидно, насколько весомым и полезным дополнением к DOM API окажется предлагаемый интерфейс. Тем не менее, рабочие группы XML Query и XSL уже ведут работу над расширением возможностей XML Schema и добавлением в нее новых свойств. Кроме того, рабочая группа XML Schema занимается разработкой новой версии спецификации (XML Schema 1.1). Поэтому, по словам официальных представителей W3C, можно сказать, что поскольку данное предложение является попыткой решить текущие проблемы, в будущем по-прежнему будут требоваться расширения XML Schema. Как отмечают в W3C, различные альтернативные подходы к решению этой проблемы возможны, но каждый из них имеет свои сильные и слабые стороны.

Ожидается, что данное предложение будет передано на рассмотрение рабочей группы XML Schema, Консультативного комитета консорциума и "вынесено на суд" сообщества. Поскольку более ранние обсуждения, посвященные поиску общего решения для XML Schema API, оказались бесплодными, пока неясно, вызовет ли это предложение интерес у компаний, использующих спецификацию XML Schema, и ее пользователей.

Завершая разговор о текущей деятельности W3C, можно предположить, что консорциум продолжит совершенствование основных спецификаций - как в случае с XML 1.1 и WSDL 2.0 - и попытается предложить новые технологии, которые будут направлены на улучшение уже существующих, как например, xml-id и XML Schema API.

Международная организация OASIS пользуется заслуженным авторитетом как автор ряда высококачественных стандартов. Действительно, признание RELAX NG как международного стандарта говорит о многом. В этом году, на наш взгляд, произошло еще два знаменательных события: во-первых Международная организация по стандартизации одобрила еще один проект OASIS - стандарт ebXML - отныне он называется ISO 15000 и состоит из четырех частей, соответствующих следующим компонентам стандарта ebXML:

  • ISO 15000-1: ebXML Collaborative Partner Profile Agreement (Соглашение о профиле общего партнера);
  • ISO 15000-2: ebXML Messaging Service Specification (Спецификация сервиса обмена сообщениями);
  • ISO 15000-3: ebXML Registry Information Model (Информационная модель регистра);
  • ISO 15000-4: ebXML Registry Services Specification (Спецификация сервисов регистра).

Второе знаменательное событие - это утверждение спецификации WS-Security (Web Services Security Specification, Спецификация безопасности Web-служб) в качестве стандарта OASIS. Напомним, что почти два года назад Microsoft, IBM и VeriSign инициировали начало работ над этим стандартом, передав в OASIS подготовленный ими проект спецификации.

Данный стандарт состоит из трех документов: SOAP Message Security 1.0 ("Безопасность сообщений SOAP 1.0), UsernameToken Profile 1.0 ("Профиль UsernameToken 1.0"), X.509 Certificate Token Profile ("Профиль символа сертификата X.509") - и двух XML-схем.

В первом документе описывается усовершенствование обмена сообщениями SOAP с целью обеспечения целостности и конфиденциальности сообщений. Описанные механизмы могут охватывать самые различные модели безопасности и технологии шифрования. Данная спецификация предлагает общий метод связывания символов безопасности с содержанием сообщения. При этой не требуется никакого специального типа символов безопасности, стандарт задуман как расширяемый, то есть должен поддерживать многие форматы символов безопасности. Например, клиент мог бы предоставить один формат в качестве доказательства подлинности личности, а другой - чтобы доказать наличие определенного бизнес-сертификата. Помимо этого, в спецификации описывается, как кодировать бинарные символы безопасности, основу XML-символов, а также, как включать зашифрованные ключи.

Во втором документе - UsernameToken Profile 1.0 - определяется, как использовать UsernameToken с основной спецификацией - WS-Security. В нем описывается, как пользователь Web-сервиса может предоставить UsernameToken в качестве средства идентификации запрашивающей стороны с помощью 'username' (имени пользователя) и как при желании можно использовать пароль (либо общий пароль или его эквивалент), чтобы подтвердить поставщику Web-сервиса подлинность личности.

В третьем документе описывается, как использовать сертификат X.509 с спецификацией WS-Security. Этот сертификат определяет связывание между отрытым ключом и набором атрибутов, которые включают (по крайней мере) имя субъекта, имя запрашивающей стороны, серийный номер и период достоверности. Сертификат X.509 можно использовать для подтверждения сообщения, усовершенствованного при помощи спецификации WS-Security или для идентификации открытого ключа, с которым шифруется это сообщение.

Разумеется, наш обзор не может охватить все события, произошедшие в области XML-технологий. Мы постарались остановится на наиболее ярких и показательных, хотя это вовсе не означает, что те, что не попали в поле нашего зрения, менее важны с точки зрения развития языка XML. Поэтому в заключении хотелось бы кратко упомянуть о появлении одного интересного и нужного инструмента - пакета утилит для тестирования на соответствие спецификации Basic Profile 1.0. Напомним, что эта спецификация была разработана в августе прошлого года международной организацией WS-I (Web Services Interoperability Organization, Организация по развитию возможности взаимодействия Web-сервисов), и теперь появилось средство для проверки выполнения Web-сервисами требований этой спецификации.