В следующих разделах содержится формальное определение SGML языка HTML 4.0. Сюда входят объявление SGML, определение типа документа (Document Type Definition, DTD) и ссылки на комбинации символов, а также пример каталога SGML.
Эти файлы можно также получить в формате ASCII:
Многие авторы проверяют свои документы в ограниченном наборе браузеров, считая, что, если эти браузеры могут представить их документ, то документ является допустимым. К сожалению, это весьма неэффективное средство проверки документов, поскольку браузеры разработаны так, чтобы поддерживать и некорректные документы, представляя их настолько хорошо, насколько это возможно.
Для проверки корректности следует проверять документы с помощью грамматического анализатора SGML типа nsgmls (см. [SP]), чтобы убедиться в их соответствии HTML 4.0 DTD. Если объявление типа Вашего документа включает URI, а синтаксический анализатор SGML поддерживает такой тип системных идентификаторов, он получит DTD прямо. В противном случае Вы можете использовать примерный каталог SGML. Предполагается, что DTD сохранено в виде файла "strict.dtd", а комбинации находятся в файлах "HTMLlat1.ent", "HTMLsymbol.ent" и "HTMLspecial.ent". В любом случае убедитесь, что синтаксический анализатор SGML поддерживает Unicode. Подробнее см. в документации по утилите для проверки корректности.
Помните, что несмотря на то, что такая проверка полезна и настоятельно рекомендуется, она не гарантирует полного соответствия документа спецификации HTML 4.0. Причина заключается в том, что синтаксический анализатор SGML использует только данное DTD SGML, в котором не отражены все аспекты корректного документа HTML 4.0. В частности, синтаксический анализатор SGML гарантирует корректность синтаксиса, структуры, списка элементов и их атрибутов. Но он не может отследить, например, такие ошибки как установка недопустимого значения атрибута width элемента IMG (например, "foo" или "12.5"). Хотя в данной спецификации значение этого атрибута ограничивается только "целыми числами, представляющими длину в пикселах", в DTD оно определено только как тип CDATA, для которого допустимы любые значения. Проверить полностью соответствие HTML 4.0 может только специальная программа.
Тем не менее, такая проверка все равно настоятельно рекомендуется, поскольку она позволяет обнаружить большой спектр ошибок.
В этот каталог включаются заменяющие директивы, гарантирующие, что для обрабатывающего программного обеспечения, такого как nsgmls, общие идентификаторы будут иметь приоритет над системными. Это означает, что пользователи не обязательно должны быть подключены к Web при загрузке системных идентификаторов на базе URI.
OVERRIDE YES PUBLIC "-//W3C//DTD HTML 4.0//EN" strict.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" loose.dtd PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" frameset.dtd PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspecial.ent PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsymbol.ent