Легенды о прологе и doctype

Качественный xhtml-документ немыслим без указания пролога и типа документа. Не смотря на то, что многие веб-девелоперы игнорируют эти важные элементы, не указанный пролог и doctype могут быть причиной многих несоответствий в рендеринге страницы.
| Цель | | правильная вёрстка страниц |
| Технология | | W3C XHTML 1.0 |
| Поддержка | | Все актуальные браузеры |
| Баги | | о них и поговорим :) |
Как я уже сказал, неверное указание самых главных элементов (x)html-вёрстки может привести к ошибкам при отображении страниц в разных браузерах. Рассмотрим рекомендацию W3Consortium по написанию «шапки» кода страницы:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
…
Итак, в первой строке мы указываем принадлежность к документа к XML версии 1.0 и указываем кодировку, в нашем случае — windows-1251.
Во второй объявляем тип документа — в XHTML 1.0 их три: Strict, Transitional и Frameset, у нас указан Transitional; и адрес к интерпретатору (для браузера, если он не знает).
Третья строка объявляет html-маркировку и ссылку для браузера (опять же, если он раньше ничего не слыхал). Дальше идёт сам документ.
Я бы хотел обратить внимание веб-девелоперов на очередной глюк IE6 — при вёрстке XHTML 1.0 Transitional нельзя указывать пролог <?xml version="1.0" encoding="windows-1251"?>, так как он приводит к многочисленным ошибкам при рендеринге страницы. Происходит это потому, что браузер отображает страницу не по стандарту W3C, а в режиме несоответствия стандартам (quirks-mode). Спасает лишь то, что в типе Transitional пролог не является обязательным и его можно не указывать.
Стоит отметить, что браузеры Opera и Mozilla рендерят страницу без ошибок в любых случаях, с прологом или без него.
В таблице отображена зависимость режимов рендеринга в Internet Explorer от указания DOCTYPE (quirks – режим несоответствия стандартам, standart – обычный режим).
| Варианты использовании DOCTYPE | Win IE5 | Win IE6 | Mac IE6 | |
| HTML 4.01 Transitional без doctype | quirks | quirks | quirks | |
| HTML 4.01 Transitional без url в doctype | quirks | quirks | quirks | |
| HTML 4.01 Transitional полный doctype | standart | standart | standart | |
| XHTML 1.0 Transitional без doctype | quirks | quirks | standart | |
| XHTML 1.0 Transitional без url в doctype | quirks | quirks | standart | |
| XHTML 1.0 Transitional без пролога | standart | quirks | standart | |
| XHTML 1.0 Transitional без пролога и url | standart | standart | standart |
Таким образом, можно сделать вывод, что указание DOCTYPE являстся обязательным при вёрстке (X)HTML-страниц, в то время как пролог можно (и нужно) опустить.
Код, 27/07/06
Wart!X
