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