Среда, 01.04.2026
все хорошо
Меню сайта
Форма входа
Поиск
Главная » Статьи » Мои статьи

XHTML?(часть 2)

А и не нужно

Думаю, я не ошибаюь сильно, считая, что призывы писать только на XHTML основаны исключительно на том, что это модно. Я помню, что многих людей в свое время издевательски (зная ответ) спрашивал, а зачем именно они вставляют слеш (”/”) в теги <img/> и <br/> и зачем именно они пишут в начале документа DOCTYPE разных вариантов XHTML. Никакого внятного ответа я на свой вопрос не получал.

Потому что на практике использовать настоящий XHTML
а) трудно и б) практически незачем.

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

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

Но такое поведение не подходит на вебе. Ни одному пользователю не интересно знать, как там где-то ошибся автор страницы или автор его CMS. Они приходят пользоваться, а не отлаживать. А в современном вебе, где документы составляются из кучи разных несвязанных кусочков информации, синатксические ошибки, к сожалению, слишком часты. Что означает, что ваш правильный XHTML-сайт будет слишком много времени неюзабельным. Достаточно, например, просто перенести copy-paste’ом URL’ку из браузера в блог и, если в URL’ке есть амперсанды (&), то вы получаете сломанный XHTML, который требует, чтобы эти амперсанды были экранированы (&amp;).

Пугалка

Если все вышенаписанное не убедило вас в бесполезности XHTML и вы вопреки здравому смыслу думаете, что "это все равно правильно”, то я хочу вас еще немного попугать. Потому что эти настроения обычно подкрепляются мнением, что "обэксемелить” HTML — задачка все равно простая. Чего там, в общем-то: закрыть все теги, откавычить атрибуты, экранировать амперсанды и вставить слеши в одиночные теги. На самом деле все несколько сложнее. Вот небольшой и неполный список, во что это выливается:

  • Содержимое элементов <script> и <style> нельзя оставлять в том же виде, что и в HTML. Потому что любой значок ">” тут же все сломает. Если его экранировать через "&gt;” или заключать в блоки CDATA, то тогда сломаются HTML’ные браузеры, которые таких страстей не ведают и парсят текст, предполагая, что он не экранирован. Кроме того, в XHTML браузер не обязан вообще парсить содержимое комментариев, а скрипты, как известно, часто так экранируются по историческим соображениям.

    В итоге, чтобы удовлетворить и XHTML, и HTML, вам придется либо использовать такую вот конструкцию, учитывающую все синтаксисы:

    <script>
    <!--//--><![CDATA[//><!--
    ...
    //--><!]]>
    </script>

    Либо выносить скрипты и стили во внешние файлы.

  • document.write в скриптах в XHTML просто не работает. Придется переписать с использованием DOM-функций

  • В самих DOM-функциях нужно опустить все названия элементов в нижний регистр. То же для селекторов в стилях. В XHTML регистр букв имеет значение.

  • Также не работают удобные вещи: document.body, document.forms, document.images… Придется рисовать длинные вызовы вроде document.getElementsByTagName('body')[0] и document.getElementById('change_frm')

  • Если вы храните какой-нибудь текст внутри <input type="hidden" value="...">, то переводы строк внутри атрибута "value” в XHTML схлопнутся в пробелы. Чтобы этого не было придется их экранировать: "&#13;&#10;”.

  • Фоновый цвет body в XHTML не распространяется автоматически на все окно

Другими словами, в следующий раз, когда вам нужно будет сверстать страницу для веба, отриньте суету и начните ее так:

<!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’ом, разделением содержимого и оформления и стали бы читать спецификации хотя бы и только для того, чтобы повесить на страницу бесполезную кнопочку валидации. Пусть… Главное — общий эффект :-)

Категория: Мои статьи | Добавил: artemdzhuran (23.03.2011)
Просмотров: 622 | Комментарии: 1 | Теги: говорите?, XHTML, XHTML?, XHTML и CSS на 100 %
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
*-*
Copyright MyCorp © 2026