«Если только последние три года вы не провели на

необитаемом острове, вы обязательно слышали об XML.»
Современная банальность

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

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

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

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

Соглашения по обмену информацией

Существует немало соглашений, касающихся использования ограниченного носителя для передачи самой разнообразной информации. Азбука Морзе, к примеру, для представления символов использует длинные и короткие импульсы; светофор делает то же самое с помощью установки двух флагов.

А если необходимо не только представлять буквы, из которых состоят слова? Если, к примеру, требуется передать, что конкретная фраза — это заголовок? Вы просто используете соглашение, приемлемое соглашение, для выражения более сложной информации. Если у вас есть только ручка и бумага, вы можете обвести фразу и на полях написать «заголовок». Если вы используете электронные носители, тогда перед заголовками можно писать последовательность символов

, а после них —

.

Чтобы разметить компоненты в документе, вам необходимо соглашение (язык разметки), которое, к примеру, предусматривает такое толкование: «Если 100 — это цена, следует писать 100».

Фиксированный синтаксис, неограниченный словарь

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

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

В таком смысле язык XML 1.0 более ограничен, чем HTML. Он описывает, что в документе означает структура «<» and «>», но ничего не говорит о том, что такое «Цена» или что делать, если вы встречаете такое выражение в документе. Но по сути XML 1.0 представляет собой тип базового синтаксиса, который может использоваться для любого числа документов или форматов данных.

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

Растущее семейство XML

Как и планировалось с самого начала, разработка XML включает в себя три компонента:

  • спецификацию подмножества SGML, предназначенного для обмена информацией в Web;
  • спецификацию типов гипертекстовых ссылок, диапазон которых намного шире, чем единственный тип, предусматриваемый в HTML;
  • спецификацию языка таблицы стилей.

XML 1.0 Recommendation, утвержденная в феврале 1998 года, определяет первый компонент. Следующие два близки к завершению в виде языков Extensible Linking Language и Pointer Language (XLink и Xpointer, соответственно) и Extensible Stylesheet Language (XSL).

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

Языки организации ссылок и указателей. Сначала XLink и XPointer создавались как единая спецификация (которую называли по-разному, — XML Part 2, XML-Link и XLL), но в прошлом году они были разделены. XLink касается того, как установить ссылки между документами или частями документов, а XPointer — как обращаться к частям документов.

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

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

Extensible Stylesheet Language. XSL (который также называют XML Part 3, XML-Style и XS) служит для более детального форматирования документов, как в электронном, так и в печатном виде. Он позволяет описывать стили и схему структурированных документов и включает в себя развернутые возможности интернационализации.

XSL состоит из двух основных компонентов:
  • набора разнообразных абстрактных форматированных объектов, которые, к примеру, позволяют организовать несколько столбцов, двунаправленный текст, ссылки и так далее;
  • мощного языка преобразований, который позволяет преобразовывать структурированные документы в форматированные объекты.

Хотя язык преобразования был предназначен для преобразования документов в форматированные объекты, он будет применяться и для преобразования одних структурированных документов в другие. К моменту подготовки данной статьи язык преобразования был выделен из спецификации XSL в отдельную спецификацию, получившую название XSLT.

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

Пространства имен

Спецификация «Namespaces in XML» Recommendation реализует ряд простых дополнений к XML 1.0, касающихся решения вопроса о неоднозначном толковании имен при объединении словарей, используемых в размечаемых документах.

Допустим, организация FOO разрабатывает словарь для отчетов (раздел, название (заголовок), параграф и так далее), а другая организация, BAR, создает словарь для структурной схемы организации (имя, название (должность), отдел и тому подобные). Теперь представим, что необходимо подготовить отчет с данными о структурной схеме организации. Документ может использовать оба словаря, так что неминуемо возникнут сложности с выяснением, что же обозначает термин «название» — заголовок в отчете или должность сотрудника.

Решение, предлагаемое за счет использования Namespaces in XML, предусматривает применение глобальных идентификаторов, называемых Uniform Resource Identifier (URI), самый известный тип которых — это Uniform Resource Locator (URL). Таким образом, словарь отчетов FOO можно идентифицировать с помощью URL «http://www.foo.com/REPORT», в организационную структуру BAR — с помощью URL «http://www.bar.com/ORGCHART». Отметим, что эти URL вовсе не обязательно должны указывать на какую-то страницу Web. Они служат не для извлечения информации, а только для идентификации ее.

Спецификация Namespaces in the XML Recommendation описывает, как каждый элемент и атрибут в документе может быть квалифицирован по такому URL. Поскольку синтаксис XML не допускает употребления всех корректных символов URL в названиях элементов и атрибутов, квалификация выполняется с помощью некоторого префикса. Такой URI, как «http://www.foo.com/REPORT», связывается, к примеру, с префиксом «отчет», и тогда элемент, обозначенный как «отчет:название» указывает, что имеется в виду название в пространстве имен http://www.foo.com/REPORT.

Document Object Model

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

Первый уровень DOM, обеспечивающий основные функции, уже был опубликован как W3C Recommendation. Остальные уровни в будущем позволят реализовать более широкие возможности в документах XML.

Информационное множество XML.

В спецификации XML 1.0 Recommendation много говорится о синтаксисе документов XML и последовательностях символов, которые составляют их разметку. Это полезно, однако, неплохо бы иметь возможность описывать документы XML с помощью более абстрактных понятий, то есть говорить об элементах и атрибутах без ссылки на разделители, применяемые для их представления, и так далее. После своего завершения XML Information Set предоставит единое множество понятий, которые можно будет употреблять для описания абстрактных объектов, из которых состоит документ XML.

Фрагменты XML

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

Спецификация XML Fragments Recommendation позволит определять, из чего может состоять фрагмент и как представить его контекст.

Канонический XML.

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

Эти различия, тем не менее, не позволят установить эквивалентность двух XML документов при их побайтовом сравнении.

Спецификация Canonical XML будет описывать стандарт на документы XML, в соответствии с которым логически эквивалентные документы будут иметь одинаковое байтовое представление. Эта «каноническая форма» документа найдет конкретное применение в работе с цифровыми подписями.

Схемы и типы данных XML

Спецификация XML 1.0 предлагает средства для описания типов и атрибутов элементов (словарь меток), используемых конкретным классом документов. Словарь меток также позволяет наложить ограничения на присутствие и опциональность (к примеру, «раздел» начинается с опционального «заголовка», за которым следует один или несколько «параграфов» и так далее). Такой эффект достигается за счет применения определения типа документа (DTD).

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

Было предложено немало решений для альтернативных языков схем, которые W3C теперь берет за основу своей разработки нового языка схем и типов данных.

Когда предложение получает статус Recommendation ...

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

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

Об авторе

Джеймс Таубер координирует продукты и XML в компании HarvestRoad Communications. C самого начала был приглашен в качестве эксперта по проекту XML, который ведется в W3C. Работает в группах XML Infoset и XML Syntax, является редактором спецификации на Canonical XML. С ним можно связаться по адресу jtauber@jtauber.com

James Tauber. XML after 1.0: Ayou ain't seen nothin yet. IEEE Internet Computing, May-June 1999, Reprinted with permission, Copyright IEEE CS, 1999, All rights reserved.

Cсылки на WEB-узлы

Страница посвященная XML на сервере консорциума World Wide Web (W3C) http://www.w3.org/XML

Национальный комитет по стандартам информационных технологий (National Committee for Information Technology Standards) http://www.ncits.org

Домашняя страница SQLJ http://www.sqlj.org

Страница драйверов JDBC компании Oracle http://www.oracle.com/st/products/jdbc/sqlj/

Спецификации SQL/OLB будут доступны из:

American National Standards Institute Attn:

Customer Service 11 West 42nd Street New York, NY 10036 USA 212-642-4980