Во-первых, нужно четко понимать, что чисто технически никакого XHTML в современном вебе не существует. По той простой причине, что самый распространенный браузер, которым пользуются люди, XHTML отображать не умеет. Если IE скормить реальную XHTML-страницу, то он ее покажет как любой другой XML-документ — в виде дерева элементов.
Многие здесь подумают, что я объелся лебеды, и несу чушь, потому что вот же, например — известный сайт, у которого в сурсе сверху недвусмысленно написано, что это XHTML 1.0, и валидатор подтверждает, что так оно и есть. И IE его, разумеется, отображает.
Загвоздка тут в том, что браузеры выясняют тип документа не по DOCTYPE. Вместо этого они смотрят на то, что указано в заголовках HTTP-ответа, с которым пришел документ. А написано там в подавляющем большинстве случаев:
Content-type: text/html
… ну и еще кодировка, возможно. А это значит, что браузер для отображения документа использует HTML-ный парсер. Чтобы браузер начал отображать документ именно по правилам XHTML, нужны две вещи: тип должен быть xml’ным: application/xml, text/xml или рекомендуемый именно для XHTML — application/xhtml+xml элементы должны принадлежать зарегистрированному для XHTML пространству имен — это вот та штука xmlns="http://www.w3.org/1999/xhtml"
Если так сделать, то как я уже сказал, IE, у которого специального XHTML-парсера нет, будет просто показывать дерево элементов, а новые браузеры действительно включатся в XHTML-режим. |