Журнал ВРМ World

Мировая история развития технологий управления эффективностью бизнеса – обзоры зарубежных публикаций

Обзор XML-стандартов, часть 2

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

Стандарты для обработки XML

Мир XML огромен и постоянно растет, он населен множеством стандартов и технологий, которые связаны друг с другом самым причудливым образом. Поэтому тем, кто только начинает свое знакомство с XML, может оказаться непросто ориентироваться в наиболее важных аспектах XML, тем же, кто уже использует XML —следить за новинками и изменениями. Автор этой серии статей, посвященной XML-стандартам, Юч Огбуджи на этот раз рассказывает о технологиях обработки XML.

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

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

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

XSLT

В спецификации «Преобразования расширяемого языка стилей» (Extensible Stylesheet Language Transformations (XSLT) 1.0) [Рекомендация W3C] определяется язык, используемый для описания преобразований входного XML-документа в выходное дерево. Выходное дерево может, например, принять форму HTML-документа или другого XML-формата и, таким образом, XSLT может считаться языком, предназначенным для преобразования XML в форму представления традиционного браузера или для обработки XML-файлов с помощью скриптов. Это преобразование представляет собой XML-документ, определенный в отдельном словаре, а для обращения к исходному документу и выполнения общих операций обработки используются выражения спецификации XPath (рассмотренной ранее). Специальные инструкции устанавливают правила обработки (XSLT является декларативным языком) и управляют процессом создания выходного дерева.

Спецификация XSLT 1.0 пользуется исключительной популярностью, и с помощью языка XSLT можно решить большинство типичных задач обработки XML. Если читатель знаком с XML, то ему не составит труда изучить основы XSLT, хотя для полного овладения этим языком потребуются некоторые усилия. XSLT обладает хорошо спроектированным механизмом расширений, а его декларативная модель обработки допускает многократное использование кода. В спецификации «Ассоциирование таблиц стилей с XML-документами, версия 1.0» (Associating Style Sheets with XML documents, Version 1.0) [Рекомендация W3C] описывается стандартный способ связывания XML-документа с документом таблицы стилей XSLT. Спецификация XSLT была переведена на многие языки.

Как уже было указано выше, XSLT располагает великолепным механизмом расширения, с помощью которого можно определять дополнительные функциональные возможности, используя какой-либо язык. Однако, что еще более приятно, часто самому не нужно писать расширения, поскольку многие из них уже написаны. В спецификации EXSLT [Общественный стандарт] определен стандартный набор таких расширений, основной особенностью которых является стремление избежать зависимость от какой-либо конкретной реализации.

При создании EXSLT была предпринята попытка охватить большинство наиболее востребованных расширений, как, например, обработка дат, регулярные выражения и математические операции. В большинстве реализаций EXSLT используется один или несколько модулей EXSLT.

Хотя спецификация XSLT 2.0 [находится в стадии разработки] была подвергнута принципиальной доработке с учетом коллективного опыта использования XSLT 1.0, и эта версия XSLT не лишена изъянов, будучи тесно связанной с языком XPath 2.0, который, по мнению автора, имеет существенные недостатки.

Рекомендуемые обучающие руководства и учебные пособия:

  • Краткое «Учебное пособие по XSLT» (XSLT tutorial) на ресурсе W3Schools.
  • Более подробное «Учебное пособие по XSLT» (XSLT tutorial) на ресурсе ZVON.
  • В рубрике developerWorks на сайте IBM опубликовано несколько учебных пособий по XSLT, в том числе:
  • «Создание многоцелевого Web-контента с помощью XSLT» (Create multi-purpose Web content with XSLT) (март 2003г.).
  • «Преобразование XML-документов» (Transforming XML documents) (май 2000г.).
  • «Разработка на Python/XML с помощью 4Suite, часть 2: 4XPath и 4XSLT» (Python and XML development using 4Suite, Part 2: 4XPath and 4XSLT) (октябрь 2001г.), которое содержит введение в XSLT.
  • Статья «EXSLT на примерах» (EXSLT by example) — это отличное введение в EXSLT (developerWorks, февраль 2003г.).

Список литературы и другие ресурсы:

  • «Справочное пособие по XSLT» (XSLT Reference) на ресурсе ZVON.
  • Страница Дейва Посона (Dave Pawson) «Часто задаваемые вопросы о XSLT» (XSL FAQ) посвящены XSLT и XPath, а также XSL-FO (будет рассмотрено).
  • На ресурсе TopXML приводится более 100 примеров таблиц стилей XSLT, распределенных по категориям.
  • Джени Теннисон (Jeni Tennison) известна своим ясным и четким объяснением многих тонких аспектов XSLT. Страницы XSLT — отличный справочный ресурс, на котором рассматриваются наиболее часто встречающиеся вопросы и проблемы XSLT.

  SAX

В спецификации «Простой интерфейс прикладного программирования для XML» (Simple API for XML (SAX)) [Общественный стандарт] описывается управляемый событиями интерфейс прикладного программирования (API). Разработчик регистрирует код обработчика для определенных событий, которые запускаются различными частями разметки XML (как, например, начальный и конечный теги, текст, сущности). Затем парсер, опираясь на входной XML, посылает поток этих событий, которые поочередно обрабатываются кодом обработчика.

SAX явился результатом длительной интерактивной конференции, начатой в 1997 году на ресурсе XML-DEV mailing list, который уже давно является «прибежищем» экспертов в области XML. Эту конференцию вел Дэвид Меггинсон, и ее итогом явилось создание одного из наиболее успешных XML-проектов, в подготовке которого не была задействована ни одна крупная компания или орган стандартизации.

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

В настоящий момент используется второе поколение SAX, которое включает обработку пространств имен XML и необязательное формирование отчетов об определенных событиях, касающихся структуры документа.

В большинстве языков управляемый событиями интерфейс обычно реализуется с помощью функций обратного вызова (стиль, присущий программированию графического пользовательского интерфейса (GUI)). В объектно-ориентированных языках, функции обратного вызова обычно являются зарегистрированными методами для объекта, использующими полиморфизм для сопоставления имени метода с кодом обработчика и инкапсуляцию для управления состоянием в обработчике между обратными вызовами. Эта полная модель управляемого событиями программирования известна как модель проталкивания (push model) и «славится» свой трудностью для освоения.

Большинство моделей, которые считаются более легкими для программирования, однако, требуют произвольного доступа к документу и, таким образом, могут понизить эффективность, в связи с чем SAX имеет репутацию наиболее эффективного, если ни легкого, стандартного способа обработки XML.

Рекомендуемые обучающие руководства и учебные пособия:

  • Обучающее пособие Николаса Чейза (Nicholas Chase) «Объяснение SAX» (Understanding SAX), опубликованное в рубрике developerWorks (июль 2003г.).
  • «Обучающее пособие по SAX» (SAX tutorial) на сайте Sun, предназначенное для пользователей технологии Java.
  • Разработчикам C++ будет полезна статья «Радость SAX» (The Joy of SAX) Мартина Нотона (Martin Naughton).
  • В статье автора «Поднятие приложений на следующий уровень с XML, часть 3: инструментальная панель интерфейсов прикладного программирования XML» (Taking Applications to the Next Level with XML, Part 3: The Toolbox of XML APIs) рассматриваются SAX и DOM (см. ниже).
  • Разработчикам Perl будет полезна статья «Использование Perl с XML (часть 1)» (Using Perl with XML (part 1)), которая посвящена SAX.

Список литературы и другие ресурсы:

На странице ресурса XML.org — focus on SAX содержится полезная информация о SAX.

 DOM

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

Технология Java: Страница alphaworks XML на сайте IBM (IBM alphaworks XML page); страница XML на сайте Apache (The Apache XML page); некоммерческая страница технологии Java и XML на сайте Sun (Sun's community page of Java Technology and XML)

C/C++: «Разработчики C/C++: наполните свою инструментальную панель XML (C/C++ developers: Fill your XML toolbox) (developerWorks, сентябрь 2001г.)

Python: Специальная группа, занимающаяся обработкой XML в Python (Special Interest Group for XML Processing in Python); колонка Python & XML на XML.com; «Современное состояние Python-XML (The State of the Python-XML Art, 2003); сайт Юча Огбуджи Akara, посвященный обработке XML в Python (Uche Ogbuji's Akara site on XML processing in Python)

Perl: «Разработчики Perl: наполните свою инструментальную панель XML (Perl developers: Fill your XML toolbox) (developerWorks, июнь 2001г.); проект Perl-XML (Perl-XML Project); колонка Perl & XML на XML.com; XMLperl.com.

Другие: Классы PHP XML (PHP XML Classes); <rubyXML/>; XML and Scheme.

В спецификации «Объектная модель документов» (Document Object Model (DOM)) [Рекомендация W3C] описывается объектная модель XML-документов, которая может быть использована для прямого доступа к частям XML-документа. Согласно концепции модели DOM, документ моделируется в виде дерева, в котором каждый компонент синтаксиса XML (как, например, элемент или текстовое содержание) представляется с помощью узла.

Модель DOM — это интерфейс прикладного программирования, с помощью которого можно перемещаться по дереву, от узла родителя к потомку, к сестринским узлам, а также использовать специальные свойства определенных типов узлов (например, у элементов могут быть атрибуты, а у текстовых узлов — текстовые данные).

Модель DOM задумывалась как нейтральная от языка. Для выражения узлов DOM и поддержки интерфейсов используется спецификация консорциума по технологии манипулирования объектами (Object Management Group, OMG) «Язык описания интерфейса CORBA» (CORBA Interface Definition Language (IDL)) [Международный стандарт ISO, номер 14750].

Первоначально модель DOM создавалась как объектная модель для стандартизации криптовых операций над объектами HTML и XML в Web-браузерах. В некоторых случаях это приводит к затруднениям при использовании этой модели в качестве изолированного интерфейса прикладного программирования. При разработке модели DOM выпускалось несколько версий спецификации (Level), каждая из которых опирается на предыдущую, добавляя новые функциональные возможности.

Так, документ Level 1 охватывал основные возможности, в Level 2 появилась поддержка пространств имен, модель событий пользовательского интерфейса, итераторы и многое другое. В Level 3 включены интерфейсы прикладного программирования для загрузки в файлы XML-документов и сохранения из них, для интегрирования XPath, поддержка проверки допустимости и другое.

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

Приверженцы того или иного языка часто жалуются на то, что модель DOM неудобна и не использует сильные стороны отдельного языка. В результате, появилось множество ориентированных на языки интерфейсов прикладного программирования.

Рекомендуемые обучающие руководства и учебные пособия:

  • Учебное пособие Николаса Чейза «Объяснение DOM» (Understanding DOM), опубликованное в рубрике developerWorks (июль 2003г.).
  • В «Учебном пособии» (tutorial), опубликованном на ресурсе W3Schools, рассматривается использование DOM Level 1 для HTML и XML в JavaScript-браузерах.
  • Разработчикам Perl будет полезна статья «Использование Perl с XML (часть 1)» (Using Perl with XML (part 1)), которая посвящена DOM.
  • Разработчики Python могут изучить страницу «Страница DOM — справочник по стандартной библиотеке Python» (DOM page on the standard Python Library Reference).

Список литературы и другие ресурсы:

  • На ресурсе ZVON опубликовано отличное руководство, в котором приводятся многочисленные примеры на JavaScript по DOM Level 1 и DOM Level 2.

  XAPI

В спецификации «Интерфейс прикладного программирования баз данных XML» (XML Database API (XAPI)) [находится в стадии разработки] описывается нейтральный по отношению к поставщику и языку интерфейс прикладного программирования для баз данных XML. XML: DB — это группа разработчиков инструментов управления базами данных XML. Спецификация XAPI охватывает вопросы хранения, извлечения, модификации и задания запросов к данным в базах данных XML, а также предусматривает поддержку управления транзакциями. Она похожа на интерфейс ODBC (Open Database Connectivity interface, открытый интерфейс доступа к базам данных) и интерфейс JDBC (Java Database Connectivity, средство организации доступа Java-приложений к базам данных).

Подобно модели DOM спецификация XAPI определена с использованием языка IDL (Interface Definition Language, язык описания интерфейса) консорциума OMG (Object Management Group, консорциум по технологии манипулирования объектами) и опубликована в виде редакций (по уровням функциональных возможностей). Level 0 — это базовый API, в Level 1 добавлена поддержка XPath (XPathQueryService).

Спецификация XAPI широко используется в инструментах управления «родными» базами данных XML, особенно с открытым кодом, как, например, Apache XIndice и SleepyCat Berkeley XML DB. Помимо спецификации группы XML: DB существует еще несколько Web-ресурсов, посвященных этой технологии. На странице случаи использования API приведено несколько кратких примеров API на языке Java.

  XUpdate

В спецификации XUpdate [находится в стадии разработки] определяются обновленные функциональные возможности для модификации данных в XML-документах. Несмотря на то, что эта спецификация разрабатывается группой XML: DB, XUpdate предназначен для работы с регулярными XML-документами, а также с XML-документами в совокупностях баз данных и даже с виртуальными моделями данных XML.

XUpdate — это схожий с XSLT словарь XML, к которому очень легко обращаться. Подобно XSLT, для обращения к документу, который необходимо модифицировать, в нем используются выражения XPath, а также специальные элементы, которые определяют операции вывода. XUpdate широко реализован, в основном среди инструментов с открытым кодом, как, например, системы управления базами данных XML и инструментами для выявления различия между XML-документами и внесения необходимыз изменений (difference and patching tools).

Черновой вариант документа «Случаи использования XUpdate» (XUpdate Use Cases) — прекрасное введение в эту технологию.

Рекомендуемые обучающие руководства и учебные пособия:

  • Статья Аруна Гейкуода (Arun Gaikwad) «Введение в XUpdate» (Introduction to Xindice) исчерпывающий рассказ о XUpdate (developerWorks, сентябрь 2002г.).
  • В учебном пособии автора данной статьи «Разработка на Python/XML с помощью 4Suite, часть 4: композиция и обновления» (Develop Python/XML with 4Suite, Part 4: Composition and updates) содержится раздел, посвященный XUpdate (developerWorks, октябрь 2002г.).
  • Страница «Интерактивный мемо-пример XUpdate» (online XUpdate demo) сайта X-Hive — это отличный ресурс, позволяющий изучить этот язык экспериментируя с кодом.

  XQuery

В спецификации «XQuery: язык запросов XML» (XQuery 1.0: An XML Query Language) [находится в стадии разработки] определяется, как формировать запросы к источникам данных XML.

XQuery — это в значительной степени язык программирования, представляющий собой подмножество XPath. XQuery разрабатывается совместно с XPath 2.0 и вызывает неоднозначные оценки в свой адрес, поскольку, по мнению многих, характеризуется излишней сложностью. Спецификации XQuery 1.0/XPath определяются в многочисленных редакциях, в которых описывается семантика, синтаксис и библиотеки базовых функций:

  • В спецификации «Случае использования XQuery» (XML Query Use Cases) [находится в стадии разработки] на примерах рассматриваются сценарии использования XQuery.
  • В спецификации «Модель данных XQuery 1.0 и XPath 2.0» (XQuery 1.0 and XPath 2.0 Data Model) [находится в стадии разработки] определяется информация, содержащаяся во входном файле, передаваемом в процессор XSLT 2.0 или XQuery, а также все допустимые значения выражений в XSLT 2.0, XQuery и XPath 2.0.
  • В спецификации «Формальная семантика XQuery 1.0 и XPath 2.0» (XQuery 1.0 and XPath 2.0 Formal Semantics) [находится в стадии разработки] приводится формальное объяснение каждого выражения спецификаций XPath 2.0 и XQuery 1.0 в терминах их модели данных.
  • В спецификации «XPath 2.0» (XPath 2.0) [находится в стадии разработки] описывается базовый синтаксис XPath 2.0.
  • В спецификации «Функции и операторы XQuery 1.0 и XPath 2.0» (XQuery 1.0 and XPath 2.0 Functions and Operators) [находится в стадии разработки] определяются общие задачи обработки, используемые в выражениях.
  • В спецификации XQuery 1.0 [находится в стадии разработки] описывается базовый синтаксис XQuery 1.0.
  • В спецификации «Синтаксис XML для XQuery 1.0 (XQueryX)» (XML Syntax for XQuery 1.0 (XQueryX)) [находится в стадии разработки] содержится факультативное XML-представление XQuery.
  • В спецификации «Сериализация XSLT 2.0 и XQuery 1.0» (XSLT 2.0 and XQuery 1.0 Serialization) [находится в стадии разработки] описывается, как выглядят значения модели данных в XML, HTML и тексте, фактически в этом документе указывается, как можно заменить раздел XSLT в выходных данных процессора.
  • Спецификации XSLT 2.0 [находится в стадии разработки] не входит непосредственно в семейство XQuery, но тесно связана с XPath 2.0 и XQuery 1.0 и полностью не зависит от первой.

Рекомендуемые обучающие руководства и учебные пособия:

  • Статья Говарда Катца (Howard Katz) «Введение в XQuery» (An introduction to XQuery) знакомит с XQuery, в ней также приводятся примеры, скорректированные с учетом последних изменений в рабочих вариантах спецификаций (developerWorks, сентябрь 2003г.).
  • В статье Николаса Чейза «Обработка XML с использованием XML Query» (Process XML using XML Query) рассказывается о XQuery и об изменениях в XPath 2.0. Несмотря на то, что в ней рассматриваются несколько более ранние версии спецификаций, внесенные в них изменения незначительны, поэтому автор рекомендует для прочтения и эту статьи (developerWorks, сентябрь 2002г.).
  • Статья Пера Ботнера (Per Bothner) «Что такое XQuery» (What is XQuery?), а также его недавнее уточнение, освещающее самые последние рабочие версии спецификаций.

Список литературы и другие ресурсы:

  • Xquery. com — отличный ресурс XQuery, он также включает Wiki, совместный информационный ресурс и место проведения интерактивных обсуждений.

SQL/XML

Спецификация SQL/XML [Международный стандарт ISO/МЭК 9075-14:2003] — это новый раздел стандарта SQL, в котором охвачено множество связанных с XML расширений для SQL. Изначально SQL/XML разрабатывался «Неформальной группой компаний SQLX», в которую входил IBM, затем эта спецификация перешла под эгиду Американского национального института стандартов (ANSI —орган стандартизации, занимающейся SQL). SQL/XML охватывает следующие документы (по словам Эндрю Эйзенберга (Andrew Eisenberg) и Джима Мелтона (Jim Melton)):

  • Спецификации для представления данных SQL (в особенности строк и таблиц строк, а также выборок и результатов выполнения запросов) в виде XML и, наоборот.
  • Спецификации, связанные с преобразованием схем SQL в схемы XML и, наоборот. Кроме того, сюда могут входить преобразования между существующим произвольным XML и схемами SQL.
  • Спецификации для представления схем SQL в XML.
  • Спецификации для представления операций SQL (вставить, обновить, удалить).
  • Спецификации для передачи сообщений для XML при использовании с SQL.

Спецификация SQL/XML имеет очень мало общего с XQuery, хотя стороны, участвующие в разработке этих спецификаций, обычно работают совместно.

Список литературы и другие ресурсы:

  • В статье Эндрю Эйзенберга и Джима Мелтона «SQL/XML и Неформальная группа компаний SQLX» (SQL/XML and the SQLX Informal Group of Companies [PDF]) рассказывается о спецификации SQL/XML.
  • В статье Д. Э. Фандербурка (J. E. Funderburk), С. Мэлайки (S. Malaika) и Б. Рейнуолда (B. Reinwald) «Программирование XML с SQL/XML и XQuery» (XML programming with SQL/XML and XQuery [PDF]) (Журнал IBM Systems, том 41, номер 4, 2002г.) проводится очень тщательное исследование всех этих технологий XML и СУБД.
  • Текст рабочей версии спецификации SQL/XML можно заказать в ISO (или в региональном представительстве этой организации), однако, если читатель желает получить общее представление об этом стандарте, автор рекомендует познакомиться с более ранней рабочей версией SQL/XML от марта 2003г. [PDF].

  CSS

В спецификации «Каскадные таблицы стилей» (Cascading Style Sheets (CSS)) [Рекомендация W3C] описывается, как применять стиль презентации к разметке. Эта спецификация широко известна благодаря своему использованию при форматировании HTML Web-страниц, однако после выхода CSS Level 2 она стала подходить и для представления XML-документов в среде Web. Преобразование XML-документов в выходную структуру осуществляется с помощью свойства display. В спецификации «Ассоциирование таблиц стилей с XML-документами, версия 1.0» (Associating Style Sheets with XML documents, Version 1.0) [Рекомендация W3C] определен стандартный способ связывания XML-документа с документом таблицы стилей CSS.

Рекомендуемые обучающие руководства и учебные пособия:

  • Статья Саймона Ст. Лорента (Simon St. Laurent) «Демонстрация: Web-сервисы XML с Mozilla» (On Display: XML Web Pages with Mozilla) хотя и старая, однако освещает основные понятия на примерах в браузере Mozilla (и сравнение с MSIE 5).
  • В «Учебном пособии CSS 2» (CSS2 Tutorial), опубликованном на ресурсе ZVON, объясняется, как использовать CSS2 для отображения XML-документов.
  • В колонке Дэвида Мертца (David Mertz) в рубрике developerWorks опубликована статья «Использование CSS2 для отображения XML-документов» (Using CSS2 to display XML documents), в которой на подробных примерах рассказывается о CSS.

  XForms

В спецификации XForms 1.0 [Рекомендация W3C], которую не следует путать с одноименной библиотекой графического пользовательского интерфейса Xwindows, определяются Web-формы для обработки данных XML, которые могут быть использованы со множеством платформ в различных медиа-средах. Цель этой спецификации —отделить предназначение формы от ее представления. Она разделяет то, что делает форма, от того, как она выглядит. Это словарь XML, который можно использовать для разработки пользовательских интерфейсов для манипулирования содержанием XML. Изначально спецификация XForms разрабатывалась как часть семейства XHTML, но затем получила самостоятельное развитие. Хотя она более сложная, чем необходимо, XForms достаточно тщательно проработана для того, чтобы «привнести порядок в безумный мир Web-форм».

Рекомендуемые обучающие руководства и учебные пособия

  • Статья Мика Дубинко (Micah Dubinko) «Что такое XForms» (What Are XForms?) позволяет получить общее представление об этой технологии.
  • В статье Джоэла Риверы (Joel Rivera) и Лена Тейнга (Len Taing) «Приготовьтесь: XForms» (Get ready for XForms) на нескольких примерах раскрываются основы XForms (developerWorks, декабрь 2002г.).
  • В статье Николаса Чейза «Объяснение XForms» проводится (Understanding XForms) подобнейшее объяснение XForms (developerWorks, декабрь 2002г.).

SOAP

В спецификации SOAP [Рекомендация W3C] описывается протокол, предназначенный для использования XML для передачи сообщений между системами, которые связаны с помощью низкоуровневых Интернет-протоколов. Некоторые пользователи рассматривают SOAP как основание Web-сервисов XML — набор технологий для управления и организации взаимодействия систем, связанных с использованием форматов данных XML и Интернет-протоколов передачи сообщений.

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

Протокол SOAP определяет формат конверта XML, который может содержать полезную нагрузку псевдо-XML (то обстоятельство, что фактическая полезная нагрузка сообщения SOAP может только частично использовать возможности XML, вызывает серьезные нарекания).

Поскольку Web-сервисам необязательно использовать SOAP, большая группа разработчиков отстаивает предложение о том, что достаточно просто обмениваться необработанными XML-документами непосредственно через HTTP — подход продвигаемый под знаменами «REpresentational State Transfer (REST)».

Сам REST — это имя, которое дал архитектурному стилю Web один из его архитекторов, Рой Филдинг (Roy Fielding). Сторонники применения этого стиля для Web-сервисов утверждают, что SOAP сложен, ограничивает свою полезную нагрузку XML и не использует в достаточной степени сильные стороны Web.

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

The SOAP edifice

На спецификации SOAP базируется огромное число стандартов — гораздо большее, чем можно описать в этой статье. Ниже приведены некоторые полезные источники информации:

Один из предшественников SOAP, который до сих пор широко используется, это стандарт «Удаленный вызов процедуры на XML» (XML Remote Procedure Calls (XML-RPC)) [Общественный стандарт]. В нем определяются вызовы процедур, закодированные на XML и переданные по HTTP. Эта спецификация остается по-прежнему популярной по причине своей простоты (ее полный текст занимает менее десяти печатных страниц), а также из-за того, что на многих языка и каркасах приложений имеются стандартные и готовые реализации XML-RPC.

Однако, технология XML-RPC обладает рядом существенных недостатков, включая очень примитивный контроль типов данных и отсутствие поддержки кодирования символов (удивительный изъян, если учесть, что в ней используется XML).

Рекомендуемые обучающие руководства и учебные пособия:

  • На сайте консорциума W3C опубликован материал «Основные понятия SOAP» (primer on SOAP), который автор настоятельно рекомендует для прочтения, поскольку в нем освещается транспортный формат XML.
  • Для программистов Perl может оказаться интересной статья Пола Кулченко (Paul Kulchenko) «Краткое введение в SOAP» (Quick Start with SOAP), которая вряд ли могла устареть, поскольку посвящена API, а не транспортному формату.
  • Разработчики Python могут изучить страницу «The Python Web services developer column» в рубрике developerWorks на сайте IBM.
  • Автор этой статьи рекомендует использовать стиль document-literal. Его точку зрения поддерживает Джеймс Маккарти (James McCarthy) в своей статье «Преимущества использования стиля document-literal в Web-сервисах» (Reap the benefits of document style Web services) (developerWorks, июнь 2002г.).
  • Статьи Пола Прескода (Paul Prescod) «Web-сервисы второго поколения» (Second Generation Web Services) и «REST и реальный мир» (REST and the Real World) — отличное введение в REST, в котором объясняются причины продвижения этого подхода.
  • Программистам Perl, которые интересуются XML-RPC, можно посоветовать познакомиться со статьями Джоу Джонстона (Joe Johnston) «Использование XML-RPC для Web-сервисов: введение в XML-RPC на Perl» (Using XML-RPC for Web services: Getting started with XML-RPC in Perl) и «Межплатформенное ПО XML-RPC» (XML-RPC Middleware) (developerWorks, март 2001г.).
  • Пользователям Python, желающим узнать о XML-RPC, можно рекомендовать статью Майка Олсона (Mike Olson) и Юча Огбуджи «XML-RPC для Python» (XML-RPC for Python) (developerWorks, август 2002г.).
  • На странице Эрика Кидда (Eric Kidd) «XML-RPC HOWTO» обсуждается, как использовать этот протокол в языке Java, C, C++, Perl, Ruby и .NET.

WSDL

Согласно официальному определению, спецификация «Язык описания Web-сервисов (WSDL), версия 1.2» (Web Services Description Language (WSDL) Version 1.2) [находится в стадии разработки] это «формат XML, предназначенный для описания сетевых сервисов в виде конечных точек, обрабатывающих сообщения, которые содержат ориентированную на документ, либо на процедуру информацию». В этой спецификации на ряде уровней абстрагирования определяются компоненты сквозной передачи в Web-сервисе. Изначально WSDL разрабатывался как совместный проект IBM и Microsoft, но затем был передан в W3C с целью разработки WSDL 1.2. Язык WSDL обычно позиционируется вместе с SOAP, как базовая технология Web-сервисов, но он может быть использован для описания других протоколов помимо SOAP.

Рекомендуемые обучающие руководства и учебные пособия:

  • Статья Билала Сиддикви (Bilal Siddiqui) «Развертывание Web-сервисов с WSDL» (Deploying Web Services with WSDL), опубликованная в рубрике developerWorks на сайте IBM, посвящена ранней версии WSDL (декабрь 2002г.).

Продолжение следует

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

Ресурсы

  • Список XML-стандартов в рубрике developerWorks на сайте IBM.
  • Книга Эллиотта Расти Хэрольда «Библия XML, второе издание» (The XML Bible, 2nd Edition) (издательство John Wiley & Sons, 2001г.) — наиболее полный и исчерпывающий источник информации об XML.
  • Web-сайты наиболее значимых организаций, занимающихся разработкой XML-стандартов:
  • Сайт консорциума World-Wide Web (W3C (World Wide Web Consortium)).
  • Сайт Организации по стандартизации структурированной информации (OASIS (Organization for the Advancement of Structured Information Standards)).
  • Сайт Международной организации по стандартизации (International Standards Organization, ISO), особенно той его части, где находится информация о проекте DSDL (ISO/IEC 19757 — Document Schema Definition Languages (DSDL)).
  • Статья Саймона Ст. Лорента (Simon St. Laurent) «Знакомство с W3C, мнение не члена организации» (Outsider's Guide to the W3C) написана в форме часто задаваемых вопросов, в которых освещаются многие аспекты деятельности этой организации.
  • Ресурс Робина Кавера (Robin Cover) «The Cover Pages» содержит информацию практически обо всех существующих XML-технологиях.
  • Новости сайта Xmlhack, в редактировании которых нередко участвует автор этой статьи.
  • Ряд ресурсов, посвященных XML, в разделе XML (рубрика developerWorks) (developerWorks XML content area), включая колонку автора этой статьи «Размышление о XML» (Thinking XML column).
  • База данных IBM DB2 обеспечивает не только хранение реляционной базы данных, но и инструменты, связанные с XML, как например DB2 XML Extender, который обеспечивает связь между XML и реляционными системами. В разделе DB2 рубрики developerWorks содержится подробная информация о DB2.
  • На странице IBM Certified Developer in XML and related technologies приведена информация о том, как стать сертифицированным разработчиком XML.

Об авторе

Юч Огбуджи (Uche Ogbuji) — консультант и один из основателей Fourthought, компании, занимающейся поставками программного обеспечения и предоставлением консалтинговых услуг в области XML-решений для корпоративного управления знаниями. Fourthought разрабатывает 4Suite — платформу с открытым исходным кодом, для XML, RDF и приложений по управлению знаниями. Юч Огбуджи — инженер в области вычислительной техники, родился в Нигерии, живет и работает в Боулдер-Сити (Boulder), штат Колорадо, США. С ним можно связаться по адресу uche.ogbuji@fourthought.com.

Автор: Юч Огбуджи (Uche Ogbuji)/