|
| ||||||||||||
| ||||||||||||
|
2004 г
Обзор XML-стандартов, часть 2.
|
Языки программирования для XMLС момента своего появления язык XML пользовался огромной популярностью у программистов. Ниже приведены некоторые полезные ресурсы, которые посвящены различным языкам, с помощью которых можно совершенствовать XML-технологии. Технология Java: Страница alphaworks XML на сайте IBM ( C/C++: <Разработчики C/C++: наполните свою инструментальную панель XML (C/C++ developers: Fill your XML toolbox) (developerWorks, Python: Специальная группа, занимающаяся обработкой XML Perl: <Разработчики Perl: наполните свою инструментальную панель XML (Perl developers: Fill your XML toolbox) (developerWorks, Другие: Классы PHP XML (PHP XML Classes); <rubyXML/>; XML and Scheme. |
В спецификации «Преобразования расширяемого языка стилей» (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
Как уже было указано выше, XSLT располагает великолепным механизмом расширения, с помощью которого можно определять дополнительные функциональные возможности, используя какой-либо язык. Однако, что еще более приятно, часто самому не нужно писать расширения, поскольку многие из них уже написаны. В спецификации EXSLT [Общественный стандарт] определен стандартный набор таких расширений, основной особенностью которых является стремление избежать зависимость от какой-либо конкретной реализации.
При создании EXSLT была предпринята попытка охватить большинство наиболее востребованных расширений, как, например, обработка дат, регулярные выражения и математические операции. В большинстве реализаций EXSLT используется один или несколько модулей EXSLT.
Хотя спецификация XSLT 2.0 [находится в стадии разработки] была подвергнута принципиальной доработке с учетом коллективного опыта использования XSLT 1.0, и эта версия XSLT не лишена изъянов, будучи тесно связанной с языком XPath 2.0, который, по мнению автора, имеет существенные недостатки.
В спецификации «Простой интерфейс прикладного
программирования для XML» (
SAX явился результатом длительной интерактивной конференции,
начатой в 1997 году на ресурсе
До появления SAX каждый парсер имел свой собственный специфический API, предназначенный для установления связи между структурой XML и кодом обработчика. SAX же обеспечил необходимую унификацию. В большинстве случаев парсеры предоставляют драйверы SAX, которые транслируют низкоуровневые события парсера в стандартные события SAX, предусматривая переносимый код. Несмотря на то, что SAX был разработан с ориентацией на язык Java, он стал популярен среди многочисленных языков и оболочек; хотя иногда его ориентированность на Java усложняет переносимость.
В настоящий момент используется второе поколение SAX, которое включает обработку пространств имен XML и необязательное формирование отчетов об определенных событиях, касающихся структуры документа.
В большинстве языков управляемый событиями интерфейс обычно реализуется с помощью функций обратного вызова (стиль, присущий программированию графического пользовательского интерфейса (GUI)). В объектно-ориентированных языках, функции обратного вызова обычно являются зарегистрированными методами для объекта, использующими полиморфизм для сопоставления имени метода с кодом обработчика и инкапсуляцию для управления состоянием в обработчике между обратными вызовами. Эта полная модель управляемого событиями программирования известна как модель проталкивания (push model) и «славится» свой трудностью для освоения.
Большинство моделей, которые считаются более легкими для программирования, однако, требуют произвольного доступа к документу и, таким образом, могут понизить эффективность, в связи с чем SAX имеет репутацию наиболее эффективного, если ни легкого, стандартного способа обработки XML.
На странице ресурса
В спецификации «Объектная модель документов» (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 охватывал основные возможности,
Хотя в целом овладеть DOM гораздо легче, чем SAX, поскольку в модели DOM не задействованы функции обратного вызова и сложное управление состоянием, реализации DOM обычно хранят все узлы XML в памяти, что может быть весьма неэффективно для больших документов. Несмотря на то, что реализации DOM написаны на многих языках, модель DOM задумана как независимая от языка.
Приверженцы того или иного языка часто жалуются на то, что модель DOM неудобна и не использует сильные стороны отдельного языка. В результате, появилось множество ориентированных на языки интерфейсов прикладного программирования.
В спецификации «Интерфейс прикладного программирования баз данных 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-ресурсов, посвященных этой технологии. На странице
В спецификации XUpdate [находится в стадии разработки] определяются обновленные функциональные возможности для модификации данных в XML-документах. Несмотря на то, что эта спецификация разрабатывается группой XML: DB, XUpdate предназначен для работы с регулярными XML-документами, а также с XML-документами в совокупностях баз данных и даже с виртуальными моделями данных XML.
XUpdate — это схожий с XSLT словарь XML, к которому очень легко обращаться. Подобно XSLT, для обращения к документу, который необходимо модифицировать, в нем используются выражения XPath, а также специальные элементы, которые определяют операции вывода. XUpdate широко реализован, в основном среди инструментов с открытым кодом, как, например, системы управления базами данных XML и инструментами для выявления различия между XML-документами и внесения необходимыз изменений (difference and patching tools).
Черновой вариант документа «Случаи использования XUpdate» (XUpdate Use Cases) — прекрасное введение в эту технологию.
В спецификации «XQuery: язык запросов XML» (
XQuery — это в значительной степени язык
программирования, представляющий собой подмножество XPath. XQuery
разрабатывается совместно
Спецификация SQL/XML
[Международный стандарт
Спецификация SQL/XML имеет очень мало общего с XQuery, хотя стороны, участвующие в разработке этих спецификаций, обычно работают совместно.
В спецификации «Каскадные таблицы стилей» (Cascading Style Sheets
(CSS)) [Рекомендация W3C] описывается, как применять стиль
презентации к разметке. Эта спецификация широко известна
благодаря своему использованию при форматировании HTML Web-страниц,
однако после выхода CSS Level 2 она стала подходить и для
представления XML-документов в среде Web. Преобразование
XML-документов в выходную структуру осуществляется
с помощью свойства display. В спецификации «Ассоциирование
таблиц стилей с XML-документами, версия 1.0» (Associating Style Sheets
with
В спецификации XForms 1.0 [Рекомендация W3C], которую не следует путать с одноименной библиотекой графического пользовательского интерфейса Xwindows, определяются Web-формы для обработки данных XML, которые могут быть использованы со множеством платформ в различных медиа-средах. Цель этой спецификации —отделить предназначение формы от ее представления. Она разделяет то, что делает форма, от того, как она выглядит. Это словарь XML, который можно использовать для разработки пользовательских интерфейсов для манипулирования содержанием XML. Изначально спецификация XForms разрабатывалась как часть семейства XHTML, но затем получила самостоятельное развитие. Хотя она более сложная, чем необходимо, XForms достаточно тщательно проработана для того, чтобы «привнести порядок в безумный мир Web-форм».
В спецификации 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, которые часто более описательны и удобочитаемы для человека.
На спецификации SOAP базируется огромное число стандартов — гораздо большее, чем можно описать в этой статье. Ниже приведены некоторые полезные источники информации:
Один из предшественников SOAP, который до сих пор
широко используется, это стандарт «Удаленный вызов процедуры
на XML» (XML Remote
Procedure Calls
Однако, технология XML-RPC обладает рядом существенных недостатков, включая очень примитивный контроль типов данных и отсутствие поддержки кодирования символов (удивительный изъян, если учесть, что в ней используется XML).
Согласно официальному определению, спецификация «Язык описания 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.
В этой статье были рассмотрены наиболее важные XML-стандарты, используемые при разработки приложений. В следующей статье речь пойдет о наиболее значимых словарях XML.
Юч Огбуджи (Uche Ogbuji) - консультант и один из
основателей Fourthought,
компании, занимающейся поставками программного обеспечения и
предоставлением консалтинговых услуг в области XML-решений для
корпоративного управления знаниями. Fourthought разрабатывает
4Suite, платформу с открытым
исходным кодом, для XML, RDF и приложений по управлению
знаниями. Юч Огбуджи - инженер в области вычислительной
техники, он родился в Нигерии, сейчас живет и работает в
Боулдер-Сити (Boulder), штат Колорадо, США. С ним можно
связаться по адресу uche.ogbuji@fourthought.com.
Оригинальный текст статьи можно посмотреть
здесь:
A
survey of XML standards: Part 1
|
CITForum © 1997–2025