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