# 19 Справочная информация SGML для HTML

Содержание

1. Проверка корректности документа
2. Пример каталога SGML

В следующих разделах содержится формальное определение SGML языка HTML 4.0. Сюда входят объявление SGML, определение типа документа (Document Type Definition, DTD) и ссылки на комбинации символов, а также пример каталога SGML.

Эти файлы можно также получить в формате ASCII:

DTD по умолчанию (Default DTD):
  http://www.w3.org/TR/REC-html40/strict.dtd
Переходное DTD (Transitional DTD):
  http://www.w3.org/TR/REC-html40/loose.dtd
DTD с фреймами (Frameset DTD):
  http://www.w3.org/TR/REC-html40/frameset.dtd
Объявление SGML:
  http://www.w3.org/TR/REC-html40/HTML4.decl
Файлы определения комбинаций:
  http://www.w3.org/TR/REC-html40/HTMLspecial.ent
  http://www.w3.org/TR/REC-html40/HTMLsymbol.ent
  http://www.w3.org/TR/REC-html40/HTMLlat1.ent
Пример каталога:
  http://www.w3.org/TR/REC-html40/HTML4.cat

## 19.1 Проверка корректности документа

Многие авторы проверяют свои документы в ограниченном наборе браузеров, считая, что, если эти браузеры могут представить их документ, то документ является допустимым. К сожалению, это весьма неэффективное средство проверки документов, поскольку браузеры разработаны так, чтобы поддерживать и некорректные документы, представляя их настолько хорошо, насколько это возможно.

Для проверки корректности следует проверять документы с помощью грамматического анализатора 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 может только специальная программа.

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

## 19.2 Пример каталога SGML

В этот каталог включаются заменяющие директивы, гарантирующие, что для обрабатывающего программного обеспечения, такого как 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