Выбрать главу

Создание новых языков

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

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

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

Главным недостатком XML является громоздкость синтаксиса. Например, арифметическое выражение 2*2 может быть выражено в XML приблизительно как:

<mul>

 <arg>2</arg>

 <arg>2</arg>

</mul>

Очевидно, что с человеческой точки зрения это не самый компактный и элегантный способ.

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

□ WML (Wireless Markup Language) — язык разметки для беспроводных устройств, основной формат данных для беспроводного протокола WAP;

□ SVG (Scalable Vector Graphics) — язык описания масштабируемой векторной графики;

□ XHTML — XML-совместимая версия языка гипертекстовой разметки документов;

□ SOAP (Simple Object Access Protocol) — XML-протокол для обмена информацией в распределенных системах;

□ RDF (Resource Description Framework) — система описания ресурсов;

□ XML/EDI (XML/Electronic Data Interchange) — XML-язык для представления сообщений EDI в системах В2В и электронной коммерции;

□ OML (Ontology Markup Language) — язык для описания онтологий и тезаурусов;

□ VoxML (Voice Markup Language) — язык разметки для голосовых приложений;

□ MathML (Mathematical Markup Language) — язык для описания математических выражений;

□ CML (Chemical Markup Language) — язык для описания химических формул;

□ UML exchange Format — XML-выражения языка UML (Unified Modeling Language);

□ CDF (Channel Description Format) — язык для описания данных для автоматической доставки клиенту (технология push-каналов).

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

Хранение данных

Практические всегда, когда приложение должно хранить данные во внешних файлах, неизбежны два процесса: парсинг (синтаксический разбор) при считывании данных и сериализация (создание физического выражения состояния объектов) при сохранении (рис. 1.2).

Рис. 1.2. Стандартная схема хранения данных

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

Рис. 1.3. Схема хранения данных в формате XML

Помимо перечисленных выше достоинств предлагаемого способа следует упомянуть также и следующее:

□ хранимые в XML данные могут иметь практически любую сложность; она ограничена лишь концептуальной сложностью древовидных структур;

□ хранимые в XML данные можно снабжать метаинформацией (например, комментариями или инструкциями по обработке);

□ XML как формат пригоден даже для хранения двоичных данных, если они будут преобразованы в подходящую текстовую кодировку;

□ SAX и DOM/XPath-интерфейсы обеспечивают эффективный доступ к XML-данным.

Противопоказаний к использованию XML в качестве формата хранения данных очень мало. Во-первых, разработчик может посчитать нерациональным включение объемных XML-библиотек в приложение размером в 10 Кбайт. Во-вторых, XML-формат это не самый компактный способ хранения данных. В-третьих, открытость внешним приложениям также может быть лишней.

Обмен данными и проекты интеграции

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

В результате интеграция нескольких приложений или систем реализуется по схеме, показанной на рис. 1.4.

Рис. 1.4. Типичная схема интеграции нескольких приложений

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

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

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

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

□ XML-языки не зависят от аппаратных и программных платформ, что позволяет связывать разнородные системы;

□ выразительная мощность XML достаточно велика для того, чтобы описать данные практически любой сложности;

□ средства разработки и стандартные библиотеки для XML существуют практически на всех платформах и для большинства популярных языков программирования;

□ методы работы с XML достаточно стандартны для того, чтобы в разных системах можно было пользоваться одинаковыми приемами;

□ информация, оформленная в виде XML, может обрабатываться не только машинами, но и человеком (что намного облегчает отладку).

Рис. 1.5. Интеграция на основе XML

Краткая история XML

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