Какие существуют разные типы документов в html и что они означают?

Как видно из заголовка, какие доступны различные типы документов и что они означают? Я заметил, что макет выглядит немного иначе в IE7, когда я переключаюсь с

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

в

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Есть ли другие, и каковы последствия или последствия?

Спасибо!

1.11.2008 03:16:54
Это обязательно должно быть Сообщество Wiki IMHO.
Wayne Koorts 27.11.2009 03:20:10
6 ОТВЕТОВ
РЕШЕНИЕ

Doctype или Тип документ Декларация связывает документ с определением типа документа .

Определение типа документа является стандартом для документа XML. Существует много DTD для документов XML и XHTML. Сам по себе XML не имеет большой части схемы или очень специфического набора правил, за исключением требования, чтобы все было правильно сформировано. Вы можете думать о DTD как о более конкретной схеме для документа .

Режимы рендеринга

Из-за изменения стандартов большинство современных браузеров на самом деле имеют разные режимы рендеринга ( режим стандартов , для рендеринга вашего документа и CSS в соответствии с более свежими веб-стандартами, и режим причуд , в котором браузер возвращает некоторые идеи рендеринга с первых дней работы в Интернете. ). Эти режимы установлены для целей обратной совместимости. Огромный ландшафт веб-страниц, созданных в первую эру Интернета, отображается в соответствии с правилами их времени, в то время как более новые документы могут апеллировать к новой волне стандартов. С течением времени и представлением новых форматов, возможно, будет создан соответствующий DTD.

Несоответствия браузера

В идеальном мире страница, загружаемая браузером, будет читать Doctype сверху и использовать его для поиска определения типа документа. Затем он будет использовать схему этого DTD в качестве основы для чтения остальной части документа. Таким образом, типы документов были бы важны для проверки документов разметки. DTD предоставит стандарт, по которому ваш документ должен быть проверен.

К сожалению, это не идеальный мир. Браузеры не обязательно ведут себя здесь непротиворечиво, и если они это делают, непротиворечивое поведение не совсем соответствует первоначальному видению Doctypes. Хотя синтаксический анализ выполняется независимо от Doctype, основные браузеры по крайней мере проверят Doctype для определения режима рендеринга. Если ваш Doctype отсутствует или является неполным, браузер, скорее всего, будет выполнять рендеринг в режиме причуд . Для правильного отображения современных документов браузер должен выполнять рендеринг в стандартном режиме . Mozilla, Safari и некоторые последние версии Opera на самом деле реализуют режим почти стандартов , который полностью посвящен переходным страницам.

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

Выбор Doctype

Для достижения соответствия стандартам следует по возможности использовать строгие типы документов.

При написании на XHTML этот Doctype распространен:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

При написании в HTML 4.1 , это обычно вместо этого:

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

Некоторые другие общие типы документов для XHTML и HTML 4 перечислены здесь для полноты:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

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

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

Дебаты о строгом и переходном типах учений

Евангелисты по стандартам призывают веб-разработчиков прекратить использование переходного Doctype на новых страницах и вместо этого использовать Strict. Опять же, это тот случай, когда теория и практика сталкиваются с трудностями примирения. Первоначальная надежда переходного Doctype заключалась в том, чтобы предоставить промежуточный дом для перехода устаревших веб-сайтов к соответствию стандартам. В случае переходных типов документов ограничение на элементы и атрибуты буквально «менее строгое», поэтому разработчики смогут быстрее начать работу в стандартном режиме и постепенно устранить несоответствия.

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

Полезные инструменты

W3C ( World Wide Web Consortium ) - это группа, которая играет активную роль в определении стандартов такого рода. На сайте http://validator.w3.org/ имеется полезный онлайн-инструмент для проверки и проверки документов на соответствие их стандартам. Существует множество других сторонних инструментов и расширений для браузера с аналогичными функциями.

54
7.11.2012 00:11:40

Вот официальное объяснение различных DTD от W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list.html

Вы также можете найти следующие полезные:

http://www.freedivs.com/tutorials/Choosing%20a%20DOCTYPE/

3
1.11.2008 03:23:06

Браузеры не заботятся о том, какой тип документа вы используете (ну, почти верно), они используют его только для одной цели: решить, какой режим рендеринга использовать. См., Например, документацию Fx или Opera для реальных примеров того, какие алгоритмы используются, чтобы решить, какой режим использовать (я полагаю, что некоторая документация для IE тоже где-то похоронена в MSDN ... [Это может быть правильная страница] ( http : //msdn.microsoft.com/en-us/library/ms535242 (VS.85) .aspx) , я не знаю, извините).

Однако в большинстве браузеров есть два основных режима (в некоторых браузерах также есть режим почти стандарта ):

  • режим quirks (используется, когда «правильный» тип документа не найден, «правильный» с точки зрения браузера): попытайтесь отобразить документ так, как это сделала бы старая версия IE (одно из самых важных отличий, т.е. является то, что некоторые браузеры используют ошибку модели коробки IE в этом режиме),
  • и стандартный режим (используется, когда браузер обнаружил тип документа, который он считает правильным): попробуйте сделать так, как говорят стандарты.

Вы можете использовать (нестандартное) document.compatModeсвойство в предыдущих браузерах, чтобы проверить, какой режим использовался для визуализации текущего документа.

(Примечание по XHTML: я предполагал, что вы обслуживаете документы в формате HTML ( text/html), если вы предоставляете документы в формате XHTML (вероятно application/xhtml+xml), большинство браузеров напрямую переходят в стандартный режим и вообще не заботятся о типе документа AFAIK.)

Кстати: рекомендация (или то, что выглядело как рекомендация) в другом ответе нарушена, переходный DTD не должен использоваться в новых документах. Всегда используйте строгий (термин «строгий» вводит в заблуждение, должен быть «по умолчанию» или что-то еще не страшное), точка:

Авторы должны использовать Strict DTD, когда это возможно, но могут использовать Transitional DTD, когда требуется поддержка атрибута представления и элементов. - HTML 4.01: 22 Определение типа переходного документа .

Мы рекомендуем авторам писать документы, которые соответствуют строгому DTD, а не другим DTD, определенным в этой спецификации. - HTML 4.01: 4 Соответствие: требования и рекомендации

И есть много сообщений в блоге об этом, например, больше нет переходных DOCTYPE, пожалуйста (с 2006 года, но некоторые , очевидно, все еще имеют проблемы с этим :).

Этот пост начинался с указания на то, что браузерам все равно, что вы выберете, а затем превратился в рутину о том, как правильно выбрать DTD, интересно ... Но если вы собираетесь тратить (/ тратить?) Время и энергию чтобы выбрать DTD, вы также можете выбрать правильный (с точки зрения стандартного HTML 4.01).

Или , вы можете игнорировать все это и использовать следующие вместо этого, в ближайшее время в любом случае :

<!doctype html>

( Этот ответ на «какую-либо причину не начинать использовать тип документа HTML 5?» Был как бы связан с последней частью.)

7
23.05.2017 12:17:05
Для разработки (читай: проверка правильности через валидацию), doctypes действительно играют роль. После того, что вы сказали, относится.
Konrad Rudolph 1.11.2008 20:59:05

По сути, тип документа определяет, насколько сумасшедшим будет IE.

Если вы не установите для него XHTML или «строгий», вы будете жить в мире боли, когда дело доходит до IE (даже если вы установите его, вы все равно будете ненавидеть IE, но он делает это намного лучше).

0
1.11.2008 22:11:25
Если вам нужно нацелиться на IE 6 или 7, вы все равно сможете получить почти стандартный режим
Casebash 2.07.2010 04:51:04

Вокруг учений много дезинформации. Путаница проистекает из того факта, что изначально типы документов были предназначены для одной цели (для идентификации DTD, то есть используемой версии HTML), но в реальных браузерах используются для совершенно не связанных целей.

В современных браузерах объявления Doctype используются только для одной цели: переключение между режимом рендеринга причуд и режимом рендеринга стандартов для CSS. Так что в основном это CSS-вещь, а не HTML-вещь.

Рендеринг в режиме Quirks обратно совместим с некоторыми старыми ошибками рендеринга в старых браузерах и в основном полезен для устаревшего контента, который вы не хотите исправлять. Новый контент всегда должен использовать стандартный режим, поскольку он отображается более корректно и согласованно среди браузеров. (При использовании стандартного режима все еще существуют различия между браузерами, но в режиме причуд намного хуже.)

Это не делает , не имеет никакого значения , выберите ли вы HTML или XHTML docytype, ни он будет делать никакой разницы , если вы выбрали строгий или переходный тип документа. Режим рендеринга в основном выбирается так:

  • Если документ не имеет типа документа, выбран режим причуд .
  • Если документ имеет нераспознанный тип документа, выбирается стандартный режим. Это означает, что вы можете написать случайный тип документа, <!DOCTYPE Chris>и он будет отлично работать.
  • Официальные типы документов W3C без правильного URL (вторая строка в теге) выбирают режим причуд . Все остальные типы документов выбирает стандартный режим. (Отредактируйте: конечно, это более сложный вариант , и даже в разных браузерах он может различаться , какой из распознанных типов докторов запускает режим причуда. Обзор se hsivonens , связанный с другим ответом.)

Исторически doctypes предназначались для объявления, какая версия и подмножество HTML использовались. HTML4 определяет несколько версий, где «переходный» допускает ряд элементов и атрибутов, которые (например, FONT) не допускаются в «строгом». Браузер теоретически может обрабатывать «строгие» документы, отличные от «переходных» документов. Однако ни один браузер на самом деле не делает этого .

Редактировать: scunliffe указывает, что IE8 будет иметь еще один режим рендеринга, режим "стандартов IE8". Однако AFAIK этот режим запускается не по типу документа, а по метатегу.

2
3.11.2008 12:45:36
Нет, это не просто CSS. Браузеры ведут себя по-разному при доступе к DOM также в разных режимах (или, по крайней мере, в IE), что еще хуже в IE8, есть 3 отдельных режима, причуды, стандарты и режим стандартов IE8.
scunliffe 2.11.2008 21:12:02