Стандартный обобщенный язык разметки - Standard Generalized Markup Language

Стандартный обобщенный язык разметки
SGML.svg
Расширение имени файла
.sgml
Тип интернет-СМИ
приложение / sgml, текст / sgml
Единый идентификатор типа (UTI) public.xml
Разработано ISO
Тип формата Язык разметки
Расширен с GML
Расширен до HTML , XML
Стандарт ISO 8879

Стандартный обобщенный язык разметки ( SGML , ISO 8879: 1986) является стандартом для определения обобщенных языков разметки документов. В приложении A.1 стандарта ISO 8879 говорится, что обобщенная разметка «основана на двух постулатах »:

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

DocBook SGML и LinuxDoc - это примеры, которые использовались почти исключительно с реальными инструментами SGML.

Стандартные версии

SGML - это стандарт ISO : «ISO 8879: 1986 Обработка информации - Текстовые и офисные системы - Стандартный обобщенный язык разметки (SGML)», который существует в трех версиях:

  • Оригинальный SGML , принятый в октябре 1986 года, сопровождался незначительными техническими исправлениями.
  • SGML (ENR) в 1996 году явился результатом технического исправления, в котором были добавлены расширенные правила именования, допускающие разметку на произвольном языке и скрипте.
  • SGML (ENR + WWW или WebSGML) в 1998 г. явился результатом технического исправления для лучшей поддержки требований XML и WWW.

SGML является частью трио стандартов ISO для электронных документов, разработанных ISO / IEC JTC1 / SC34 (Объединенный технический комитет 1 ISO / IEC, Подкомитет 34 - Языки описания и обработки документов):

  • SGML (ISO 8879) - Обобщенный язык разметки
    • SGML был переработан в 1998 году в XML , успешный профиль SGML. Полный SGML редко встречается или используется в новых проектах.
  • DSSSL (ISO / IEC 10179) - язык обработки документов и стилизации на основе Scheme .
    • DSSSL был переработан в W3C XSLT и XSL-FO, которые используют синтаксис XML. В настоящее время DSSSL редко используется в новых проектах, кроме документации Linux .
  • HyTime - Обобщенный гипертекст и планирование.
    • HyTime был частично переработан в W3C XLink . HyTime редко используется в новых проектах.

SGML поддерживается различными техническими отчетами, в частности

  • ISO / IEC TR 9573 - Обработка информации - Средства поддержки SGML - Методы использования SGML
    • Часть 13: Наборы публичных объектов для математики и естественных наук
      • В 2007 году рабочая группа W3C MathML согласилась взять на себя обслуживание этих наборов сущностей.

История

SGML произошла от IBM «s обобщенного языка разметки (GML), который Чарльз Гольдфарб , Эдвард Мошер и Раймонд Lorie , разработанный в 1960 - х годах. Гольдфарб, редактор международного стандарта, ввел термин «GML», используя инициалы их фамилий. Гольдфарб также написал основательную работу по синтаксису SGML в «Руководстве по SGML». Синтаксис SGML ближе к формату COCOA . Как язык разметки документов SGML был первоначально разработан для обеспечения совместного использования машиночитаемых документов крупных проектов в правительстве, законодательстве и промышленности. Многие такие документы должны оставаться доступными для чтения в течение нескольких десятилетий - долгое время в области информационных технологий . SGML также широко применялся в военной, аэрокосмической, технической и издательской отраслях. Появление профиля XML сделало SGML пригодным для широкого применения в небольших масштабах и для общего назначения.

Фрагмент Оксфордского словаря английского языка (1985 г.), показывающий разметку SGML.

Срок действия документа

SGML (ENR + WWW) определяет два типа действительности. В соответствии с пересмотренными терминами и определениями ISO 8879 (из общедоступного проекта):

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

Соответствующий типу документ SGML определяется стандартом как

Документ SGML, в котором для каждого экземпляра документа есть связанное объявление типа документа (DTD), DTD которого соответствует этот экземпляр.

Документ SGML с тегами определяется стандартом как

Документ SGML, все экземпляры которого полностью помечены тегами. Объявление типа документа не обязательно должно быть связано с каким-либо из экземпляров. Примечание. Если есть объявление типа документа , экземпляр можно анализировать со ссылкой на нее или без нее.

Терминология

Проверка допустимости тегов была введена в SGML (ENR + WWW) для поддержки XML, который допускает документы без объявления DOCTYPE, но которые можно анализировать без грамматики, или документы, содержащие объявление DOCTYPE, которое не вносит вклад в XML Infoset в документ. Стандарт называет это полностью тегированным . Сохранение целиком отражает требование XML, чтобы элементы заканчивались в том же объекте, в котором они начинались. Отсутствие ссылок отражает требование HTML, согласно которому ссылки на сущности предназначены для специальных символов и не содержат разметки. Комментарий валидности SGML, особенно комментарий, который был сделан до 1997 года или который не знает SGML (ENR + WWW), касается только валидности типа .

Акцент SGML на валидности поддерживает требование для обобщенной разметки, что разметка должна быть строгой. (ISO 8879 A.1)

Синтаксис

Документ SGML может состоять из трех частей:

  1. декларация SGML,
  2. Пролог, содержащий объявление DOCTYPE с различными объявлениями разметки, которые вместе составляют определение типа документа (DTD), и
  3. сам экземпляр, содержащий один самый верхний элемент и его содержимое.

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

Хотя полный SGML допускает неявную разметку и некоторые другие типы тегов, спецификация XML (s4.3.1) гласит:

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

Вводную информацию о базовом современном синтаксисе SGML см. В XML . Следующий материал посвящен функциям, не относящимся к XML, и не является исчерпывающим обзором синтаксиса SGML.

Дополнительные особенности

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

Многие функции SGML связаны с минимизацией разметки. Другие функции относятся к параллельной (параллельной) разметке (CONCUR), связыванию атрибутов обработки (LINK) и встраиванию документов SGML в документы SGML (SUBDOC).

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

Конкретный и абстрактный синтаксисы

Обычный (по умолчанию) конкретный синтаксис SGML напоминает этот пример, который является конкретным синтаксисом HTML по умолчанию :

<QUOTE TYPE="example">
  typically something like <ITALICS>this</ITALICS>
</QUOTE>

SGML предоставляет абстрактный синтаксис, который может быть реализован во многих различных типах конкретного синтаксиса . Хотя норма разметки использует угловые скобки в качестве разделителей начального и конечного тегов в документе SGML (в соответствии с определенным стандартом конкретным ссылочным синтаксисом ), можно использовать другие символы - при условии, что подходящий конкретный синтаксис определен в SGML документа. декларация . Например, интерпретатор SGML может быть запрограммирован для разбора GML, в котором метки разделяются с левой ободочной кишки и правой полной остановки , Таким образом, : е префикс обозначает конец тега: :xmp.Hello, world:exmp.. Согласно синтаксису ссылки, буквенный регистр (верхний или нижний) не различается в именах тегов, поэтому три тега: (i) <quote>, (ii) <QUOTE>и (iii) <quOtE>эквивалентны. ( ПРИМЕЧАНИЕ: конкретный синтаксис может изменить это правило с помощью объявлений NAMECASE NAMING).

Минимизация разметки

SGML имеет функции для уменьшения количества символов, необходимых для разметки документа, которые должны быть включены в декларации SGML. Процессоры SGML не должны поддерживать все доступные функции, что позволяет приложениям допускать многие типы непреднамеренных пропусков разметки; однако системы SGML обычно нетерпимы к недопустимым структурам. XML нетерпим к пропускам синтаксиса и не требует DTD для проверки правильности.

OMITTAG

Как начальные, так и конечные теги могут быть опущены в экземпляре документа при условии:

  1. функция OMITTAG включена в декларации SGML,
  2. DTD указывает, что теги разрешено опускать,
  3. (для начальных тегов) элемент не имеет связанных #REQUIREDатрибутов required ( ) и
  4. тег может быть однозначно выведен из контекста.

Например, если в объявлении SGML указано OMITTAG YES (включающее функцию OMITTAG), а DTD включает следующие объявления:

<!ELEMENT chapter - - (title, section+)>
<!ELEMENT title o o (#PCDATA)>
<!ELEMENT section - - (title, subsection+)>

тогда этот отрывок:

<chapter>Introduction to SGML
<section>The SGML Declaration
<subsection>
...

который пропускает два <title>тега и два </title>тега, будет представлять допустимую разметку.

Пропуск тегов не является обязательным - тот же отрывок можно пометить следующим образом:

<chapter><title>Introduction to SGML</title>
<section><title>The SGML Declaration</title>
<subsection>
...

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

Примечание. Функция OMITTAG не связана с тегированием элементов, объявленное содержимое которых EMPTYсоответствует определению в DTD:

<!ELEMENT image - o EMPTY>

Элементы, определенные таким образом, не имеют конечного тега, и его указание в экземпляре документа приведет к недопустимой разметке. В этом отношении это синтаксически отличается от пустых элементов XML .

SHORTREF

Теги могут быть заменены строками-разделителями для более лаконичной разметки с помощью функции SHORTREF. Этот стиль разметки теперь связан с разметкой вики , например, где два знака равенства (==) в начале строки являются «начальным тегом заголовка», а два знака равенства (==) после него - конечный тег заголовка ".

SHORTTAG

Языки разметки SGML, конкретный синтаксис которых включает функцию SHORTTAG VALUE, не требуют, чтобы значения атрибутов, содержащие только буквенно-цифровые символы, были заключены в кавычки - двойные " "(LIT) или одинарные ' '(LITA), - чтобы предыдущий пример разметки можно было записать:

<QUOTE TYPE=example>
  typically something like <ITALICS>this</>
</QUOTE>

Одной из особенностей языков разметки SGML является «самонадеянная пустая маркировка», когда пустой конечный тег </>в <ITALICS>this</>«наследует» свое значение от ближайшего предыдущего полного начального тега, которым в этом примере является <ITALICS>(другими словами, он закрывает большую часть недавно открытый предмет). Таким образом, выражение эквивалентно <ITALICS>this</ITALICS>.

СЕТЬ

Другой особенностью является конструкция NET (Null End Tag):, <ITALICS/this/которая структурно эквивалентна <ITALICS>this</ITALICS>.

Другие особенности

Кроме того, функция SHORTTAG NETENABL IMMEDNET позволяет сокращать теги, окружающие пустое текстовое значение, но запрещает сокращать полные теги:

<QUOTE></QUOTE>

можно записать как

<QUOTE// 

где первая косая черта (/) обозначает «закрытие начального тега» (NESTC), разрешающее NET, а вторая косая черта обозначает NET. ПРИМЕЧАНИЕ. XML определяет NESTC с помощью / и NET с помощью > (угловой скобки) - поэтому соответствующая конструкция в XML отображается как <QUOTE /> .

Третья особенность - «текст на той же строке», позволяющая заканчивать элемент разметки концом строки; особенно полезно для заголовков и т. п., требующих минимизации SHORTREF или DATATAG. Например, если DTD включает следующие объявления:

<!ELEMENT lines (line*)>
<!ELEMENT line O - (#PCDATA)>
<!ENTITY   line-tagc  "</line>">
<!SHORTREF one-line "&#RE;&#RS;" line-tagc>
<!USEMAP   one-line line>

(а "& # RE; & # RS;" - это ограничитель коротких ссылок в конкретном синтаксисе), тогда:

<lines>
first line
second line
</lines>

эквивалентно:

<lines>
<line>first line</line>
<line>second line</line>
</lines>

Формальная характеристика

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

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

В отчете о ранней реализации синтаксического анализатора для базового SGML, Amsterdam SGML Parser, отмечается

DTD-грамматика в SGML должна соответствовать понятию однозначности, которое очень похоже на условия LL (1)

и указывает различные различия.

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

XML описывается как обычно анализируемый, как двухуровневая грамматика для непроверенного XML и конвейер сопрограмм в стиле Конвея ( лексер , синтаксический анализатор , валидатор) для действительного XML. Сообщается, что продукция SGML в стандарте ISO является LL (3) или LL (4). Сообщается, что подмножества класса XML можно выразить с помощью W-грамматики . Согласно одной статье, и, вероятно, рассматривается на уровне набора информации или дерева синтаксического анализа, а не на уровне символа или разделителя:

Класс документов, соответствующих заданной грамматике документа SGML, образует язык LL (1). ... Грамматики документов SGML сами по себе, однако, не являются грамматиками LL (1).

Стандарт SGML не определяет SGML с формальными структурами данных, такими как деревья синтаксического анализа ; однако документ SGML состоит из корневого направленного ациклического графа (RDAG) физических единиц хранения, известного как « объекты », который анализируется в RDAG структурных единиц, известных как «элементы». Физический граф в общих чертах можно охарактеризовать как дерево сущностей, но сущности могут появляться несколько раз. Более того, структурный граф также можно условно охарактеризовать как дерево элементов , но разметка ID / IDREF допускает произвольные дуги.

Результаты синтаксического анализа также можно понимать как дерево данных в разных нотациях; где документ является корневым узлом, а объекты в других обозначениях (текст, графика) являются дочерними узлами. SGML предоставляет устройство для связи и аннотирования внешних объектов, отличных от SGML.

Стандарт SGML описывает это в терминах карт и режимов распознавания (s9.6.1). Каждая сущность и каждый элемент могут иметь связанную нотацию или объявленный тип содержимого , который определяет виды ссылок и тегов, которые будут распознаваться в этой сущности и элементе. Кроме того, каждый элемент может иметь связанную карту разделителейкраткую справочную карту ), которая определяет, какие символы рассматриваются как разделители в контексте. Стандарт SGML характеризует синтаксический анализ как переключение конечного автомата между режимами распознавания. Во время синтаксического анализа существует стек карт, которые настраивают сканер , а токенизатор относится к режимам распознавания.

Анализ включает в себя просмотр динамически извлекаемого графа сущностей, поиск / наложение тегов и структуры элементов и проверку этих тегов на соответствие грамматике. Необычным аспектом SGML является то, что грамматика (DTD) используется как пассивно - для распознавания лексических структур, так и активно - для создания недостающих структур и тегов, которые DTD объявил необязательными. Конечные и начальные теги можно опустить, потому что они могут быть логически выведены. Грубо говоря, серию тегов можно опустить только в том случае, если в грамматике есть единственный возможный путь для их обозначения. Именно это активное использование грамматик сделало конкретный синтаксический анализ SGML трудным для формальной характеристики.

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

SGML имеет абстрактный синтаксис, реализованный множеством возможных конкретных синтаксисов; однако это не то же самое, что использование в абстрактном синтаксическом дереве и как в конкретном синтаксическом дереве . В использовании SGML конкретный синтаксис - это набор определенных разделителей, а абстрактный синтаксис - это набор имен для разделителей. XML Infoset больше соответствует языку программированию понятия абстрактного синтаксиса , введенному Джон Маккарти .

Производные

XML

W3C XML (Extensible Markup Language) представляет собой профиль (подмножество) из SGML разработан , чтобы облегчить выполнение синтаксического анализа по сравнению с полным анализатором SGML, в первую очередь для использования в World Wide Web. В дополнение к отключению многих опций SGML, присутствующих в справочном синтаксисе (таких как исключение тегов и вложенных вложенных документов), XML добавляет ряд дополнительных ограничений на типы синтаксиса SGML. Например, несмотря на включение сокращенных форм тегов SGML, XML не допускает незакрытых начальных или конечных тегов. Он также опирался на многие дополнения, сделанные в приложении WebSGML. В настоящее время XML используется более широко, чем полный SGML. XML имеет легкую интернационализацию на основе Unicode . Приложения XML включают XHTML , XQuery , XSLT , XForms , XPointer , JSP , SVG , RSS , Atom , XML-RPC , RDF / XML и SOAP .

HTML

Хотя HTML разрабатывался частично независимо и параллельно с SGML, его создатель Тим Бернерс-Ли задумывал его как приложение SGML. Поэтому дизайн HTML (язык гипертекстовой разметки) был вдохновлен тегами SGML, но, поскольку не были установлены четкие инструкции по расширению и синтаксическому анализу, большинство реальных HTML-документов не являются действительными документами SGML. Позже HTML был переформулирован (версия 2.0), чтобы он больше походил на приложение SGML; однако язык разметки HTML имеет множество устаревших функций и функций обработки исключений, которые отличаются от требований SGML. HTML 4 - это приложение SGML, которое полностью соответствует ISO 8879 - SGML.

В уставе возрождения рабочей группы HTML Консорциума Всемирной паутины 2006 г. говорится: «Группа не будет предполагать, что синтаксический анализатор SGML используется для« классического HTML »». Хотя синтаксис HTML очень похож на синтаксис SGML с конкретным синтаксисом ссылки по умолчанию , HTML5 отказывается от любых попыток определить HTML как приложение SGML, явно определяя свои собственные правила синтаксического анализа, которые более точно соответствуют существующим реализациям и документам. Однако он определяет альтернативную сериализацию XHTML , которая соответствует XML и, следовательно, SGML.

OED

Второе издание Оксфордского словаря английского языка (OED) полностью размечено языком разметки на основе SGML с использованием текстового редактора LEXX .

Третье издание размечено как XML.

Другие

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

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

Приложения

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

  • Text Encoding Initiative (TEI) - это академический консорциум, который проектирует, поддерживает и разрабатывает технические стандарты для приложений представления текста в цифровом формате.
  • DocBook - это язык разметки, изначально созданный как приложение SGML, предназначенный для создания технической документации; В настоящее время DocBook представляет собой приложение XML.
  • CALS (Непрерывное получение и поддержка жизненного цикла) - это инициатива Министерства обороны США по электронному захвату военных документов и связыванию соответствующих данных и информации.
  • HyTime определяет набор типов элементов, ориентированных на гипертекст, которые позволяют авторам документов SGML создавать гипертекстовые и мультимедийные презентации.
  • Система EDGAR (электронный сбор, анализ и извлечение данных) обеспечивает автоматический сбор, проверку, индексирование, принятие и пересылку представлений компаниями и другими лицами, которые по закону обязаны подавать данные и информационные формы в Комиссию по ценным бумагам и биржам США. (SEC).
  • LinuxDoc . В документации для пакетов Linux использовались LinuxDoc SGML DTD и Docbook XML DTD.
  • AAP DTD - это определение типа документа для научных документов, определенное Ассоциацией американских издателей .
  • ISO 12083 , преемник AAP DTP, является международным стандартом SGML для обмена документами между авторами и издателями.
  • SGMLguid был ранним определением типа документа SGML, созданным, разработанным и используемым в CERN .

Реализации с открытым исходным кодом

Важные реализации SGML с открытым исходным кодом включают:

  • ASP-SGML
  • ARC-SGML , от Standard Generalized Markup Language Users ', 1991, язык C
  • SGMLS , Джеймс Кларк, 1993, язык C
  • Проект YAO , Технологический институт Юань-цзе, Тайвань, совместно с Чарльзом Гольдфарбом, 1994 г., объект
  • SP Джеймса Кларка, язык C ++

SP и Jade, связанные процессоры DSSSL, поддерживаются проектом OpenJade и являются общими частями дистрибутивов Linux. Общий архив программного обеспечения и материалов SGML находится в SUNET . Исходный класс синтаксического анализатора HTML в реализации Java Sun System представляет собой синтаксический анализатор SGML с ограниченными возможностями, использующий терминологию и концепции SGML.

Смотрите также

использованная литература

внешние ссылки