В то время как и HTML V5, и XHTML V2 стремятся улучшить существующие версии, подходы, используемые разработчиками для этих улучшений, сильно различаются. А из различия в философии вытекает различие в результатах. Впервые за многие годы направление, в котором будут развиваться будущие версии браузеров, неясно. Давайте приоткроем более масштабную картину, стоящую за особенностями этих двух стандартов.
Для создания Web-страниц большинство людей используют HTML V4 и XHTML V1. Относительно немногие энтузиасты HTML понимают принципы семантического HTML, проверки HTML-структур, и улучшения возможностей доступа к документам. Высококачественный HTML-документ является результатом многих компромиссов, дизайнерских находок и обсуждений. Несмотря на всю критику, не существует никакой альтернативы HTML, хотя бы приблизительно столь же универсальной. Большинство пользователей приспосабливаются к стандарту, как он есть, даже если бы обновлений существующей версии больше не было.
Однако, как и у любого другого стандарта, у HTML будут преемники. Даже сейчас специалисты думают о следующей версии HTML, которая бы решила все известные проблемы текущей версии. И подобно любой группе людей, эти специалисты расходятся во мнениях по поводу будущего направления этой работы.
Первое предложение для новой версии HTML пришло от рабочей группы, созданной консорциумом W3C. Идея этой группы концентрировалась на XHTML V2 — стандарте, который продолжал предыдущее развитие XHTML в сторону более строгой версии и возвращался к философии дизайна раннихверсий HTML.
Некоторые известные специалисты, не входящие в W3C — поставщики браузеров, Web-разработчики, независимые авторы и другие заинтересованные стороны — не согласились с направлением XHTML V2. В 2004 году они организовали независимую рабочую группу, чтобы предложить альтернативное направление для следующей версии HTML. Под флагом WHATWG (Web Hypertext Application Technology Working Group), эта группа объединила предложения для HTML V5 и Web Forms V2.
После нескольких лет появился рабочий набросок — ясное описание альтернативного направления для HTML. В апреле 2007 года W3C голосовал за предложение принять HTML V5 к рассмотрению, не принимая его в качестве официальной рекомендации (пока). Большинство проголосовало "за". В результате возникла интересная ситуация: W3C работает над двумя конкурирующими преемниками HTML и XHTML. Теоретически, оба предложения имеют право на существование. Практически, чтобы все основные браузеры поддерживали оба стандарта, необходимо преодолеть множество препятствий.
Это были сухие факты, приведшие к нынешней ситуации. Реальные расхождения между двумя предложениями окружены более интересными дебатами. В данной статье автор описывает суть каждого предложения "с высоты птичьего полета", а затем рассматривает подробности каждой философии.
Часто используемые сокращения:
* CSS: Cascading Style Sheets - Каскадные Таблицы Стилей
* HTML: Hypertext Markup Language - Язык Разметки Гипертескта
* W3C: World Wide Web Consortium - Консорциум Всемирной Сети
* XHTML: Extensible Hypertext Markup Language - Расширяемый Язык Разметки Гипертескта
Краткая история XHTML:
Прежде чем вы сможете понять философию, стоящую за XHTML V2, вам потребуется узнать немного истории. В начале 1990-х годов первая версия HTML основывалась на Стандартном Обобщенном Языке Разметки (Standard Generalized Markup Language - SGML). Главным ее отличием была функция гиперссылки — ключевое основание и фактор, обусловивший успех Всемирной Паутины. Подобно SGML, HTML позволял авторам описать структуру документа, отделяя заголовки от параграфов, упорядоченных и неупорядоченных списков. Вид документа на экране зависел от браузера.
С ростом популярности Web пользователи HTML стали нуждаться в контроле над внешним видом своих страниц. Поставщики браузеров добавили новые функции в HTML V2 и V3. Web-страницы выродились до малодоступных, сложных структур из вложенных таблиц, использовавшихся в качестве основного средства контроля над планировкой страницы. Оставшийся документ был наполнен тэгами шрифтов и объявлениями цвета. Структуру исходных документов уже невозможно было узнать.
По замыслу, HTML V4 должен был устранить этот хаос, так как он выводил логику представления в CSS и вводил слои (DIV) для расширения возможностей компоновки содержимого. Это означало сдвиг парадигмы по сравнению с HTML V3. Для облегчения миграции промежуточная версия HTML V4 поддерживала старые логические структуры HTML V3. Полная версия предполагала полное разделение содержимого и представления для продвинутых пользователей HTML.
Первые сайты на HTML V4 восприняли элементы DIV как новый священный Грааль и использовали их почти для каждого элемента на странице, который нуждался в малейшем украшении, включая (но не ограничиваясь) заголовки страниц. Атрибуты стиля в HTML были популярным местом для описания деталей представления. В конце концов, избыточные таблицы были удалены со страниц. Однако содержимое и логика представления были все еще перемешаны. Обязательные CSS-файлы состояли всего из нескольких строк.
Позже, некоторые известные Web-разработчики начали выдвигать более элегантный подход к HTML V4 с использованием таблиц стилей. В современных браузерах свойства CSS не ограничены элементами DIV. Вы можете задавать стиль для всех элементов HTML как вам угодно. Многие сетевые журналы заговорили о семантическом HTML. Не отказываясь полностью от элемента DIV, аавторы стараются использовать те элементы HTML, которые наилучшим образом описывают содержимое. Например, меню навигации, которое вы можете видеть на большинстве Web-сайтов, лучше всего описываются неупорядоченным списком. Кроме того, вместо использования класса под названием bigHeader к элементу параграфа, они предпочитают элемент H1, используя CSS, чтобы изменить его представление в соответствии с собственными потребностями.
Между тем, W3C предложил XHTML V1 в качестве эквивалента HTML V4, переписанного в виде правильно сформированного и валидного XML. Для пользователей XML это упрощало задачу преобразования XML-содержимого в Web-страницы и проверки результатов с помощью существующих валидаторов. XHTML V1.1 является попыткой разнести эти вопросы в отдельные модули. Модульный подход упрощает повторное использование частей стандарта для различных целей и для расширения стандартов новыми функциями.
Пользователи XHTML V1.1 разделяют содержимое и представление даже в большей степени, чем пользователи HTML V4. Однако, как и всегда, некоторые практические проблемы могут быть решены только использованием специальных приемчиков в CSS. Например, структуры меню, описанные как неупорядоченные списки, обычно состоят из симпатичных картинок. Однако картинки нелегко прочитать устройствам, синтезирующим речь для людей с ограниченным зрением. Также, текстовые браузеры, такие как Lynx, не отображают рисунки правильно. Специальный прием в CSS позволяет вам спрятать текст и показать в браузере рисунок. Но если содержимое меню различается от страницы к странице, то задавать это содержимое в CSS - не самый элегантный способ.
Философия XHTML V2:
Первым и важнейшим принципом в философии дизайна XHTML V2 является дальнейшее разделение содержимого и представления, углубляющее оставшуюся трещину между HTML V4 и XHTML V1. Например, первоначальный вариант поддерживал задание рисунка для каждого элемента в неупорядоченном списке. Старый тег IMG SRC заменяется возможностью задать SRC для любого элемента. С этой переменой CSS освободились от содержимого, и теперь различные устройства могут легко показывать текст вместо рисунка.
Однако, CSS - это не единственная проблема для Web-разработчиков. Для организации взаимодействия серверов с формами HTML Forms тратится множество времени и пишется множество строк кода JavaScript™. Формы HTML ограничены одномерными парами ключ-значение. Написание кода JavaScript требует значительных усилий, которые становятся бесполезными в альтернативных интерфейсах, типа синтезаторов речи.
В рамках модульного подхода XHTML V2 заменяет формы HTML Forms модулем XForms, обеспечивая решение распространенной проблемы использованием надлежащих моделей приложений. В XForms существует возможность задать интерактивную логику, правила проверки и вычисления без единой строчки кода. Также, эта техника использует богатые XML-структуры вместо пар ключ-значение, делая возможными вложенные формы и повторяющиеся элементы. С новым предложенным механизмом теперь и синтезаторы речи получают возможность лучше переводить в речь содержимое приложения.
Помимо XForms, некоторые другие вопросы выведены из определения XHTML в автономные спецификации, которые могут быть повторно использованы для других целей, например, XML Events, XFrames и Ruby (для азиатских языков).
Вместе с отделением уровня представления, программируемость также отделена от стандарта. Атрибуты взаимодействия, такие как onClick, заменены модулем XML Events. Так как спецификация XML Events изначально разработана именно для этих целей, она предоставляет более мощный набор инструментов для управления взаимодействием с пользователем.
Суммируя нововведения, появившиеся в XHTML V2, можно сказать, что главной идеей является разделение проблем. Каждая проблема теперь становится не второстепенной функцией HTML, а главнейшей задачей новой спецификации. В результате, новые спецификации лучше оптимизированы в интересах рассматриваемой задачи. Однако, разделение проблем - это скорее философская, нежели практическая цель. Грамотный разработчик, имеющий технические навыки надлежащего использования полного набора инструментов, может достичь действенных результатов. Сомнительно, могут ли средние пользователи текущих версий HTML создавать XHTML-документы должного качества.
Похоже, что стандарт XHTML V2 не рассчитан на средних авторов HTML-документов. Но в руках хорошего разработчика он ведет к очень элегантным решениям, полностью оптимизированным под высокую доступность.
Философия HTML V5:
Рабочая группа WHATWG придерживается гораздо более практичного подхода в разработке HTML V5. Вместо погони за абстрактным идеалом, таким как разделение проблем, группа начала документировать текущее фактическое поведение важнейших браузеров, которое отличается от спецификации W3C. Основываясь на этом анализе, группа исследовала, как HTML фактически используется на практике.
Используя данную информацию, группа начала предлагать функции, которые могли бы упростить жизнь средних Web-разработчиков. Хотя HTML V5 уважает своих предшественников из предыдущих версий HTML, он не ставит своей главной целью всемерное упрощение. Например, первичная цель моделирования документов, легко замещается оптимизацией под Web-приложения.
Разработка Web-приложений значительно упрощается языком моделирования, который имеет изначальную поддержку для этих целей. Например, HTML V5 имеет изначальную поддержку для интерактивных компонентов, таких как сетки данных, меню и панели инструментов. Использование описательных элементов HTML с заданным поведением по умолчанию позволяет сохранить много времени, которое было бы потрачено на написание JavaScript-кода, воспроизводящего аналогичное поведение с помощью универсальных элементов DIV.
Спецификация HTML V5 не ограничена элементами и атрибутами HTML. Она задает JavaScript API для конкретных целей, таких как редактирование документов и перетаскивание элементов. Данный подход диаметрально противоположен разделению проблем. Он упрощает API для Web-разработчиков, однако существенно увеличивает размер спецификации.
HTML V5 больше похож на HTML V4, чем XHTML V2 на XHTML V1. Миграция проходит ровнее и для опытного разработчика HTML V4 проще привыкнуть к новой версии. Новые функции следуют похожей логике. Конкретные атрибуты событий для конкретных элементов позволяют редакторам HTML обеспечивать более подходящее завершение текста.
Современные Web-приложения для взаимодействия с сервером используют Asynchronous JavaScript + XML (Ajax). HTML V5 признает важность взаимодействия с сервером и задает несколько способов сетевого сообщения, диспетчеризации событий, полученных от сервера, и отсылки сообщений в документы на других доменах, не вызывая проблем с вопросами безопасности.
Основой философии HTML V5 является расширение HTML V4 практическими функциями, которые необходимы Web-разработчикам среднего уровня. HTML V5 упрощает технологию, так как он продолжает подход, знакомый с HTML V4. Для устранения разрывов с HTML V4, HTML V5 предпочитает минималистский подход, избегая масштабных изменений.
Практическая польза новых стандартов:
XHTML V2 и связанные с ним модули официально поддерживаются W3C, а связанные модули становятся ключевыми компонентами для других XML-спецификаций, которые поддерживает W3C. К сожалению, официальное утверждение W3C не гарантирует поддержку основными Web-браузерами. Вопрос не в поддержке простого, унифицированного XHTML V2: современные браузеры уже поддерживают многие его функции. Правильное использование XHTML V2 зависит от доступности связанных модулей. На время написания статьи не ясно, добавит ли Microsoft поддержку XML Events и XForms в Windows® Internet Explorer®. Плагин XForms для Mozilla, включающий XML Events, уже несколько лет находится на стадии разработки. Этот плагин полностью подтверждает как богатые возможности технологии, так и трудности в ее реализации.
Спецификация HTML V5 была написана с использованием активной обратной связи с поставщиками браузеров и учитывает важность вопросов реализации. Однако команда сомневается в фактическом утверждении стандарта W3C. FAQ даже не пытается дать серьезный ответ по ожидаемой дате утверждения. Несмотря на W3C, поставщики браузеров могут решить все равно реализовать неофициальный стандарт HTML V5. Это будет уже не первый случай, когда поставщики браузеров опережают официальные рекомендации.
Конкурирующие стандарты:
На данный момент ни HTML V5, ни XHTML V2 еще не являются официальными рекомендациями. Некоторые детали в будущем могут поменяться. Что не поменяется - так это выбранные ими направления, каждое из которых решает различный набор проблем в существующих стандартах. Будет интересно посмотреть, как будущие браузеры будут добавлять поддержку каждого нового стандарта. Современные браузеры поддерживают и HTML V4, и XHTML V1. Аналогично, будущие браузеры могут поддерживать и HTMLV5, и XHTML V2. Эти стандарты будут предназначены для различных аудиторий.
Если вам больше нравится XHTML V1.1, чем HTML V4, и вы ищете элегантный подход к созданию документов, доступных с множества устройств, скорее всего вы оцените преимущества XHTML V2. Если вы используете XHTML V1 только по причине его совместимости с XML, но предпочитаете новые функции HTML V5, вы, возможно, оцените XHTML V5 (т.к. HTML V5 переписан как диалект XML).
HTML V5 наиболее высоко оценивается разработчиками интерактивных Web-приложений, использующих HTML V4. Так же эта альтернатива должна быть удобнее для сайтов, которые поддерживаются с использованием редакторов документов типа "Что видишь, то и получаешь". Однако при сложившихся обстоятельствах, скорее всего стандарты HTML V4 и XHTML V1 еще останутся на долгое время.