<!DOCTYPE всему голова>

О правилах хорошего тона по отношению к браузерам

Зачем нужен "Valid HTML"?

Интернет и все связанные с ним технологии непрерывно развиваются. Появляются новые браузеры. Как обеспечить, чтобы сделанный сегодня сайт правильно отображался в будущем?
Ведь посетитель не очень обрадуется, если увидит сообщение: "Для просмотра сайта нужен браузер ххх версии ууу".
А стандарты как раз и предназначены для решения этой проблемы. В идеале по полю DOCTYPE любой браузер должен однозначно определить, как отображать данную страницу.

Кроме того, не стоит забывать, что сайт просматривают не только с помощью обычного браузера. На сайт могут заходить поисковые роботы, которые "видят" его текстовый вариант. Для людей с ограниченными возможностями существуют программы чтения с экрана, которые должны не только выбрать нужную информацию, но и прочитать её в правильном порядке. Наконец есть устройства с "ограниченными возможностями" (КПК, телефоны), их браузеры также должны корректно отображать сайт.
При таком количестве разнообразных устройств общие стандарты, пожалуй, единственный способ обеспечить их согласованную работу.

Source: http://www.simplecoding.org/

Что такое DOCTYPE? Это способ указать браузеру, как правильно отображать документ и по какой схеме.
Существует много версий HTML, к примеру: HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict и множество других. DOCTYPE указывает браузеру структуру, элементы и их атрибуты для каждой версии HTML.

Указывание DOCTYPE критично, так как при его отсутствии браузер попытается обработать и отобразить документ так, как он считает нужным, а не так, как этого хотите вы и/или требуют стандарты. Ни о какой валидации, соответственно, и речи быть не может. Без DOCTYPE можно провести часы, пытаясь заставить браузер отобразить то, что вам нужно, и не добиться успеха.

Вот пример того, как должна выглядеть новорожденная страница:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Название страницы</title>
</head>
<body>
<p>Содержание страницы</p>
</body>
</html>

Наиболее распространенные виды DOCTYPE:

HTML 4.01 – Strict, Transitional, Frameset:

<!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 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 – Strict, Transitional, Frameset:

<!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 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1 – DTD:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

HTML 5 [используется, но стандарт для него ещё не дописан]

<!DOCTYPE HTML>

Почему так важен DOCTYPE

Если вы будете пользоваться неполным тегом DOCTYPE, устаревшим его видом, или вообще забудете про него, броузер перейдет в "загадочный" режим и будет исходить из предположения, что вы писали код страницы с ошибками и вольно отступали от стандартов, т.е. так, как писали в конце 90-ых годов.

В этом режиме броузер попытается разобрать вашу страницу по правилам обратной совместимости и выведет на экран, например, CSS так, как его вывел бы Internet Explorer 4-ой версии, а DOM будет работать так, как он работал именно в этом броузере (IE переключается в свой старый DOM, а Mozilla и Netscape 6 переключается вообще в бог знает что).

Source: http://www.webmascon.com/

Полный список всегда можно найти на W3C

Как вы могли заметить, есть 3 варианта стандартов: Strict, Transitional, Frameset.

  • Strict – строгое соответствие стандарту. Нерекомендуемые тэги запрещены.
  • Transitional – фактически то же, что и Strict, но не такой строгий. Нерекомендуемые тэги допускаются. Наиболее популярный вариант.
  • Frameset – используется на страницах с фреймами.

ЗЫ. В процессе написания этой статьи зашел на сайт А.Лебедева и был неприятно удивлен тем, что этот человек категориски не указывает DOCTYPE (как минимум на своем сайте). Этим он подает очень нехороший пример тем, у кого пока ещё не сложилась четкая собственная позиция по этому поводу.

Наверх