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

Ключевые моменты

  • Язык и платформа XML
  • «Физика» и «логика» XML-документов
  • Метаданные XML
  • XML и базы данных
  • Семантика ресурсов XML
  • Перспективы XML

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

Часть 1. Платформа XML и составляющие ее стандарты

В последние годы мы являемся свидетелями развивающейся во Всемирной паутине «бархатной» революции, которая связана с появлением нового стандарта языка гипертекстовой разметки XML.

Михаил Рувимович Когаловский — заведующий лабораторией систем баз данных Института проблем рынка РАН, ученый секретарь Московской секции ACM SIGMOD. Ему можно написать по адресу: kogalov@cemi.rssi.ru

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

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

Происходящие в Web перемены затрагивают довольно широкий класс информационных систем. Не случайно поэтому, что дальнейшей судьбой Web, и прежде всего оценкой перспектив языка XML [1-3], являющегося основой новых Web-технологий, озабочено большое число специалистов, причастных к разработке и развитию информационных систем. В этой связи представляется вполне естественным состоявшееся обсуждение этих вопросов на страницах данного приложения [4]. Однако при этом, как кажется, не были затронуты или недостаточно четко акцентировались некоторые важные моменты, на которые нужно обратить внимание читателей.

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

Язык XML и XML-платформа

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

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

Рис. 1. Стандарты платформы XML. Стрелки указывают на использование одних стандартов в определении других. Рамки разного цвета указывают различное состояние стандартов: желтый - для стандарта имеется принятая версия; зеленый - стандарт принят частично; красный - стандарт находится в стадии разработки; синий - еще нет проекта стандарта

Эти стандарты позволяют, в частности, определять множество допустимых в XML-документе тегов разметки и их атрибутов, ассоциируя с ними по умолчанию некоторую семантику (стандарт пространства имен XML — Namespaces in XML [5]), обогащают имеющиеся в языке возможности описания с помощью DTD структуры XML-документов (стандарт спецификаций схемы — XML Schema [6-8]), позволяют определять гиперсвязи между документами и/или их фрагментами (стандарты языка указателей и языка гиперссылок — XPointer [9] и XLink [10]), дают возможность описывать семантику XML-документов с различной степенью формализованности (стандарт среды определения ресурсов — RDF [11-12]), управлять представлением XML-документов на стороне клиента (стандарты каскадных таблиц стилей CSS [13] и расширяемого языка таблиц стилей XSL [14]), описывать трансформации XML-документов (стандарт языка описания трансформаций XML-документов — XSLT [15] — специальная часть стандарта XSL).

Кроме того, создан стандарт объектной модели DOM [16] для XML- и HTML-документов, определяющий функции интерфейса прикладного программирования для их обработки.

Разрабатываются также стандарт языка запросов ресурсов XML (XML-QL), для чего сформулированы требования к базовой модели и языку [17-18] и изучается ряд имеющихся претендентов [19], и стандарт электронной подписи для XML-документов (XML-Signature [20]).

Особое место в рассматриваемом комплексе стандартов занимает недавно принятый W3C стандарт XHTML 1.0 [21]. Он предоставляет один из возможных путей обеспечения преемственности развития среды Web, позволяя использовать на платформе XML информационные ресурсы, накопленные в рамках технологий HTML. Этот стандарт поддерживает средствами XML функциональность текущей версии языка HTML (HTML 4.01) с тремя различными уровнями полноты.

Рассматриваемый комплекс стандартов платформы XML включает также целый ряд вспомогательных стандартов. Приведем несколько примеров. Стандарт XML Information Set (Infoset) [22] представляет абстрактное описание тех данных, которые составляют XML-документ. На него опирается спецификация XML [1]. Стандарт XPath [23] определяет понятие фрагмента XML-документа, используемое в языках XPointer и XSLT. В стандарте XML Inclusions (XInclude) [24] представлены модель и синтаксис для описания слияния XML-документов. Стандарт XML Fragment Interchange [25] позволяет описывать контекст фрагментов XML-документа и благодаря этому просматривать и редактировать их вне полного текста документа. Упомянем также стандарт Canonical XML [26], в котором предлагается метод, позволяющий устанавливать эквивалентность двух XML-документов с различным синтаксическим представлением. Эта возможность существенна, в частности, для использования цифровой подписи [20].

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

Как XML взаимосвязан с другими стандартами платформы

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

В общих чертах используется следующий подход.

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

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

Предполагается при этом, что каждому имени, принадлежащему данному пространству имен, а также значениям атрибутов соответствует некоторая семантика, определяемая по умолчанию или явным образом. Способ определения семантики при этом в стандарте Namespaces in XML никак не фиксируется. Эти определения могут базироваться на различных других стандартах или методах, требуемых для какого-либо конкретного приложения.

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

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

Какие данные может представлять XML

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

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

XML и HTML: какой язык сложнее

В обсуждении [4] ставился вопрос о сопоставлении сложности стандартов HTML и XML. Утверждалось, что язык XML примитивнее HTML. Хотелось бы уточнить этот момент.

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

Однако XML отнюдь не примитивнее HTML. Если сопоставлять функциональные возможности этих языков, то нужно прежде всего принять во внимание, что хотя они и имеют общие корни — известный международный стандарт обобщенного языка разметки документов SGML [27], но тем не менее относятся к разным уровням абстракции.

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

Что касается языка HTML, то это — конкретный (не расширяемый) язык. Функциональность тегов разметки в нем фиксированна, в отличие от XML. HTML создавался как простейшая конкретизация SGML, представляющего собой мощный метаязык. HTML может также быть определен средствами XML (вспомним стандарт XHTML), и поэтому он представляет собой также одну из конкретизаций XML.

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

Многоуровневое представление XML-документов

Язык XML обеспечивает ту многоуровневость представления данных, которая является «врожденной» чертой систем баз данных. Вспомним хрестоматийные для специалистов в области баз данных понятия «физического» и «логического» представления данных или внешнюю, концептуальную, и внутреннюю схемы в трехсхемной технологии ANSI/X3/SPARC.

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

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

Рис. 2. Пример XML-документа. Выделенные фрагменты синтаксиса XML относятся к описанию физического представления документа

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

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

Литература

1. Extensible Markup Language (XML) 1.0 (Second Edition). W3C Recommendation. 6 October 2000. http://www.w3.org/TR/2000/REC-xml-20001006.

2. Питтс Н. XML за рекордное время /Пер. с англ. — М.: Мир, 2000.

3. Эдди С.Э. XML: справочник. — СПб.: Питер, 1999. 480 с.

4. Директору информационной службы. Приложение к еженедельнику Computerworld Россия. М.: Открытые системы, июль-август 2000.

5. Namespaces in XML. W3C Recomendation, 14 January 1999. http://www.w3.org/TR/1999/REC-xml-names-19990114.

6. XML Schema Part 0: Primer. W3C Candidate Recommendation. 24 October 2000. http://www.w3.org/TR/2000/CR-xmlschema-0-20001024.

7. XML Schema Part 1: Structures. W3C Candidate Recommendation. 24 October 2000. http://www.w3.org/TR/2000/CR-xmlschema-1-20001024.

8. XML Schema Part 2: Datatypes. W3C Candidate Recommendation. 24 October 2000. http://www.w3.org/TR/2000/CR-xmlschema-2-20001024.

9. XML Pointer Language (XPointer). Version 1.0. W3C Candidate Recommendation. 7 June 2000. http://www.w3.org/TR/2000/CR-xptr-20000607.

10. XML Linking Language (XLink). W3C Candidate Recommendation. 3 July 2000. http://www.w3.org/2000/CR-xlink-20000703.

11. Resource Description Framework (RDF). Model and Syntax Specification. W3C Recommendation. 22 February 1999. http://www.w3.org/TR/REC-rdf-syntax/

12. Resource Description Framework (RDF). Schema Specification 1.0. W3C Candidate Recommendation 27 March 2000. http://www.w3.org/TR/2000/CR-rdf-schema-20000327.

13. Cascade Style Sheet, level 2. CSS2 Specification. W3C Recomendation 12-May-1998. http:// www.w3.org/TR/1998/REC-CSS2-19980512.

14. Extensible Stylesheet Language (XSL). Version 1.0. W3C Working Draft.

18 October 2000. http://www.w3.org/TR/2000/WD-xsl-20001018.

15. XSL Transformations (XSLT). Version 1.0. W3C Recommendation.

16 November 1999. http://www.w3.org/TR/1999/REC-xslt-19991116.

16. Document Object Model (DOM) Level 1 Specification. Version 1.0. W3C Recommendation. 1 October 1998. REC-DOM-Level-1-19981001. http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001.

17. XML Query Requirements. W3C Working Draft. 15 August 2000. http://www.w3.org/TR/2000/WD-xmlquery-req-20000815.

18. XML Query Data Model. W3C Working Draft. 11 May 2000. http://www.w3.org/TR/2000/WD-query-datamodel-20000511.

19. QL?98 — The Query Languages Workshop. December 3-4, 1998. Boston, Massachussets. http://www.w3.org/TandS/QL/QL98/.

20. XML-Signature Syntax and Processing. W3C Candidate Recommendation 31-October-2000. http://www.w3.org/TR/2000/CR-xmldsig-core-20001031/.

21. XHTML 1.0: The Extensible Hypertext Markup Language. Reformulation of HTML 4 in XML 1.0. W3C Recomendation. 26 January 2000. http:// www.w3.org/TR/REC-xtml1-20000126.

22. XML Information Set. W3C Working Draft. 20 December 2000. http://www.w3.org/TR/2000/WD-xml-infoset-20001220.

23. XML Path Language (XPath). Version 1.0. W3C Recomendation, 16 November 1999. http://www.w3.org/TR/1999/REC-xpath-19991116.

24. XML Inclusions (XInclude) Version 1.0. W3C Working Draft 26 October 2000. http://www.w3.org/TR/2000/WD-xinclude-20001026.

25. XML Fragment Interchange. W3C Working Draft 1999, June 30. http://www.w3.org/1999/06/WD-xml-fragment-19990630.html.

26. Canonical XML. Version 1.0. W3C Candidate Recommendation 26 October 2000. http://www.w3.org/TR/2000/CR-xml-c14n-20001026/.

27. ISO 8879:1986. Information Processing — Text and Office Systems — Standard Generalized Markup Language (SGML), 1986.