XHTML, часть 3: настоящее и будущее веб-технологий стороны клиента

Параллельно шла работа над спецификацией CSS (Cascading Style Sheets — каскадные листы стилей), которая была утверждена консорциумом W3C в самом конце 1996 г. Каскадные листы стилей отделены от содержания веб-страниц и потому не вредят внутренней логике последних. К тому же они, в отличие от встроенных в HTML возможностей визуального форматирования, явно предписывают агенту пользователя, каким образом должны интерпретироваться те или иные свойства. Полузабытый принцип разделения содержания и представления, заложенный еще разработчиками SGML, стал возрождаться.

Любой технологии, однако, нужны годы на обкатку. Первая версия CSS, CSS level 1 (или, кратко, CSS1) оказалась почти не замеченной разработчиками, ибо не смогла заменить собой все визуальные средства, насильственно втиснутые в HTML. К тому же качество поддержки CSS в браузерах тех лет не выдерживало никакой критики.

Спецификация CSS2, утвержденная в качестве официальной рекомендации в 1998 г., обладает намного более серьезными возможностями. Ее конек — существенно усовершенствованная блочная модель, позволяющая представить любую веб-страницу как набор прямоугольных областей с различными свойствами и тем самым избавиться от верстки шаблонов страниц при помощи таблиц. Кроме того, CSS2 позволяет определять индивидуальные и прозрачные для пользователя правила представления информации для различных сред и устройств вывода, в частности, для экрана настольного компьютера или ноутбука, для меньшего по размерам экрана «наладонника» или смартфона, для речевых браузеров, для механических строк Брайля, для принтера и т. д.

В 1997 г. официальной рекомендацией W3C становится HTML уровня 4.0, явившийся плодом множества компромиссов. HTML 4 вобрал в себя все визуальные возможности HTML 3.2, но в большинстве своем они были провозглашены не рекомендованными к использованию (deprecated). HTML 4 — это, по сути, не один стандарт, а целых три. Иначе говоря, в рамках HTML 4 определяются 3 типа документов: Strict (строгий, предписывающий четкое соблюдение идеологии структурной, логической разметки и подразумевающий отказ от большинства возможностей визуального представления данных), Transitional (переходный, намного более либеральный, оставляющий право пользоваться сомнительным наследием эпохи HTML 3.2) и Frameset (предназначенный для страниц, использующих фреймы — слабоактуальную ныне придумку компании Netscape, позволяющую поделить окно браузера на несколько фрагментов с тем, чтобы отображать в оных разные документы). Наиболее предпочтительным, разумеется, является использование типа документов Strict.

Тем временем на смену сложному и противоречивому SGML в качестве универсального стандарта для хранения любых структурированных данных приходит расширяемый язык разметки XML — eXtensible Markup Language. Этот язык представляет собой компактное подмножество SGML, отличающееся от прародителя существенно более строгими и однозначными правилами. (Спецификация SGML в печатном виде занимает порядка тысячи страниц, тогда как описание языка XML — всего два десятка.)

HTML 4 (а точнее, результат незначительных модификаций последнего, HTML 4.01, утвержденный в конце 1999 г.) стал в определенном смысле «тупиковой веткой» — это последняя версия HTML, основанная на SGML.

Развитием HTML 4 стал расширяемый (eXtensible) язык разметки гипертекста — XHTML 1.0, по сути своей явившийся лишь переформулировкой стандарта HTML 4.01 в соответствии с правилами XML 1.0. XHTML 1.0, за исключением ряда нюансов (которых мы коснемся ниже), в точности повторяет функциональность HTML 4.01 и включает в себя все те же три типа документов: Strict, Transitional и Frameset.

XHTML 1.1, полностью упразднивший типы документов Transitional и Frameset и утвердивший еще некоторые ощутимые нововведения, уже несколько дальше от привычного HTML, но на практике пока используется довольно редко. XHTML 2.0 уходит в еще больший отрыв от совместимости с «классическим» HTML — но эта версия пока еще находится в работе и в разряд официальных рекомендаций W3C перейдет не так скоро. То же самое относится и к CSS3 — перспективной версии CSS, снимающей многие ограничения, присущие CSS2. В более скором будущем официальной рекомендацией W3C должна стать спецификация CSS2 Revision 1 (CSS2.1), уточняющая и корректирующая некоторые важные положения рекомендации CSS2, но отличающаяся от последней не столь значительно, как CSS3.

«Истинный» XHTML

Современными разработчиками XHTML 1.0 вполне правомерно рассматривается как нечто почти тождественное HTML 4. Мы предполагаем, что веб-страница, созданная с применением правил XHTML 1.0, будет вести себя точно так же, как аналогичный по структуре документ, созданный при помощи HTML 4.

И это действительно так, но только при условии, если веб-сервер указывает в поле HTTP-заголовка Content-Type, определяющем MIME-тип содержимого сообщения ответа, значение text/html.

Консорциум W3C, в свою очередь, рекомендует указывать для XHTML-документов совсем другие MIME-типы — в частности, text/xml, application/xml или application/xhtml+xml. Для XHTML 1.1 и 2.0 это условие уже обязательно.

Предполагается, что в указанном случае веб-страница должна обрабатываться агентом пользователя как полноценный XML-документ, с использованием синтаксического анализатора XML. А это, в свою очередь, «грозит» двумя важными последствиями. Во-первых, страницы будут отображаться только после полной загрузки и последующего синтаксического анализа. Во-вторых, документы, в которых синтаксический анализатор найдет ошибки, вообще не будут обрабатываться, что положит конец излишнему «либерализму» языка HTML, обсуждавшемуся в начале этой статьи. (Собственно, только в этих условиях XHTML оправдает свое название — «расширяемый HTML», ибо обработка документа по правилам XML позволит безболезненно внедрять в код веб-страницы фрагменты, использующие другие языки, основанные на XML, например, MathML, предназначенный для описания математических выражений.)

Правда, всерьез говорить обо всем этом можно будет только лет через пять, если не позже. Экспериментировать «в лабораторных условиях» вполне можно уже сегодня, но для повседневной практики упомянутые концепции пока не подходят. Подняться до заоблачных высот мешает балласт, обусловленный уровнем развития современных браузеров. Ничего не поделаешь, придется покружить над аэродромом…

Артемий Ломов