Pull to refresh

XHTML 2 против HTML 5

Reading time10 min
Views5.1K
Original author: Mike Malone

Вернемся в прошлое на десять с небольшим лет, в 18 декабря 1997. Internet Explorer 4 был выпущен 3 месяца назад, The Mozilla Foundation еще не сформирована и до выхода Firefox еще далеко. Здесь нет XMLHttpRequest, нет даже XML. В этот день, больше десятилетия назад, HTML 4.0 был опубликован как рекомендация W3C.



Он и стал базой, на основе которой были разработаны современные web-стандарты. Конечно, были и усовершенствования. В 2000 году как официальная рекомендация был принят XHTML 1.0, а CSS 2 был реализован большинством производителей браузеров. Но основа Web – костяк, на котором построен каждый сайт, от простых визиток до комплексных приложений – по существу осталась неизменной.



По крайней мере, до сегодняшнего дня. После долгого затишья, кажется, уклад вещей в W3C меняется – в разработке находятся две конкурирующие спецификации, призванные заменить устаревшие стандарты HTML 4.x и XHTML 1.x. Обе инициативы работают под эгидой W3C (пусть так было и не всегда) и обе, по моему мнению, значительно превосходят текущую подборку языков web-разметки. Это HTML 5 и XHTML 2.0. И если вы читаете эту статью, скорее всего, в течение нескольких следующих лет вам придется работать с одной (или обеими) из них.




Немного истории



Работа над XHTML 2.0 началась вскоре после публикации XHTML 1.1 в качестве рекомендации в 2001 году. Первый черновой вариант XHTML 2.0 был опубликован в 2002 г., но значительная часть документа была в ненормативном и незавершенном состоянии (а кое-что осталось до сих пор). К 2004 году у некоторых видных деятелей отрасли – разработчиков браузеров, дизайнеров, web-разработчиков и владельцев контента – возросло недовольство дирекцией рабочей группы XHTML 2.0. Ссылаясь на закрытый характер работы W3C, они решили основать и разрабатывать свой собственный стандарт.



Итак, в 2004 г. была сформирована независимая коалиция, названная WHATWG (Web Hypertext Application Technology Working Group). Группа начала работу над спецификацией, названной Web Applications 1.0. В апреле 2007 года W3C проголосовало в пользу предложения рассмотреть спецификацию группы. Члены WHATWG начали работать в рамках W3C как группа разработчиков HTML и продолжили работу над своим проектом, который был переименован в HTML 5. Таким образом, черновик HTML 5 должен однажды стать рекомендацией W3C наряду с XHTML 2.0 (хотя этот день еще очень далек, и W3C уже пропустил несколько ключевых этапов проекта).



Обзор XHTML 2.0



XHTML 2.0 полностью основан на XML, разработчики отказались от наследства SGML и синтаксических особенностей, присутствующих в текущей web-разметке. Он позиционируется как «язык общего назначения», с минимальным функционалом по умолчанию, который легко расширить, используя CSS или другие технологии (XForms, XML Events, и т.д.). Этот модульный механизм позволяет группе разработчиков XHTML 2 сосредоточить свое внимание на общей разметке документа, пока остальные разрабатывают механизмы представления, интерактивности, построения документа и т.д.



Первым приоритетом для рабочей группы XHTML 2 является дальнейшее отделение контента и структуры документа от его представления. Другими целями являются повышенное удобство и доступность, улучшенную интернационализация, большая независимость от устройств, меньшее количество скриптов и интеграция с Semantic Web. Разработчики были меньше заинтересованы в обратной совместимости, чем их предшественники (и группа разработчиков HTML), что привело к удалению некоторого синтаксического багажа, существовавшего в ранних воплощениях HTML. Результатом стал более чистый и сжатый язык, исправляющий многие старые недочеты Web-разметки.



Обзор HTML 5



В то время как концепция XHTML 2.0 предназначена быть революционной, группа разработчиков HTML выбирает прагматичный подход и создает HTML 5, как эволюционировавшую технологию. Получается, что HTML 5 является шагом вперед, но по-прежнему большей частью совместим с текущими стандартами HTML 4/XHTML 1. Однако HTML 5 предлагает множество изменений и расширений для HTML 4/XHTML 1, указывающих на многие недочеты своих предыдущих спецификаций.



В спецификации HTML 5 речь идет об отходе HTML от разметки документа и внедрении его в языки для создания web-приложений. С этой целью основное внимание концентрируется на создании более надежного и функционального клиентского окружения, предоставляющего различные API для разработки web-приложений. Среди прочего, спецификация предусматривает то, что реализации должны предоставить на стороне клиента постоянные хранилища данных (как вида ключ/значение, так и SQL-базы данных), API для воспроизведения аудио и видео, 2D-рисования посредством элемента canvas, обмен сообщениями между документами, отправляемые сервером события и сетевые API.



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



Схожие черты



Никого не удивит, что обе группы разработчиков предлагают ряд сходных возможностей. Они указывают на известные «больные места» web-разработки и будут желанным дополнением в новом поколении языков разметки.



Удаление элементов представления



Ряд элементов будут удалены в XHTML 2 и HTML 5, так как они отвечают только за представление документа. Считается, что представление должно управляться посредством таблиц стилей.



Документы XHTML 2 и HTML 5 не могут содержать следующих элементов: basefont, big, font, s, strike, tt и u. XHTML 2.0 также удаляет элементы small, b, i и hr, а HTML 5 переопределяет их другим значением (отвечающим не за представление). В XHTML 2.0 элемент hr заменяется элементом separator дабы уменьшить путаницу (элемент hr предназначен для создания горизонтальных разделителей, но вовсе не обязательно используется для этого).



Списки навигации



Списки навигации были введены как в XHTML 2.0, так и HTML 5. В XHTML 2.0 они определяются новым элементом nl (Navigation List). Сам список должен начинаться дочерним элементом label, определяющим заголовок списка. После него может идти один или несколько элементов li, используемых для разметки ссылок. Также новинкой в XHTML 2.0 является возможность создания ссылки с любого элемента, используя для него атрибут href. Комбинация этих методов позволяет создать простую, легкую разметку меню:

<nl>
    <label>Category</label>
    <li href="/">All</li>
    <li href="/news">News</li>
    <li href="/videos">Videos</li>
    <li href="/images">Images</li>
</nl>


В HTML 5 для этих целей был введен элемент nav. К сожалению, nav не является списочным элементом, поэтому не может содержать дочерних элементов li для логической организации ссылок (возможно, будет разработана новая идиома). И так как для создания ссылок в HTML 5 остаются необходимыми элементы a, разметка навигации не очень элегантна:

<nav>
    <h1>Category</h1>
    <ul>
        <li><a href="/">All</a></li>
        <li><a href="/news">News</a></li>
        <li><a href="/videos">Videos</a></li>
        <li><a href="/images">Images</a></li>
    </ul>
</nav>




Улучшенные формы



Обе спецификации содержат новые возможности для создания более последовательных форм с применением меньшего количества скриптов. В XHTML 2.0 стандарт HTML-форм был полностью удален в пользу более обширного стандарта XForms. Группа разработчиков XHTML 2.0 не контролирует эту технологию, а только ссылается на нее в спецификации. Для упрощения повторного использования в XForms собираемые данные отделены от разметки элементов управления. Это мощный язык, но его полное описание выходит за рамки этой статьи. Достаточно сказать, что даже малые знания этой технологии значительно повысят скорость разработки.



HTML 5 сохраняет привычные HTML-формы, но добавляет некоторые типы данных для упрощения разработки и повышения удобства для пользователя. Добавлено несколько новых типов элемента input для email-адресов, URL, даты и времени и числовых данных. Это позволит браузерам создавать более удобный пользовательский интерфейс (например, диалоги для выбора даты и времени), интегрироваться с другими приложениями (выбор адресов из Outlook или Адресной Книги, например) и проверять введенные пользователем данные перед отправкой на сервер (сокращение JavaScript-проверок на стороне клиента).



Семантическая разметка



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



В XHTML 2.0 метаданные могут быть внедрены при использовании нескольких новых атрибутов из Модуля Метаинформационных Атрибутов (Metainformation Attributes Module). В частности, новый глобальный атрибут role предназначен для описания значения данного элемента в контексте документа. Также используется технология «Внедрения структурированных данных в web-страницы» (Embedding Structured Data in Web Pages), для этого группа использует существующие стандарты, ссылаясь на RDF. Эта технология является чрезвычайно мощной, но также и сложной.



Группа разработчиков HTML выбрала подход, который очень поход на микроформаты – перегрузка атрибута class преопределенным набором классов, представляющих различные типы данных. На данный момент в спецификации имеется семь зарезервированных классов: copyright, error, example, issue, note, search и warning. Хотя такой метод может казаться не очень надежным, маловероятно, что в разных браузерах эти элементы будут отображаться по-разному. Имена классов достаточно конкретны, поэтому есть о чем побеспокоиться: элемент с классом copyright будет отображаться как авторские права, независимо от того, знал разработчик о зарезервированных классах или нет.



Только в HTML 5



Ниже описаны некоторые возможности HTML 5, не имеющие аналогов в XHTML 2.0



API для web-приложений



HTML 5 вводит ряд API, значительно улучшающих оболочку для разработки на стороне клиента. Они делают из HTML 5 стек технологий для web-приложений, а не просто язык для разметки документов. Стоит отметить, что детали этих API сейчас проработаны группой разработчиков Web API (Web API working group), поэтому могут быть приняты как с остальной частью HTML 5, так и самостоятельно. Новыми API и соответствующими элементами являются:

  • API 2D-рисования посредством элемента canvas
  • API воспроизведения аудио и видео, поддерживающие возможность предоставлять браузеру несколько форматов, которые могут быть использованы в новых элементах audio и video.
  • Постоянные хранилища данных на стороне клиента, как вида ключ/значение, так и SQL-базы данных.
  • Оффлайн-API для web-приложений (схожее с Google Gears).
  • API, позволяющее web-приложениям сопоставлять себя с различными протоколов или MIME-типами.
  • API редактирования, которое может быть использовано в комбинации с глобальным атрибутом contenteditable.
  • Drag&Drop API, которое может быть использовано в комбинации с атрибутом draggable
  • Сетевое API, позволяющее web-приложениям использовать протокол TCP.
  • API, отражающее историю переходов браузера, позволяющее web-приложениям добавлять в нее записи, что позволит адекватно работать при нажатии кнопки «Назад» браузера.
  • API обмена сообщениями меду документами.
  • Отправляемые сервером события в комбинации с новым элементом event-source.




Новые элементы



В HTML 5 вводится ряд новых возможностей, которых нет в XHTML 2.0:

  • figure представляет изображение или график с заголовком. Вложенный элемент legend отображает заголовок, а обычный элемент img используется для изображения
  • m отображает текст, выделенный каким-либо образом. Может быть использован для подсветки слов при выдаче результатов поиска, к примеру.
  • time отображает дату и время
  • meter отображает измерения или величины
  • datagrid отображает интерактивное дерево данных или табличные данные
  • command отображает команду, которую пользователь может выполнить
  • event-source используется для «ловли» посылаемых сервером событий
  • output отображает определенный тип вывода, такой как результат вычисления скрипта
  • progress – отображает выполнение процесса, такого, как загрузка или выполнение серии трудоемких вычислений.


В дополнение, некоторые новые элементы помогают семантично разметить части документа. Их названия говорят сами за себя: section, article, header, footer и aside. А новый элемент dialog предназначен для отображения сообщений с использованием дочерних элементов: dt — для имени отправителя, а dd — для текста сообщения.



Отслеживание пользователей оповещением (pinging) URI



Новый атрибут ping может использоваться в элементах a и area для отслеживания пользователей. Этот атрибут позволяет указать разделенный пробелами список URI, которые должны быть оповещены при переходе по ссылке, это позволяет уйти от использования переадресации или JavaScript’ов.



Только в XHTML 2.0



Новые возможности, которые доступны только в XHTML 2.0



Любой элемент может быть ссылкой



В XHTML 2.0 атрибут href можно указать в любом элементе, тем самым превратив его в ссылку. С этим изменением элемент a больше не является необходимым, но он сохраняется.



Любой элемент может быть изображением (или другим ресурсом)



В XHML 2.0 элемент img был удален. Но не волнуйтесь – теперь любой элемент может быть изображением. Идея в том, что все изображения имеют длинное описание, которое эквивалентно самому изображению. Добавлением атрибута src к любому элементу мы говорим браузеру загрузить указанный ресурс и разместить его на месте элемента. Если по какой-либо причине ресурс недоступен, будет отображено содержание элемента. Это позволяет разработчикам предоставлять несколько эквивалентных ресурсов, используя разные форматы файлов и представления, путем вложения элементов друг в друга.



Строки заменяют br



Почтенный элемент br, использующийся для вставки перехода на новую строку, также был удален в XHTML 2.0. Для его замены введен новый элемент l. Он представляет строку текста, и работает как span, после которого стоит br по правилам текущей разметки.



Новая структура заголовков



Новые элементы h и section были введены для замены пронумерованных элементов h1h6. Цель этого – стремление передать иерархическую структуру документа. Текущие нумерованные заголовки линейны, не вкладываются друг в друга. При вложении элементов section и h в родительские section структура документа будет ясна.



Новые элементы



Группа разработчиков XHTML 2 сосредотачивала внимание на создании более общего, упрощенного языка. В виду этого, они воздержались от добавления множества специализированных элементов для представления различных видов контента. Они утверждают, что новый атрибут role предоставляет механизм для внедрения богатых метаданных, которые делают ненужными специализированные элементы. Тем не менее, было включено несколько новых элементов:

  • blockcode представляет компьютерный код
  • di представляет группу связанных терминов и определений в dl (definition list). Это удобно для слов с различными значениями или различным произношением.
  • handler представляет скриптовый обработчик событий с атрибутом type, который указывает язык обработчика. Если браузер его не понимает, обрабатываются потомки элемента-обработчика (иначе они игнорируются). Таким образом, обработчики могут вкладываться друг в друга для предоставления реализации на нескольких языках.




Заключение



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



Несмотря на позднее начало, группа разработчиков HTML 5 имеет большую индустриальную поддержку и прошла больший путь в рекомендационном процессе. Их цель состоит в том, чтобы иметь полную спецификацию, с множеством взаимодействующих реализаций не позднее 2010 года (как я уже говорил, несмотря на это, консорциум W3C уже пропустил несколько этапов в процессе утверждения). С индустриальной поддержкой большинства главных разработчиков браузеров (единственным исключением является Microsoft) эти спецификации, вероятнее всего, будут внедряться быстро и последовательно, как только они достигнут стабильного состояния.



Всеобщее желание состоит в том, чтобы избежать очередной войны стандартов. К счастью, так как оба языка поддерживают пространства имен XML (или, в случае HTML-сериализации в HTML 5 — переключение DOCTYPE), маловероятно, что мы увидим такую же зависимость отображения документа от браузера, какая наблюдалась в 90-ых. Если отмести в сторону войны стандартов, будущее web-разработки выглядит светлым. Эти новые возможности разметки и API предоставят хорошую оболочку для web-разработки, которая должна сократить разрыв между настольными и web-приложениями.






Оригинал: Mike Malone, XHTML 2 vs. HTML 5
Перевод: Helios



Tags:
Hubs:
+62
Comments95

Articles