XML: зачем миру Интернета еще один язык?

Анатолий Суркис

Всего несколько лет назад в только зародившемся, но бурно растущем мире World Wide Web существовало ярко выраженное «разделение труда» между языками программирования. За отображение информации на Web-страницах «отвечал» язык HTML. Чтобы оживить Web-страницы и нагрузить их некоторой полезной работой, стали использовать специальные приложения (аплеты), разработанные на языке Java. Если нужно было написать сценарий обработки некоторого события на сервере, то в большинстве случаев применялся язык сценариев («скриптов») PERL. А обработкой событий на клиентском рабочем месте занимался JavaScript.

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

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

Во-первых, еще в эпоху традиционных, то есть «доинтернетовских» клиент-серверных технологий был выдвинут тезис о том, что содержимое (=content) некоторой формируемой на сервере и передаваемой клиенту порции информации не должно зависеть от формы ее отображения (=view). Соблюдение данного правила принесло ряд существенных плюсов, в том числе возможность:

  • изменять представление данных в зависимости от квалификации пользователей и имеющихся у них прав доступа к информации;

  • адаптировать «картинку» к потребностям пользователей;

  • оптимизировать изображение в соответствии с техническими характеристиками приемной аппаратуры.

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

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

  • структурированность: несмотря на неизбежные издержки при приведении данных к унифицированному виду их общая структура и взаимосвязи элементов должны быть сохранены;

  • расширяемость: должна существовать возможность описания любых новых данных без изменения способа описания.

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

Так появилась идея совместить эти недостающие миру Интернета качества в одной концепции — XML. Идея эта была воплощена международной организацией по стандартизации спецификаций для Интернета World Wide Web Consortium (W3C).

Коротко XML (eXtensible Markup Language) можно определить как язык, предназначенный для описания в текстовой форме структурированных данных. Данные, описанные на XML, называются XML-документом. В основу XML был положен хорошо известный в среде компьютерных лингвистов язык SGML (Standard Generalized Markup Language), который оказался слишком громоздким для использования в Интернете. Так как HTML также создавался на базе SGML, это гарантировало сходство XML со стандартом отображения информации. С другой стороны, синтаксис XML достаточно прост и может быть описан несколькими основными правилами, приведенными в табл. 1.

Ниже приведен пример валидного XML-документа, описывающего фрагмент структуры некой организации QQQ Int.

<?xml version=”1.0" standalone=’yes’ encoding=’UTF-8'
?>
<—! Грамматика документа XML —>
         <!DOCTYPE RootElement [
                <!ELEMENT owner (#PCDATA)>
                <!ELEMENT title (#PCDATA)>
                <!ELEMENT manager (#PCDATA)>
                <!ELEMENT firm (title, f_manager, owner+,
depart+)>
                <!ELEMENT f_manager >
                <!ATTLIST f_manager LastName CDATA
 #REQUIRED>  
                <!ATTLIST f_manager FirstName CDATA
 #IMPLIED>   
                <!ATTLIST f_manager Citizenship (Russia | 
Other) “Russia”>
                <!ELEMENT depart (d_manager, group+) >
                <!ATTLIST depart Title CDATA #REQUIRED>
                <!ELEMENT d_manager >
                <!ELEMENT group >
             ]>
             <—! Текст документа XML —>
             <firm>
                <title>QQQ Int.</title>
                <f_manager LastName=Cool> 
                <owner>Henry First</owner>
                <owner>Sam Second</owner>
                <depart Title=”Big departament”>
                     <d_manager>John Johnson</d_manager>
                     <group>system group</group>
                     <group>analitic group</group>
                </depart>
                <depart Title=”Small departament”>
                      <d_manager/>
                      <group/>
                </depart>
 </firm> 

Комментарий к примеру

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

Текст документа описывает фирму QQQ Int. с двумя владельцами и менеджером по фамилии Cool (но с российским гражданством). В фирме два департамента. В первом — две группы: системная и аналитическая. Во втором департаменте нет еще ни менеджера, ни групп, но так как это обязательные элементы, то на их месте находятся пустые тэги.

Работа с XML-документом на клиентской машине состоит из двух этапов.

На первом этапе XML-документ обрабатывается специальной программой-анализатором (parser). На анализатор возлагаются следующие функции:

  • 1. Осуществление считывания XML-данных из различных источников, среди которых могут быть локальные файлы, документы Web-серверов, потоки (в смысле СОМ) и т.п.

  • 2. Проверка синтаксической правильности документа, то есть того, является ли документ «хорошо оформленным».

  • 3. При наличии DTD — проверка семантической правильности, «валидности» документа.

  • 4. Построение древовидной структуры элементов данных.

  • 5. Представление древовидной структуры в виде дерева объектов, обеспечивающих доступ к данным «снаружи».

Рассмотрим работу с XML-документом на примере одной из наиболее популярных программ просмотра — Internet Explorer 4.0 (IE 4.0). С IE 4.0 поставляются сейчас два анализатора: C++-анализатор и Java-анализатор.

C++-анализатор представляет собой объект ActiveX, который может быть вызван из пользовательского скрипта. Например, строка

var xml = new ActiveXObject(“msxml”);

создает абстрактный объект XML-документ, а свойство URL настраивает его на конкретный документ. Например,

xml.URL = “http://server/xmlDataSource.xml”;

При разработке С++-анализатора преследовались следующие основные цели:

  • достижение высокой скорости анализа;

  • минимальное использование памяти;

  • асинхронный анализ параллельно с загрузкой документа.

Поэтому C++-анализатор является высокопроизводительным инструментом, но некоторыми другими свойствами пришлось пожертвовать. Например, анализатор не способен проверять «валидность» документа. Анализируется лишь его синтаксическая правильность, то есть является ли документ «хорошо оформленным».

Java-анализатор также поставлялся с IE 4.0, но данная версия устарела. Более новая версия интегрирована с модифицированной виртуальной Java-машиной, которую можно загрузить по адресу http://www.microsoft. com/java/. Этот же анализатор вошел и в состав Internet Explorer 5.0. Доступен исходный код Java-анализатора, поэтому он может быть использован в любом приложении. Цели разработки Java-анализатора:

  • быть образцом для реализации других анализаторов;

  • осуществлять проверку «валидности» при наличии DTD;

  • обеспечить межплатформную переносимость;

  • работать с новыми стандартами, такими, к примеру, как Объектная Модель Документов (DOM — Document Object Model) и пространства имен.

На втором этапе, после обработки XML-документа анализатором, данные могут быть доступны любым внешним приложениям. В IE 4.0 работа с данными организуется через объектную модель, в которой документ представляется в виде древовидной структуры (объект Document). Каждый документ имеет корневой элемент (первый объект Element). Из корня отходят ветви (коллекции объектов Element). Объекты, их основные свойства и методы приведены в табл. 2.

Главная сила объектной модели состоит в ее независимости от языка программирования и, следовательно, в доступности из таких языков программирования, как С++ и Java, и из языков сценариев типа VBScript и JavaScript. Так как C++-анализатор создает объектную модель на базе СОМ, доступ к методам и свойствам объекта можно получить и из кода через интерфейсы СОМ. Объектная модель, предоставлявшаяся IE 4.0, не полностью соответствовала стандарту Document Object Model, разработанному W3C. Эта ситуация была исправлена с появлением Internet Explorer 5.0.

Существует и другая возможность работы с XML в IE 4.0, не использующая объектную модель. С IE 4 поставляется Java-аплет, реализующий функциональность объекта — источника данных (Data Source Object — DSO). DSO является составной частью реализованной в DHTML архитектуры связывания данных (data binding). Роль DSO — обеспечить источник данных для каждой отображаемой страницы. Потребители данных — это элементы HTML, умеющие отображать информацию. XML DSO обеспечивает только чтение данных (read-only DSO), то есть их визуальное редактирование никак не может повлиять на источник. Для работы с XML DSO его необходимо включить на страницу следующим образом, указав ссылку на XML-источник:

  <APPLET class=com.ms.xml.dso.XMLDSO.class width=0 height=0 
                          id=xmldso>
  <PARAM NAME=URL VALUE=”http://www.somecompany.com/
                          somedata.xml”>
  </APPLET>

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

<table id=table border=2 width=100% datasrc=#xmldso 
             cellpadding=5>
<thead> 
<th>Title
<th>Manager
<th>Owner
<th>Department
</thead>
<tr>
<td valign=top><div datafld=title dataformatas=HTML></td>
<td valign=top><div datafld=f_manager dataformatas=HTML></td>
<td valign=top><div datafld=owner dataformatas=HTML></td>
<td valign=top><div datafld=depart dataformatas=HTML></td>
</tr>
</table>

XML DSO обеспечивает также доступ к объектной модели. Например, для доступа из JavaScript к объекту Document достаточно написать строку

var doc = xmldso.getDocument(); 

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

Интерес к этому языку со стороны Microsoft показывают упомянутые в статье способы работы с XML из программ просмотра, выпускаемых этой корпорацией. Кроме того, XML станет основой нового офисного пакета Microsoft Office 2000.

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

Компания Sun Microsystems выдвинула свой лозунг: «Технологии XML и Java: Переносимые данные, Переносимый Код». Данный девиз означает, что Sun рассматривает технологию XML и язык программирования Java как две взаимодополняющие технологии. Если XML является независимым от платформы, гибким и эффективным способом представления и обмена данными, то Java обеспечивает также независимый от платформы механизм по обработке этих данных. Сейчас корпорация Sun предлагает экспериментальный продукт Java Project X Technology (http://java.sun.com/xml), который включает XML-анализатор и методы доступа к получаемому дереву элементов. Кроме того, корпорацией анонсировано намерение разработать и стандартизировать расширение XML, способствующее тесной интеграции XML и Java. Вместе, по мнению Sun, технологии Java и XML создадут новое поколение Web-приложений.

Над встраиванием XML в СУБД и созданием инструментов, упрощающих использование XML-данных в Web-приложениях, работает и корпорация IBM. В настоящее время IBM уже обеспечила поддержку XML в своем сервере приложений WebSphere. На очереди — СУБД DB2, для которой планируется создать модуль расширения с поддержкой XML, а также сервер приложений Domino корпорации Lotus Development — дочерней фирмы IBM.

Таким образом, несмотря на то что XML достаточно прост, он обладает большой потенциальной мощью. Эта мощь заключена в возможности создания языков специального назначения на базе XML. Такие языки создаются путем задания соответствующей грамматики и называются приложениями XML. В настоящее время консорциумом W3C уже приняты в качестве стандартов следующие приложения XML:

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

  • Resource Description Format (RDF) — основа для создания языков, описывающих свойства Web-ресурсов (например, изображений, документов) и отношения между ними;

  • Synchronized Multimedia Integration Language (SMIL) — язык для создания мультимедиа-презентаций на Web-сервере.

На стадии принятия в качестве международных стандартов находится еще ряд приложений, но особый интерес вызывает появление в марте 1999 года чернового варианта (working draft) нового языка — XHTML. XHTML — это не что иное, как переформулировка уже стандартной спецификации HTML 4.0 в терминах XML.

Если XHTML будет принят в качестве стандарта, то можно смело утверждать, что XML станет базовым языком для работы в Интернете. И тогда вопрос, вынесенный в заголовок статьи, будет выглядеть просто нелепым.

КомпьютерПресс 5'1999

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует