Mount LagunaMount Laguna // 2020-11-20

XHTML і валідація

Час від часу доводиться верстати сайти.
Чому доводиться – бо я більше веб-проограміст ніж верстальник.
Але коли проектом займається 1-2 людини то доводиться бути багато ким.

“А еще я и на машинке могу, и крестиком вышивать” © Матроскин

Всі нові проекти я верстаю за допомогою XHTML (переписати існуючі або просто виправити помилки, в тому числі і на цьому сайті, все ніяк руки не доходять… )
І час від часу виникає необхідність перевіряти коректність документу. Звісно є валідатор від w3c але для його використання потрібно робити зайві рухи (що для програміста не допустимо )
Є спосіб, як перевіряти документи на валідність прямо в браузері (я використовую Oper’у, але в Firefox це теж буде працювати):
Потрібно ввімкнути обробку XHTML документів через XML парсер.

Якщо сайт написаний за допомогою php, то це можна зробити так:

if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) header("Content-type: application/xhtml+xml");
else header("Content-type: text/html");

Трохи теорії. XHTML це мова розмітки, що базується на XML (на відміну від HTML, що базується на SGML).
Тому XHTML-документ має бути в першу чергу коректним XML-документом (всі теги мають закриватися, параметри бути в лапках і т.п.).
Також XHTML має передаватися з MIME-типом application/xhtml+xml.
В цьому випадку документ буде оброблятися через XML парсер.

Чому на 99.9% сайтів XHTML передається як text/html?
Бо є такий хрі… чудовий браузер IE6, який погано підтримує XHTML і не розуміє application/xhtml+xml.
Інші браузери (Opera, Firefox, Safari) коректно сприймають application/xhtml+xml тому обробляють XHTML через XML парсер і виводять повідомлення про помилки, якщо документ не коректний.

А навіщо взагалі перевірка на коректність? Адже моя сторінка без проблем показується в усіх браузерах, що ж ще треба?

Показується, бо розробники браузерів витратили дуже багато зусиль на написання двигунців, які, незважаючи на помилки, більш-менш нормально показують сторінки з помилками. Але навіщо примушувати браузери відвідувачів кожного разу виправляти ваші помилки, якщо це можна зробити 1 раз на сервері?
Звісно, потрібно дуже багато зусиль, щоб виправити помилки в уже існуючих проектів. Але, принаймні, нові проекти слід писати без помилок. Тоді, з часом, Інтернет очиститься від сайтів, код яких містить помилок більше, ніж контрольна двієчника. Двієчнику поставлять його заслужену двійку, а хто ж оцінить таких веб-майстрів, якщо більшість відвідувачів не заглядають в код сторінки?
Зараз використовувати application/xhtml+xml на готовому сайті ніхто не буде – бо є значний відсоток відвідувачів, що використовують IE6, але для розробки і відладки такий режим чудово підходить
Я ввімкнув його (правда лише для себе) на УкрБаші і вже виправив 5 чи 6 помилок, яких раніше не помічав. Вони були не на головній сторінці, а валідатором зазвичай перевіряється лише головна.