XHTML, говорите?

Одна із самих сумних речей, яку я помічаю, коли набредает на російськомовні веб-разработчіцкіе спільноти – це повне небажання розбиратися в суті питань. Коли щось у когось не виходить, він спочатку запитує це у форумі, де купа самозваних "гуру" починає йому розповідати несусвітню нісенітниця. Потім, якщо пощастить, хто-небудь дасть посилання на яку-небудь більш-менш адекватну статтю, яка може частково стосуватися питання. Рада ж почитати першоджерело (наприклад специфікацію мови) зазвичай сприймається як знущання, тому як по-англійськи все "вільно розмовляють" тільки у своїх резюме.

Все це призводить до того, що російське веб-спільнота повно абсолютно дивних міфів, лякаюче суперечать логіці:

Ось з приводу останнього – сьогоднішня стаття.

"Ложки немає"

По-перше, потрібно чітко розуміти, що чисто технічно ніякого XHTML в сучасному вебі не існує. З тієї простої причини, що найпоширеніший браузер, Яким користуються люди, XHTML відображати не вміє. Якщо IE згодувати реальну XHTML-сторінку, то він її покаже як будь-який інший XML-документ – у вигляді дерева елементів.

Багато тут подумають, що я об'ївся лободи, і несу нісенітницю, тому що от же, наприклад – відомий сайт, У якого в сурс зверху недвозначно написано, що це XHTML 1.0, і валідатор підтверджує, що так воно і є. І IE його, зрозуміло, відображає.

Заковика тут у тому, що браузери з'ясовують тип документа не по DOCTYPE. Замість цього вони дивляться на те, що зазначено в заголовках HTTP-відповіді, з яким прийшов документ. А написано там у переважній більшості випадків:

Content-type: text/html

… Ну і ще кодування, можливо. А це означає, що браузер для відображення документа використовує HTML-ний парсер. Щоб браузер почав відображати документ саме за правилами XHTML, потрібні дві речі:

Якщо так зробити, то як я вже сказав, IE, у якого спеціального XHTML-парсера немає, буде просто показувати дерево елементів, а нові браузери дійсно включаться в XHTML-режим.

DOCTYPE

Варто уточнити, навіщо ж все ж таки потрібен DOCTYPE. Як я вже писав у статті про валідацію, теоретично, він вказує на окремий документ – DTD – за яким можна фомально перевірити синтаксис XHTML. Але стандарт XML дозволяє браузерам цього не робити і бути невалідірующімі парсер. Вони й не роблять. І єдина програма, яка таки використовує DTD – це сам валідатор (мені це нагадує негласне вимога до москвичів носити з собою паспорт лише для того, щоб міліція могла його наявність перевіряти :-)).

Тим не менш, браузерів все-таки використовують рядок DOCTYPE. Але виключно для того, щоб за збігом цього рядка з якимись внутрішніми шаблонами включати різні режими зворотної сумісності. Наприклад, чи буде IE6 вважати розміри боксів за стандартом або в режимі совметімості з IE5, залежить від того, вказати йому DOCTYPE суворого (X) HTML чи ні. А в Gecko-браузерах таких режимів аж три: "Загадковий", "як IE" і "стандартний".

До речі, цікавляться сильно раджу почитати свіжу статтю Тіма Брея про те, Ніж шкідливий DOCTYPE. Тім Брей, між іншим, один з авторів XML.

А і не потрібно

Думаю, я не ошібаюь сильно, вважаючи, що заклики писати тільки на XHTML засновані виключно на тому, що це модно. Я пам'ятаю, що багатьох людей свого часу знущально (знаючи відповідь) питав, а навіщо саме вони вставляють слеш ("/") в теги <img/> і <br/> і навіщо саме вони пишуть на початку документа DOCTYPE різних варіантів XHTML. Ніякого виразного відповіді я на своє запитання не отримував.

Бо на практиці використати справжнє XHTML
а) важко і б) практично нема чого.

Нагадаю, що кардинальна відмінність XHTML від HTML полягає в тому, що XHTML підкоряється жорстким XML'ним правилами well-formed'ності. Тобто, якщо в документі хоч трохи щось неправильно, то барузер зобов'язаний кинути парсити документ і повідомити користувачеві про помилку.

Така строгість потрібна і зручна, якщо ваш користувач – програма. Тоді, чим більш прості і суворі правила синтаксису, тим простіше вона сама.

Але така поведінка не підходить на вебі. Ні одному користувачу не цікаво знати, як там десь помилився автор сторінки або автор його CMS. Вони приходять користуватися, а не налагоджувати. А в сучасному вебі, де документи складаються з купи різних непов'язаних шматочків інформації, сінатксіческіе помилки, на жаль, занадто часті. Що означає, що ваш правильний XHTML-сайт буде занадто багато часу неюзабельним. Досить, наприклад, просто перенести copy-paste'ом URL'ку з браузера в блог і, якщо в URL'ке є амперсанда (&), то ви отримуєте зламаний XHTML, який вимагає, щоб ці амперсанда були екрановані (&).

Лякалка

Якщо все вишенапісанного не переконало вас у марності XHTML і ви всупереч здоровому глузду думаєте, що "це все одно правильно", то я хочу вас ще трохи полякати. Тому що ці настрої звичайно підкріплюються думкою, що "обексемеліть" HTML – задачка все одно проста. Чого там, в общем-то: закрити всі теги, откавичіть атрибути, екранувати амперсанда і вставити слеші в одиночні теги. Насправді все трохи складніше. Ось невеликий і неповний список, у що це виливається:

Іншими словами, наступного разу, коли вам потрібно буде зверстати сторінку для вебу, відлиньте суєту і почніть її так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
		"http://www.w3.org/TR/html4/strict.dtd">
<title> Сторінка </ title>
<p> Текст

Це абсолютно валідний HTML 4.01 strict. А якщо вам не потрібна валідація, то й DOCTYPE можна скоротити до мінімуму, щоб тільки браузери в стандартний режим включалися:

<!DOCTYPE html>
<title> Сторінка </ title>
<p> Текст

Сенс все ж таки є

Є поодинокі випадки, коли застосування XHTML виправдано і на вебі теж.

Одна з областей застосування – Мікроформати (про які я вже якось писав). Оскільки вони пропонуються як речі і человекочітаемие, і машиночитаних одночасно, то строгість XML'а для них вже корисна.

Інша, ще більш рідкісна штука – змішані документи. XML дозволяє в одному і тому ж документі об'єднувати елементи різних XML-мов (оскільки синтаксис загальний). Найчастіше це використовується для вставляння в XHTML шматків математики на MathML і графіки на SVG. Є відомий блог – Musings – який це широко використовує.

Автор: Іван Сагалаєв
Джерело: Маніакальний Веблог

Однак, напевно самий корисний ефект, який XHTML справив, лежить аж ніяк не в технічних аспектах. Ця сама буква "X" зіграла у свій час важливу роль, зробивши з простого як би всім відомого і нудного HTML нову модну технологію. Не будь XHTML'а, напевно куди менше людей зацікавилися б ідеями сучасної верстки CSS'ом, поділом вмісту та оформлення і стали б читати специфікації хоча б і тільки для того, щоб повісити на сторінку марну кнопочку валідації. Нехай … Головне – загальний ефект 🙂

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*