Открыть сервис

SGML

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

История

Разработка SGML началась в 1960-х годах в США. Прототипом послужил язык GML (Generalized Markup Language), созданный в 1969 году группой специалистов компании IBM под руководством Чарльза Гольдфарба, Эдварда Мошера и Рэймонда Лори. GML предназначался для управления юридическими, техническими и деловыми документами в среде мейнфреймов IBM и сочетал концепции иерархической структуры с явной разметкой элементов.

В середине 1970-х годов работы по обобщению подхода привели к созданию первой версии SGML. Ключевым этапом стала адаптация языка для нужд Министерства обороны США и Американского национального института стандартов (ANSI). В 1986 году Международная организация по стандартизации (ISO) приняла SGML в качестве международного стандарта ISO 8879:1986 «Information processing — Text and office systems — Standard Generalized Markup Language (SGML)». Позднее стандарт неоднократно пересматривался и дополнялся.

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

Архитектура и принципы

SGML является метаязыком: он не задаёт конкретную разметку для определённого типа документов, а предоставляет правила для создания таких определений. Центральным понятием является DTD (Document Type Definition — определение типа документа). DTD описывает:

Синтаксис

SGML использует угловые скобки для обозначения открывающих (<element>) и закрывающих (</element>) тегов. В отличие от XML, SGML допускает более гибкие правила построения разметки:

Такая гибкость усложняет синтаксический анализ, но позволяет создавать более компактные и читаемые документы.

Элементы и атрибуты

Каждый элемент определяется в DTD. Элемент может иметь ноль или более атрибутов, задающих характеристики (например, язык, тип данных, стиль оформления). Для каждого атрибута указывается тип значения (CDATA — символьные данные, ID — уникальный идентификатор, IDREF — ссылка на другой идентификатор, NMTOKEN — имя и др.) и может задаваться значение по умолчанию.

Сущности и ссылки

SGML поддерживает два вида сущностей:

Ссылки на сущности выглядят как &имя; и заменяются на соответствующее содержимое в процессе обработки документа.

Объявления (SGML Declaration)

Для каждого документа или набора документов требуется указание режима синтаксического анализа: sgml declaration, которое определяет используемую кодировку, разделители (например, скобки, знаки препинания), ограничения на длину имён и глубину вложенности. Без такого объявления корректная обработка SGML-файла невозможна.

Отношение к XML и HTML

XML (Extensible Markup Language) был создан в 1996–1998 годах как упрощённое подмножество SGML, лишённое многих сложных и необязательных возможностей последнего. Основные отличия:

HTML (HyperText Markup Language) изначально разрабатывался на основе SGML, и его ранние версии (до HTML 4.01 включительно) являлись приложениями SGML — то есть имели формальное DTD. Начиная с HTML5, разрыв прямой связи с SGML стал полным, хотя синтаксис остался похожим.

Применение

SGML используется в системах управления документацией, где требуется долговременная сохранность данных и возможность обработки без модификации разметки:

Критика

SGML критикуется за:

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

См. также

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →