XHTML 2.0¶
XHTML 2.0 — это язык разметки веб-страниц, разработанный Консорциумом Всемирной паутины (W3C) как преемник XHTML 1.1 и HTML 4.01. Проект был направлен на создание строгой, модульной и семантически чистой версии HTML, основанной на XML, но отказавшейся от обратной совместимости с существующими веб-стандартами. Работа над спецификацией велась с 2002 по 2009 год, после чего W3C прекратил разработку в пользу HTML5, который сохранил обратную совместимость и получил широкое распространение.
¶История
¶Предпосылки создания
В начале 2000-х годов веб-сообщество столкнулось с рядом проблем, связанных с развитием HTML. HTML 4.01, выпущенный в 1999 году, имел ряд недостатков, включая смешение структуры и представления (через атрибуты вроде bgcolor и font), а также нестрогий синтаксис, который допускал пропуск закрывающих тегов и нечувствительность к регистру. XHTML 1.0, стандартизированный в 2000 году, был попыткой «перевести» HTML 4.01 в XML, но он сохранял обратную совместимость с HTML-парсерами, что порождало путаницу. XHTML 1.1 (2001) уже был чисто XML-документом, но его возможности оставались ограниченными.
¶Разработка (2002–2006)
В 2002 году W3C сформировал рабочую группу XHTML 2.0. Целью было создание языка, который бы полностью отказался от наследия HTML и использовал бы XML как базовую технологию. Основные принципы включали:
- Строгость: все элементы должны быть закрыты, атрибуты — в кавычках, регистр — только нижний.
- Семантика: отказ от элементов, отвечающих за внешний вид (например,
b,i,font), в пользу стилей CSS. - Модульность: возможность комбинировать модули XHTML с другими XML-языками (MathML, SVG).
- Расширяемость: введение новых элементов и атрибутов для улучшения семантики.
Первая публичная рабочая черновик (Working Draft) был опубликован в августе 2002 года. В 2006 году вышла версия 2.0 Working Draft, которая уже содержала большинство ключевых изменений.
¶Прекращение разработки (2009)
Несмотря на амбициозные планы, XHTML 2.0 столкнулся с рядом проблем:
- Отсутствие обратной совместимости: браузеры, поддерживающие HTML, не могли корректно отображать XHTML 2.0 без специальной обработки.
- Конкуренция со стороны HTML5: в 2004 году WHATWG (Web Hypertext Application Technology Working Group) начал разработку HTML5, который, напротив, сохранял обратную совместимость и вводил новые возможности для веб-приложений.
- Низкая поддержка браузерами: ни один крупный браузер (Internet Explorer, Firefox, Chrome) не реализовал XHTML 2.0 в полном объёме.
В 2009 году W3C официально объявил, что не будет выпускать XHTML 2.0 как рекомендацию, и закрыл рабочую группу. Вместо этого консорциум сосредоточился на разработке HTML5, который был опубликован как рекомендация в 2014 году.
¶Отличия от XHTML 1.x и HTML
¶Синтаксис и структура
XHTML 2.0 вводил ряд изменений, которые делали его несовместимым с предыдущими версиями:
- Отказ от атрибутов
idиname: для идентификации элементов использовался только атрибутid, аnameбыл удалён. - Новый элемент
h: вместо шести уровней заголовков (h1–h6) предлагался единый элементh, уровень которого задавался атрибутомlevel(например,<h level="1">). - Удаление элементов представления:
b,i,big,small,hr,brи другие были исключены. Вместо них рекомендовалось использовать CSS. - Новые элементы для форм: вводились элементы
input type="datetime",input type="number",selectс атрибутомmultipleи другие, которые позже были реализованы в HTML5. - Модульность: XHTML 2.0 состоял из модулей, которые можно было комбинировать. Например, модуль «Структура» (
Structure) определял базовые элементы (html,head,body), а модуль «Формы» (Forms) — элементы для ввода данных.
¶Обработка ошибок
В отличие от HTML, где браузеры часто «прощали» ошибки (например, пропущенные закрывающие теги), XHTML 2.0 требовал строгого соблюдения XML-синтаксиса. Любая ошибка (например, незакрытый тег) приводила к тому, что документ не отображался, а браузер выдавал сообщение об ошибке. Это делало XHTML 2.0 менее удобным для начинающих разработчиков, но повышало надёжность парсинга.
¶Ключевые элементы и атрибуты
¶Элемент h
Вместо h1–h6 использовался единый элемент h с атрибутом level: ``xml <h level="1">Заголовок первого уровня</h> <h level="2">Заголовок второго уровня</h> `` Это упрощало стилизацию, но требовало изменения существующих стилей CSS.
¶Элемент nl
Для списков определений (dl, dt, dd) вводился элемент nl (navigation list), который также мог использоваться для навигации: ``xml <nl> <label>Навигация</label> <li><a href="/">Главная</a></li> <li><a href="/about">О нас</a></li> </nl> ``
¶Атрибут src для object
В XHTML 2.0 элемент object использовался для встраивания изображений, мультимедиа и других объектов. Атрибут src указывал на источник: ``xml <object src="image.png" type="image/png"/> ``
¶Формы
Формы в XHTML 2.0 были переработаны:
- Элемент
inputполучил новые типы:datetime,number,range,email,url. - Элемент
selectподдерживал множественный выбор через атрибутmultiple. - Вводился элемент
keygenдля генерации ключей шифрования.
¶Применение и наследие
¶Практическое использование
XHTML 2.0 никогда не был реализован в промышленных масштабах. Несколько экспериментальных проектов, таких как Mozilla XHTML 2.0 Test Suite, показали, что браузеры могут обрабатывать XHTML 2.0, но только при условии, что документ обслуживается с MIME-типом application/xhtml+xml. Однако из-за отсутствия обратной совместимости и поддержки со стороны Internet Explorer (который доминировал на рынке в 2000-х годах), XHTML 2.0 остался в основном теоретической разработкой.
¶Влияние на HTML5
Многие идеи XHTML 2.0 были заимствованы HTML5:
- Новые типы
input:datetime,number,email,urlи другие. - Семантические элементы:
article,section,nav,header,footer— хотя они не являются прямым аналогом XHTML 2.0, концепция семантической разметки была развита. - Модульность: HTML5 также поддерживает модульность через MathML и SVG, но в менее строгой форме.
- Обработка ошибок: HTML5 ввёл единый алгоритм парсинга, который стандартизировал то, как браузеры обрабатывают ошибки, что сделало HTML более надёжным без жёстких требований XHTML.
¶Критика
XHTML 2.0 подвергался критике за:
- Излишнюю сложность: отказ от простых элементов (например,
bиi) затруднял миграцию с HTML. - Отсутствие обратной совместимости: веб-сайты, написанные на XHTML 2.0, не могли быть открыты в старых браузерах.
- Нереалистичные требования: требование строгого XML-синтаксиса делало разработку более трудоёмкой, особенно для динамических страниц, генерируемых серверными скриптами.
¶Интересные факты
- Последняя рабочая черновик XHTML 2.0 была опубликована 26 июля 2006 года. После этого рабочая группа выпустила несколько неофициальных обновлений, но официального релиза не последовало.
- В 2007 году W3C объявил, что XHTML 2.0 не будет развиваться как отдельный стандарт, а вместо этого будет интегрирован в HTML5.
- Некоторые элементы XHTML 2.0, такие как
hс атрибутомlevel, были предложены в черновиках HTML5, но не вошли в финальную версию.
¶Источники
- W3C. «XHTML 2.0 Working Draft» (2006). — Официальный документ рабочей группы.
- W3C. «XHTML 2.0: Why It Failed» (2009). — Анализ причин прекращения разработки.
- WHATWG. «HTML5: A Vocabulary and Associated APIs for HTML and XHTML» (2014). — Спецификация HTML5.
- Бергерс, А. «The Evolution of the Web: From HTML to XHTML to HTML5» (2010). — Книга по истории веб-стандартов.
- Статья «XHTML 2.0» в Википедии (русскоязычная версия). — Обзорная информация.