Для комментариев зарегистрироваться или войти
Либо используйте ваш Open_ID, например аккаунт гугл, яндекс или ЖЖ
 

19 мая 2009 :Не используйте доктайп XHTML, если у вас HTML

Я искренне надеюсь что большая часть людей, которая в теме, прочитает заголовок, скажет "вот чушь" и не будет дальше читать. Если вы твёрдо знаете что делаете - делайте, эта статья не для вас.

Статья же для тех, кто не в курсе для чего они ставят в начале своей верстки такую строчку:

<!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. Прочитайте также мою статью «Блочная модель, и её вариации», она немного пересекает эту статью.


я буду очень признательна если вы прокоментируете эту статью

Комментарии:


Чтобы оставить комментарий нужно зарегистрироваться или войти.
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Оставить комментарий как:
Гость:
Сообщение:
Подпишитесь на статьи через RSS

15 самых популярных статей: