SGML - документальный метаязык

Валерий Коржов

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

Три носителя

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

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

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

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

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

  • переносимость на различные платформы;
  • преобразование в три самых популярных формата документов - PostScript, Word и HTML;
  • минимальная цена ПО.

    Всем этим требованиям удовлетворяет обобщенный язык разметки SGML (Standard Generalized Markup Language). Документы, подготовленные в этом формате, можно преобразовать во все перечисленные форматы, для него есть программное обеспечение на самых распространенных платформах, и даже бесплатное. SGML позволяет определить новые форматы документов, работать со сложными документами и даже управлять хранилищами информации. Этот язык представляет собой международный стандарт ISO 8879, что гарантирует переносимость документов с одной платформы на другую. Таким образом, SGML - первейший кандидат для корпоративного использования.

    Два типа разметки

    Собственно SGML не является языком разметки документов - это метаязык описания языков разметки. А языки разметки, типа HTML, представляют собой только его приложения. Изначально слово "разметка" (markup) обозначало набор специальных символов, которые вставлялись в текст в качестве указания компьютеру или принтеру о необходимости сменить стиль символа, например, на полужирный или курсив. Со временем появилась возможность не только менять стиль символов, но и устанавливать параметры, общие для всего абзаца, страницы или главы (межстрочный интервал, отступы, поля и так далее). Для каждого такого параметра приходилось вводить свои спецсимволы, которые по традиции назывались разметкой. Сейчас под разметкой понимают любой набор специальных символов, которые определяют структуру текста.

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

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

    Три особенности SGML

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

  • структурная, а не визуальная разметка;
  • возможность определения типа документа;
  • независимость представления документа от текстового редактора, в котором он подготовлен.

    Структурная разметка, используемая в SGML, представляет собой просто название структурного элемента. Символы разметки, типа <para>, означают, что данная часть документа является параграфом. Визуальная разметка должна была бы определить внешний вид абзаца - отступы и поля, рамку и закраску, тип шрифта и еще многое другое. В SGML же инструкции по обработке документа и его представлении вынесены за пределы текста в отдельные процедуры или программы. Собственно, внешний вид SGML-документа определяет SGML-браузер. Структурная разметка позволяет один документ обрабатывать разными программами, каждая из которых может использовать свои способы работы с текстом. Например, программа анализа контекста может игнорировать сноски, а программа форматирования этого же текста - собирать их вместе для печати в конце каждой страницы. В SGML определено понятие "тип документа", и есть правила, по которым он описывается (document type definition, DTD). Все SGML-документы имеют определенный тип, который формально определяется его частями и структурой. Например, можно указать, что статья должна состоять из заглавия, имени автора, краткого содержания и собственно текста (последовательности абзацев). Согласно этому формальному определению, текст без заглавия уже нельзя считать статьей, хотя человек бы мог рассудить и по-другому. Если документ имеет определенный тип, то его можно разобрать синтаксическим анализатором (parser) и обработать, либо преобразовать с помощью специального программного обеспечения. Причем если разные типы документов имеют схожую структуру, то они могут быть обработаны одинаковыми программами. В общем, поскольку язык SGML определяет не только внешний вид документа, но и его логическую структуру, он позволяет разрабатывать более мощные приложения на своей основе. Собственно, основная цель разработки SGML как раз и состояла в том, чтобы гарантировать переносимость документов на любые платформы без потери разметки и информации. Две описанные выше особенности SGML обеспечивают совместимость на абстрактном уровне. Третья же, механизм подстановки, решает проблемы переносимости текстов на уровне последовательности символов. SGML предоставляет пользователям механизм замены одной строки символов на другую, что позволяет определять для разных платформ одинаковые спецсимволы. Поэтому

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

    Три части SGML-документа

    SGML документ состоит из заголовка и собственно текста. Заголовок делится еще на две дополнительные части - общие SGML-определения и описание типа документа. Различное программное обеспечение по-разному связывает заголовок с основным текстом. В некоторых случаях он может быть жестко "вшит" в программу, как это сделано, например, в HTML-браузерах. В общем же случае заголовок находится в дополнительном файле, на который указывает явная ссылка в тексте SGML-документа. В SGML предусмотрен механизм определения наиболее общих характеристик языка разметки: диалект SGML, используемый для описания языка разметки; набор разделительных символов; ограничение длины идентификаторов и многое другое. Обычно наиболее общие SGML-определения выполнены в форме таблиц, компилируемых SGML-процессором, и не видны пользователю. Тип документа, определенный описанием DTD, позволяет проверять правильность составления основного текста. Как и общие SGML-определения, указание DTD может быть выполнено в виде компилируемых SGML-процессором таблиц или связанного с SGML-документом файла. Во втором случае от пользователя требуется только указать, в каком собственно файле находится описание типа документа. Причем определения, описанные во внешнем файле, можно дополнить новыми командами. В самом простом случае DTD находится в начале основного текста документа. Основной текст состоит из собственно текста, разметки и общих ссылок на ранее определенные сущности. В основном тексте не может быть никаких новых определений. Его можно комбинировать из уже существующих документов, если определить в заголовке текста ссылку на них.

    Три типа SGML-программ

    SGML-технология предполагает наличие трех основных компонентов: редакторов, браузеров и форматеров-конвертеров. Основная цель редакторов - помочь пользователю составить корректный документ в соответствии с указанным типом документа. SGML-редакторы обычно разбирают спецификацию DTD и дают пользователю возможность вставлять в текст только соответствующие теги, ограждая его таким образом от ошибок. Как правило, SGML-редактор может выполнять и роль SGML-браузера, основная цель которого - предоставить пользователю возможность перемещаться по иерархии SGML-документов и просматривать каждый конкретный документ. Кроме того, есть немало конвертеров из одного типа документов в другой. Они строятся на основе специальных синтаксических анализаторов и SGML-ядра, которые предоставляют базовые функции по разбору SGML-документа. Именно возможность простой разработки конвертеров и делает язык SGML наиболее популярным средством для подготовки документов. Если, к примеру, использовать DTD TEI Lite, можно легко преобразовать этот тип документа в формат LaTeX (а затем и в PostScript), RTF (а затем и в Word) и HTML. Таким образом, используя одинаковые средства подготовки документов и управления ими, можно преобразовать их в три наиболее популярных формата. А ведь именно это и требуется для корпоративного формата документов. В пользу SGML говорит еще одно их преимущество - хорошо определенный тип документа навязывает автору логическую структуру текста, что позволяет строго регламентировать обязательные части документа. В тех областях деятельности, где подготовка текста уже превратилась во вполне рутинную работу, это качество SGML наиболее ценно, так как автор оказывается застрахован от возможных ошибок.


    XML-инициативы набирают силу

    Популярность расширяемого языка разметки Extensible Markup Language (XML) неуклонно растет, свидетельством чему разработка ведущими производителями ПО, ориентированного на Web (в их числе компании Microsoft, Netscape и Oracle), связанных с этим языком стратегических инициатив.

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

    Просветительская кампания корпорации Microsoft, связанная с XML, откроется выступлением Билла Гейтса на конференции Seybold San Francisco '97, которая будет проходить с 29 сентября по 3 октября.

    Кроме того, Microsoft намерена анонсировать поддержку XML в инструментальных средствах, ориентированных на Web, таких как FrontPage и Visual Interdev.

    Импульсом к началу активных действий послужила передача компаниями Microsoft, ArborText и Inso табличного XML-языка стилей, Extensible Style Language (ESL), на рассмотрение в консорциум W3C. Язык ESL расширяет так называемый механизм вложенных таблиц стилей (Cascading Style Sheets); в частности, он имеет такие возможности, как переупорядочивание XML-данных по мере их отображения.

    "В наших планах, касающихся Internet, языку XML отводится стратегическая роль", - подчеркнул Том Джонстон, менеджер по маркетингу компании Microsoft.

    Компания Netscape Communications, еще один сторонник XML, в середине сентября выпустила реализующий дерево гиперссылок апплет Java, который, как утверждает ведущий специалист компании Раманатан Джуха, позволяет просматривать информационное наполнение, описываемое при помощи Resource Definition Framework (RDF).

    По его словам, RDF - это модель данных, предложенная консорциумом W3C, которая представлена в синтаксисе XML. Она является производной Meta Content Framework компании Netscape и предоставляет для апплетов браузера такие данные, как подробные карты узлов и описание каналов распространения, а также информацию, необходимую для реализации ряда возможностей, например осуществления родительского контроля и поддержки цифровых подписей. В пользу RDF уже высказались такие провайдеры информационного наполнения, как AltaVista, ABCNews.com, Knight Ridder, Time и Yahoo.

    По некоторым данным, Netscape также планирует вскоре выпустить синтаксический анализатор для XML.

    Джон Тайгу, старший системный программист DataChannel, отметил, что Oracle, Sybase, Microsoft и DataChannel уже давно работают над созданием языка разметки баз данных, опирающегося на XML. Этот язык мог бы радикально упростить использование баз данных в Web.

    Кроме того, DataChannel создает Xapi-J, спецификацию для представления данных, извлеченных лексическими анализаторами XML, в программах на Java и JavaScript. По словам Тайгу, Xapi-J поддерживает несколько синтаксических анализаторов, в том числе XML Parser компании Microsoft, а также аналогичный продукт Netscape.

    "Язык XML - это пока нечто эфемерное. За исключением DataChannel никто не может предложить реального инструментария. Но пользователи ждут его с нетерпением, - подчеркнул Дж. Морджентал, аналитик по вопросам Java в исследовательской компании NC.Focus. - Благодаря протоколу HTTP у нас в руках оказался фантастический механизм распространения. Теперь XML обеспечивает вам возможность предоставить структуру на основе данных".


    Инструментальный набор

    Примерный список средств для создания XML-документов:

    Adept Series. Осуществляет поддержку SGML и XML. Компания ArborText, http://www.arbortext.com/.

    WYSIWYG. Представляет собой редактор SGML со встроенной японской версией Unicod, спецификацией XML для представления двухбайтовых символов. Grif S.A., http://www.grif.com/.

    XML Parser. Проверяет состояние и адекватность документов. После анализа документ XML представляется в виде дерева методов Java, обеспечивающих чтение-запись структур XML. Корпорация Microsoft, http://www.microsoft.com/standards/xml/.

    Web Automation. Инструмент для создания Java-классов. Умеет считывать HTML или XML-структуру документов и преобразовывать ее в объекты, которые можно в дальнейшем использовать в приложениях Java. Компания webMethods, http://www.webMethods.com/.

    - Линда Радосевич,
    InfoWorld Electric