Я искренне надеюсь что большая часть людей, которая в теме, прочитает заголовок, скажет "вот чушь" и не будет дальше читать. Если вы твёрдо знаете что делаете - делайте, эта статья не для вас.
Статья же для тех, кто не в курсе для чего они ставят в начале своей верстки такую строчку:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Для начала мне конечно хочется чтобы вы вдумчиво прочитали про конструкцию <!DOCTYPE> в моих предыдущих статьях, чтобы я не повторяла зачем она нужна. Теперь немного истории:
Для всякой там разметки текста был придуман язык SGML (англ. Standard Generalized Markup Language) — стандартный обобщённый язык разметки. Он по сути и включал в текст знакомые нам теги и атрибуты. Пример:
<USABILI_TAG attribute="me"> Какой-то абстрактный <tag>тег</tag> </USABILI_TAG>
Он в общем-то был не строг в синтаксисе, позволял всякие вольности интерпретирующим приложениям и вообще имел ещё более старого предка языков разметки. Из ключевых особенностей SGML уже являлось то что он мог содержать ссылки на "Document Type Definition" - т.е. документы которые говорили программам что и как делать и расширяли возможности языка. Например можно было использовать не угловые скобки.
Из этого языка ответвился язык разметки XML - он служил как формат чтения данных машиной и имел строгий синтаксис, т.е. 1 корневой элемент, все внутренние элементы должны иметь закрывающий тег, должны быть экранированы символы "&","<" и">" и многое другое. А главное то, что если хоть что-то в файла XML не корректно, интерпретатор должен немедленно остановить работу и сообщить об ошибке.
Применительно к интернету язык SGML эволюционировал в язык разметки HTML. HTML тоже прощает нам многие вольности, например можно вообще не писать тег <html>, да и теги head и body тоже, и вообще можно верстать как угодно коряво, надеясь что браузер, как-нибудь, да угадает, что хотел сказать разработчик. Язык html имеет вот такого вида доктайп:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Для тех кто создаёт документы для сети с помощью XML шаблонов и XML данных и вообще всех гиков которые любят XML и строгость есть вариант разметки XHTML. За исключением (a priori) структурно правильного xml файла никаких преимуществ в XHTML по сравнению с HTML нет. Это совершенно одно и тоже.
HTML 4.01 Transitional = XHTML 1.0 Transitional
HTML 4.01 Strict = XHTML 1.0 Strict
HTML 4.01 Frameset = XHTML 1.0 Frameset
Теперь немного о реализации поддержки XHTML в современных браузерах. Так вот, её нет. Не вообще, но в ожидаемом обывателями виде нет. В большинстве своём они просто отображаются как HTML. Одна из причин в том что сервер отдаёт файлы с указанием типа "text/html" - что уже говорит о том что это html, а не xhtml. Ваш веб-сервер должен отдавать заголовок "application/xhtml+xml" (ну или на худой конец application/xml, text/xml) чтобы браузеры считали файл действительно XHTML'ем. Следующим подводным камнем является Internet Explorer 7 - он как и остальные браузеры в случае с получением text/html - считает файл тем же HTML, однако формата "application/xhtml+xml" он вообще не понимает и предлагает пользователю скачать этот файл или покажет как таблицу дерева элементов. Также корректно указывать в любом xml файле, а xhtml это как раз такой, в начале строчку пролога (объявления xml) "<?xml version="1.0" encoding="UTF-8"?>" которую не понимает IE6, т.е. он её понимает, но в таком случае он не воспринимет объявление DOCTYPE которое вы укажите после неё.
Повторю мысль высказанную в одной статье из ссылок по теме "на практике правильный XHTML использовать a) трудно б) незачем".
Ссылки по теме:
http://softwaremaniacs.org/blog/2005/12/19/xhtml-you-say/
http://www.webdevout.net/articles/beware-of-xhtml - см. раздел Myths of XHTML
http://www.master-web.info/xhtml2-vs-html5/
UPD: Поправила сравнение HTML 4.01 и XHTML 1.0. Прочитайте также мою статью «Блочная модель, и её вариации», она немного пересекает эту статью.
Комментарии:
SelenIT
05.07.2009 15:52:01
Елена
06.07.2009 10:57:22