XHTML2 против HTML5

Автор: Cake_Seller

Перевод статьи «XHTML 2 vs. HTML 5». Перевел Cake_Seller

Резюме: в статье описывается предыстория создания этих спецификаций, и проводиться их сравнение. Описываются отличия спецификаций от их предшественников, а также перспективы их развития.

Далее курсивом примечания переводчика.

Перенесемся на 10 лет назад, в 18 декабря 1997-го года. Три месяца назад был выпущен в свет Internet Explorer 4. Mozilla Foundation еще не была сформирована, а до публичного выпуска Firefox’а были еще годы. Не существовало XMLHttpRequest… не существовало даже XML. В этот день, более чем десятилетие назад, был опубликован HTML 4.0 в качестве рекомендации W3C.

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

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

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

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

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

Обзор XHTML 2.0

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

Главная задача рабочей группы XHTML2 - максимальное разделение содержимого и структуры документа от его представления. Остальные цели включают увеличение юзабилити и доступности, улучшение интернационализации, улучшение аппаратной независимости, уменьшение размеров документа и улучшенная интеграция с Семантическим Веб’ом. Рабочая группа меньше концентрировалась на обратной совместимости, чем их предшественники (и рабочая группа HTML), что позволило им откинуть некоторый синтаксический набор по сравнению с ранними воплощениями HTML. В результате получился более чистый, более сжатый язык, который исправляет многие неточности предыдущего языка разметки Веба.

Обзор HTML 5

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

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

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

Сходные особенности

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

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

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

Документы HTML 5 и XHTML 2.0 не могут содержать такие элементы: 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. Список навигации должен начинаться дочерним элементом 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. Рабочая группа XHTML2 не разрабатывала этот стандарт, но ссылается на него в спецификации XHTML 2.0. Чтобы способствовать повторному использованию, XForms разделяет собранные данные от разметки элементов управления формами. Это очень мощный и надежный язык, но его описание лежит за пределами этой статьи.

HTML 5 оставляет привычные HTML формы, но добавляет несколько новых типов данных для облегчения разработки и увеличения юзабилити. В HTML 5 представлено несколько новых типов элемента input для адресов электронной почты, URL’ов, даты, времени и числовых данных. Это позволит пользовательскому агенту предоставить более современный пользовательский интерфейс, более тесно взаимодействовать с другими приложениями (например, для вставки адреса из Outlook или из адресной книги) и проверять введенные данные перед отправкой на сервер (для замены проверки пользовательских данных с помощью яваскриптов).

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

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

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

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

Только в HTML 5

HTML 5 описывает несколько новых возможностей, не имеющих аналогов в XHTML 2.0.

Web Application API

HTML 5 представляет несколько API, которые радикально изменят клиентскую часть среды веб разработки. Эти API - это то, что определяет HTML 5 как часть технологического стека Веб Приложений, в противовес простого языка разметки документов. Следует отметить, что API разрабатывались рабочей группой WEB API, поэтому они могут быть приняты вместе с HTML 5, либо без него. Список новых API и подобных элементов:

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

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

В HTML 5 представлены некоторые новые элементы, которых нет в XHTML 2.0:

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

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

Отслеживание пользователей пингованием URI

Новый атрибут ping используется для элементов a и area для отслеживания пользователей. Элемент ping предпочтительнее использования редиректов или яваскриптов, т.к. этот элемент позволит вам задать разделенный пространством список URI который будет пинговаться когда пользователь перейдет по ссылке (Возможно этот абзац переведен не точно. Честно говоря, мне не совсем понятно, что это за атрибут ping и как он работает).

Только в XHTML 2.0

Описываются несколько новых возможностей, не имеющих аналогов в HTML 5.

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

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

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

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

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

Всеми уважаемый элемент br, используемый для переноса строки, также был вычеркнут из XHTML 2.0. На смену br пришел элемент l. l представляет строку текста и ведет себя как элемент span, за которым следует br.

Новое построение заголовков

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

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

Рабочая группа по разработке XHTML 2.0 была сфокусирована на создании более обобщенного и упрощенного языка разметки. Поэтому, они воздержались от добавления большого числа специализированных элементов, которые бы представляли разные типы содержимого. Они обосновали это тем, что новый атрибут role создает механизм позволяющий включить богатые метаданные, что исключает необходимость специальных элементов. Рабочая группа добавила только несколько новых элементов:

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

Выводы

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

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

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

Отзывов (6) на «XHTML2 против HTML5»

  1. siegerstein в 21.06.2008 at 10:01 дп

    Отличный перевод!

  2. sema в 04.07.2008 at 8:25 дп

    Спасиба, полезная статья! но html4.1 пока нормально

  3. rotor в 15.07.2008 at 7:26 пп

    Отличный перевод, спасибо!

    Да, жаль что интересные возможности могут привести и к серьезным проблемам в будущем. К новым войнам браузеров (разработчики IE8 до сих пор не хотят быть как все), могут добавиться еще и войны стандартов…

    Но тем интереснее будет жить :)

  4. Ruscon в 09.09.2008 at 1:12 пп

    Если IE не примет новые стандарты, то произойдёт не война как такавая, а подпольная провокация её(IE) не использовать. Это не выгодно Микрософту, но это их мало волнует в наше время. Когда выйдут новые рекомендации, новые стандарты, тогда и увидем что будет - как нрится, зачем загадывать, когда можно дожить =)

  5. Cake_Seller в 09.09.2008 at 4:52 пп

    2 Ruscon
    Как заверял Алекс Могилевский в интервью с Бобуком, Internet Explorer 8 будет максимально заточен под стандарты. Будем надеяться…

  6. MEW в 23.09.2008 at 8:53 дп

    Очень интересно и познавательно (во всяком случае для тех, кто понимает).

Оставьте свой комментарий

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-spam image