URL-адрес HTML-документа загружается браузером клиента? - PullRequest
6 голосов
/ 21 января 2011

Мне просто интересно, когда я объявляю Doctype, такой как следующий:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Считывается ли strict.dtd из http://www.w3.org/TR/html4/ или это просто используется как неясный идентификатор, указывающий браузеру использовать строгую обработку?

Может быть, браузер хранит содержимое http://www.w3.org/TR/html4/, которое постоянно хранится локально?

Ответы [ 2 ]

3 голосов
/ 21 января 2011

Обычные веб-браузеры обрабатывают Doctype как не что иное, как волшебную строку, обозначающую режим стандартов или режим причуд.Они не рассматривают URI как URI и никогда не загружают DTD.Они даже не используют DTD для синтаксического анализа, а вместо этого имеют встроенный анализатор супа тега.

Проверяющие парсеры действительно загружают его, если у них нет локальной копии, которую они могут идентифицировать по идентификатору PUBLIC (URI - это идентификатор СИСТЕМЫ).Они должны его кешировать, но многие этого не делают, до такой степени, что W3C блокирует большинство (если не все) запросов на DTD по URI, указанным в Doctypes - они не могут позволить пропускную способность.

1 голос
/ 21 января 2011

Это выдержка из страницы википедии для "DTD"

Поскольку веб-браузеры реализованы с помощью специальных HTML-парсеров, а не основанных на DTD общего назначенияпарсеры, они не используют DTD и никогда не получат к ним доступ, даже если указан URL

...