Работая в веб индустрии, мы привыкли к тому, что технологии не стоят на месте. HTML 4.01 рекомендован в 1999, XHTML 1.0 рекомендован в 2000, и пересмотрен в 2002. HTML 4.01 хорошая основа для разработок, но кое-что в нем можно сделать лучше.

Многое изменилось в способах использования и восприятии веб в последние восемь лет, пришло понимание недочетов HTML 4.01 и возможностей его улучшения. На очереди следующее поколение HTML, и на него стоит обратить внимание, ведь его появлении повлияет на каждого занятого в веб индустрии.

Кандидаты

W3C долго вело работы над XHTML2, технологией которая предназначалась для замены HTML 4.01 и XHTML 1.0, она подразумевает много изменений и улучшений. XHTML2 как и XHTML 1.0 это XML, но он больше не поддерживает обратной совместимости с HTML 4.01. Этот совершенно новый язык, делает разметку очень чистой, но принадлежит к совершенно другому пространству имен.

HTML5 (на который иногда ссылаются как на Web Applications 1.0) это технология разработанная WHATWG, открытым сообществом которое организовали три из четырех крупнейших производителей браузеров: Mozilla, Opera, и Apple. HTML5 не так сильно отличается от HTML 4.01 или XHTML 1.0, это скорее эволюция чем кардинальное обновление. Он обеспечивает обратную совместимость с HTML 4.01, добавляя к нему новую функциональность, и в условиях различного поведения браузеров, старается найти лучшее решение которое будет принято большинством участников веб. Добавлены некоторые до боли необходимые элементы, такие как проверка корректности данных форм, интерактивные элементы, и локальное хранилище данных.

HTML в современном Веб

Несмотря на то, что HTML 4.01 основан на формате документов SGML, с учетом этого к нему подходят только валидаторы. Браузеры, интерпретируют HTML как набор тегов, и стараются отобразить как можно лучше, даже совершенно некорректный документ. Очень маленькая часть страниц в веб являются правильными HTML 4.01 документами, большинство из них содержат ошибки или неправильно оформлены, но браузеры должны обрабатывать их иначе пользователь может сменить браузер на тот который поддерживает его любимый сайт.

Обработка документа в виде набора тегов предполагает коррекцию ошибок, но все браузеры делают это немного по-своему. Каждый браузер старается корректировать ошибки так же, как и его более крупные конкуренты, но даже если некорректные страницы отображаются одинаково различными браузерами, это еще не значит, что коррекция ошибок происходит одним и тем же образом, обычно это выполняется наиболее удобным для каждого способом. HTML5 пытается положить этому конец, не только определяя как должны обрабатываться корректные документы, он также определяя как должен обрабатываться документ если он содержит ошибки, неправильно оформлен, или поврежден, благодаря этому производители браузеров смогут сделать свои продукты полностью совместимыми.

XML в современном Веб

Подавляющее большинство XHTML сайтов, используют медиа тип «text/html» — другими словами, они обрабатывается браузерами как набор тегов, а не как XML.

Среди причин такого поведения драконовские правила обработки ошибок в XML. Парсинг XML документа прекращается при первой же ошибке, что делает невозможным отображение страницы. Если в XML документе допущена ошибка, отображается сообщение об ошибке, а не контент. Существуют страницы, для которых нельзя гарантировать соответствие правилам XML и корректность работы с различными кодировками, например, если пользователи имеют возможность оставлять комментарии, создавать посты, или если часть контента приходит извне в виде рекламных вставок, всегда есть возможность ошибки. Обработка документа в виде набора тегов позволяет браузерам отображать страницу, несмотря на наличие ошибок, а парсинг по правилам XML может сделать вашу страницу абсолютно бесполезной из-за одной ошибки, независимо от того насколько она серьезна.

Одно из самых больших препятствий на пути использования XML документов в том, что Internet Explorer не поддерживает медиа тип application/xhtml+xml рекомендованный для XHTML 1.0.

XHTML 1.0 позволяет подавать документы как text/html, и соответствует правилам обратной совместимости с HTML документами Appendix C, но в таком случае он обрабатывается как набор тегов, и по сути не является XML документом. Возможность подачи документов как набора тегов для браузеров не поддерживающих XML существует, если трансформировать их с помощью XSLT, и учитывать различия в обработке кодировок символов.

То, что Internet Explorer не поддерживает XHTML в качестве XML, поисковики не индексирую XHTML как XML документы, очень немногие средства разработки позволяют работать с XHTML как с XML, единицы CMS поддерживают XML корректно, редкие рекламные сервисы заботятся о поддержке XML, не способствует распространению XML в веб.

Конечно, есть MathML, SVG, или другие XML приложения, которые могут быть внедрены в XHTML, но такое использование XHTML как XML имеет очень ограниченную аудиторию.

XHTML2 это XML

И в этом самая большая проблема. К тому же еще одна сложность в том, что XHTML2 — это не HTML 4.01 переформулированный в XML, это другой хотя и похожий язык, в котором добавлены, удалены или модифицированы многие элементы, во многом эти изменения правильные. Не во всем XHTML соответствует ожиданиям разработчиков, например не устранены недостатки HTML 4.01 и XHTML 1.0 в области интерактивности, локального хранилища данных, или взаимодействия скриптов.

На данный момент спецификация XHTML2 находится в стадии разработки, и может быть в таком состоянии еще несколько лет, авторы считают, что она еще не готова к применению, и не имеет поддержки на очень важных направлениях: браузеры, поисковики, CMS, и средства разработки. Ни один из основных разработчиков браузеров не поддержал XHTML2, представитель Apple Масьеж Сташовик пошел в этом направлении дальше и заявил:

Мы отказались от участия в разработке XHTML2, потому что думаем, что это не достаточно подходящая для веб технология.

Web Applications 1.0 это больше чем HTML5

Спецификация Web Applications 1.0 не только вносит изменения в HTML, она содержит обновленную версию XHTML 1.0 (под неудачным и приводящим к недоразумениям названием XHTML5), и обновленный DOM5 HTML. В отличие от HTML 4.01 который формально основан на SGML, HTML5 учитывает то, что браузеры пытаются исправлять ошибки в наборе тегов, и предлагает новую не основанную на SGML модель парсинга включающую коррекцию ошибок. Для XHTML5 используются правила парсинга XML, а не HTML5.

WA1 определяет несколько API, которые стали стандартами де факто, и добавляет еще один новый. XHTML2 значительно улучшает семантику XHTML, WA1 вносит более скромные изменения в семантику документов, но улучшает функциональность веб как платформы для создания приложений, добавляя такие возможности как хранение состояния документа в истории браузера, локальное хранилище данных, оффлайновый просмотр, drag&drop, копирование и вставка, undo&redo, сообщения между документами и многое другое.

В отличие от XHTML2, лишенного поддержки со стороны производителей браузеров, HTML5 поддерживается всеми основными производителями кроме Microsoft. Спецификация еще не закончена, и различные ее части находятся на разном уровне готовности, из них уже используются в браузерах, например элемент canvas поддерживается Mozilla, Safari, и Opera, и использовался во многих демонстрациях расширенной функциональности.

W3C и HTML

В W3C создана новая рабочая группа по HTML, независимая от рабочей группы по XHTML2. Это открытая рабочая группа, в которую можно вступить с помощью механизма приглашенных экспертов. Возглавили новую группу Крис Вилсон, архитектор из команды Internet Explorer, и Ден Коннолли из W3C.

Практическое применение

XHTML2

Поддержка браузеров всегда была очень важной для веб разработчиков. Internet Explorer не имеет соответствующей поддержки XHTML, и это серьезная проблема для XHTML подаваемого как XML. Даже если проблема с Internet Explorer будет решена, обработка кодировок символов, внешний контент, и работа с содержанием как с текстом вместо гарантированно правильного XML, делает использование XHTML достаточно сложным. Переделка HTML 4.01 и XHTML 1.0 документов в XHTML2 может быть непростой задачей, требующей изменений в структуре документа. Отсутствует поддержка стандарта со стороны основных производителей браузеров.

HTML5

Очень просто изменить тип документа с HTML 4.01 на HTML5, для этого достаточно исправить DOCTYPE. Если документ не использует новых элементов или API, браузер просто использует для него парсер набора тегов. Для многих современных CMS и средств разработки, переход на HTML5 с HTML 4.01 будет достаточно простым, а новые возможно HTML5 могут быть добавлено без особых затруднений. В дополнение ко всему многие новые возможности HTML5 могут эмулироваться с помощью JavaScript, для браузеров которые их не поддерживают, что будет полезно для постепенного перехода от HTML 4.01 к HTML5.

Вывод

Пока XHTML2 является семантически улучшенным XHTML 1.0, он не выглядит достаточно привлекательным для веб разработчиков, особенно учитывая, что Internet Explorer не поддерживает в полной мере даже XHTML 1.0. Пройдет еще несколько лет, прежде чем выйдет новая версия Internet Explorer, которая вполне возможно будет поддерживать XHTML2, а может быть даже она не будет его поддерживать.

С другой стороны многие части HTML5 уже внедряются в браузеры, если в будущем Microsoft примет активное участие в разработке HTML5, вполне возможно многие полезные элементы этого стандарта будут поддерживаться всеми браузерами в ближайшем будущем. Тот факт, что некоторые части HTML5, уже готовы к внедрению, пока другие находятся в разработке, делает эту технологию пригодной к частичному использованию в браузерах, с переходом на полную поддержку по мере развития стандарта.

За HTML5 будущее веб, я рекомендую обратить на него внимание уже сейчас.