Попытки расширить набор тегов HTML особого эффекта не дают, поскольку язык все равно остается статичным. Чтобы преодолеть эти ограничения, консорциум W3C попытался разработать более гибкий язык разметки электронных документов, который назвали расширяемым языком разметки XML (eXtensible Markup Language).

Недостатки HTML и SGML

Язык гипертекстовой разметки HTML был реализован с использованием спецификаций стандартного языка описания структуры документов SGML (Standard Generalized Markup Language, ISO 8879). HTML предназначался специально для Web и позволял вставлять в документ различные типы информации: текст, ссылки на другой документ, картинки, звуки, видеоизображения и многое другое. Однако структурных элементов в HTML-документе было немного - простые абзацы, шесть уровней заголовков, ненумерованные или нумерованные списки. Естественно, что этих элементов явно недостаточно для точного отображения структуры большинства документов.

Язык SGML, на основе которого строится HTML, позволяет описывать грамматику практически любых документов, то есть определить набор структурных элементов, используемых в документе, и их взаимосвязь. Фиксирование стиля документа, как это было сделано с HTML, дает возможность не заботиться об описании каждого элемента и упрощает разработку программ для составления и просмотра текста. Но подход HTML имеет и очевидные ограничения:

  • невозможно определить новые стили и параметры, чтобы точнее описать структуру данных;
  • отсутствует поддержка сложных структур, например для представления информации из базы данных или объектно-ориентированных иерархий;
  • сложно проверить правильность документа.

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

    Рождение XML

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

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

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

    Структурная же разметка позволяет автору "логически" выделить определенную часть текста (например заголовок), не заботясь о его внешнем виде. Представление же текста должен определить уже сам читатель. Естественно, изменить стиль документа при структурной разметке достаточно просто, так как автор не указывает физических параметров текста, а только придает документу некоторую структуру. Это упрощает переход на другую платформу или в другой текстовый редактор.

    Многие текстовые процессоры используют визуальную разметку, несмотря на то что имеют некоторые свойства структурной. К примеру, MS Word хотя и содержит набор стилей, относящийся ко всему документу, однако жестко фиксирует все физические параметры текста; поэтому при модификации какого-либо из них (предположим, размера шрифта в простом абзаце) текст может измениться непредсказуемо. SGML же - типичный представитель структурного форматирования документов, и поэтому первоначальный вариант HTML позволял пользователю менять внешний вид документа и отображать его, скажем, на алфавитно-цифровой дисплей. Но со временем появились и черты визуальной разметки - теги изменения размера шрифта, стиля (полужирный, курсив) и другие. В результате переносить текст на различные платформы становилось все труднее. А поскольку Web - это все-таки объединение различных платформ, то развитие HTML должно было повернуться "вспять", в направлении структуризации. Поэтому-то XML приобрел следующие свойства структурной разметки:

  • авторы XML-документов могут определить новые теги или параметры текста;
  • структурные элементы XML-документа могут быть вложены;
  • любой XML-документ может содержать необязательное описание грамматики для возможной проверки структуры документа.

    Программы для работы с XML

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

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

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

    Следует указать на JUMBO - опытный образец графического браузера, который может одновременно выполнять функции редактора, поисковой системы и визуализатора XML-документов. Он показывает иерархию документов, а также позволяет ее проверять и редактировать. Можно также динамически загрузить классы Java, которые будут выполнять сложное преобразование данных и отображать его на экран. Программное обеспечение и большой набор демо-файлов на XML можно найти с помощью Java-браузера по адресу http://www.venus.co.uk/omf/cml/.

    Сервер DynaWeb компании Inso позволяет преобразовывать "на лету" SGML-документы в XML-формат. Его можно использовать для распространения XML-документов через Web.

    Microsoft разрабатывает собственный Формат определения канала (CDF), который является одним из типов XML-документов.

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

    Применение XML

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

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

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

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

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

    Увы, следует признать и основной недостаток XML - он несовместим с HTML, так как в XML добавлена возможность проверки правильности составления документа, а в HTML она отсутствует полностью. Грамматический анализатор XML-браузера попросту отвергнет документ на HTML. Впрочем, выйти из положения довольно просто: стоит добавить к HTML-тексту небольшой заголовок с указанием грамматики, и он превратится в XML-документ. Однако если в рамках корпоративной сети можно преобразовать все документы, то подобный процесс по отношению ко всем документам Всемирной Сети представляется просто нереальным.