W3C

Отличия HTML5 от HTML4

W3C рабочий вариант, 24 июня 2010

Данная версия:
http://www.w3.org/TR/2010/WD-html5-diff-20100624/
Последняя опубликованная версия:
http://www.w3.org/TR/html5-diff/
Последний редакторский вариант:
http://dev.w3.org/html5/html4-differences/
Предыдущие версии:
http://www.w3.org/TR/2010/WD-html5-diff-20100304/
http://www.w3.org/TR/2009/WD-html5-diff-20090825/
http://www.w3.org/TR/2009/WD-html5-diff-20090423/
http://www.w3.org/TR/2009/WD-html5-diff-20090212/
http://www.w3.org/TR/2008/WD-html5-diff-20080610/
http://www.w3.org/TR/2008/WD-html5-diff-20080122/
Редактор:
Anne van Kesteren (Opera Software ASA) <annevk@opera.com>

Резюме

HTML5 это пятая основная ревизия ядра языка World Wide Web: HTML. Раздел "Отличия HTML5 от HTML4" описывает различия между языками HTML4 и HTML5 и разъясняет смысл некоторых изменений. Этот документ может не давать точной информации, так как спецификация HTML5 всё ещё находится в разработке. Если есть сомнения, всегда см. саму спецификацию HTML5. [HTML5]

Статус данного документа

Этот раздел описывает статус данного документа на время публикации. Другие документы могут заменять этот документ. Список текущих публикаций W3C и последние версии этого технического документа см. на W3C technical reports index at http://www.w3.org/TR/.

Это Рабочий вариант от 24 июня 2010, созданный HTML Working Group как часть HTML Activity. Working Group предполагает опубликовать этот документ как Working Group Note, в дополнение к HTML5-спецификации. Форум для комментариев: public-html-comments@w3.org - это список рассылки с public archive.

Публикация в качестве Рабочего варианта/Working Draft не подразумевает одобрение со стороны W3C Membership. Это рабочий документ, который может обновляться, заменяться в любой момент. Нежелательно цитировать этот документ, как и любой документ, находящийся в стадии разработки.

Этот документ создан группой, работающей на основе 5 February 2004 W3C Patent Policy. W3C поддерживает public list of any patent disclosures; на этой странице также имеются инструкции для раскрытия патента. тот, кто знает о существовании патента, содержащего Essential Claim(s) и принадлежащего какому-либо лицу, обязан раскрыть информацию в соответствии с разделом 6, W3C Patent Policy.

Оглавление

1. Введение

HTML непрерывно развивается с момента появления в Internet в начале 1990-х. Некоторые изменения вводились в спецификациях, другие в релизах программного обеспечения. В некоторых аспектах реализации и авторская практика смыкались друг с другом и со спецификациями и стандартами, но иногда их пути расходились.

HTML4 стал Рекомендациями W3C в 1997 г. Являясь основной направляющей по многим основным возможностям HTML, они не дают достаточно информации для создания реализаций, которые могли бы взаимодействовать друг с другом, и, что намного важнее, - с критической массой опубликованного содержимого. То же происходит с XHTML1, который определяет XML-сериализацию для HTML4, и с DOM Level 2 HTML, который определяет JavaScript APIs для HTML и XHTML. HTML5 замещает эти документы. [DOM2HTML] [HTML4] [XHTML1]

HTML5-проект отражает усилия, начиная с 2004, по изучению современных реализаций HTML и опубликованного содержимого. Данный проект:

  1. Определяет единый язык под названием HTML5, который может быть записан в HTML-синтаксисе и в XML-синтаксисе.
  2. Определяет подробные модели процессинга, способствующие взаимодействию реализаций.
  3. Улучшает разметку документов.
  4. Вводит разметку и APIs для появляющихся вэб-приложений.

1.1. Открытые вопросы

HTML5 пока ещё в стадии проекта. Содержимое HTML5, а также содержимое данного документа, зависящее от HTML5, продолжают обсуждаться а HTML Working Group и в списках рассылки WHATWG. На открытые вопросы имеются ссылки из HTML5-проекта.

1.2. Обратная совместимость

HTML5 определён таким образом, что обеспечена его обратная совместимость со способами обработки опубликованного содержимого в пользовательских агентах (ПА). Чтобы сохранить язык разработки относительно простым для авторов, некоторые элементы и атрибуты не включаются, как указано в других разделах данного документа: это такие элементы, как элементы представления, которые лучше рассматривать через CSS.

ПА, однако, всегда должны поддерживать эти старые элементы и атрибуты, и именно поэтому HTML5-спецификация чётко разделяет требования для авторов и для ПА. Например, это означает, что авторы не могут использовать элемент isindex или plaintext, но ПА должны поддерживать их таким образом, чтобы обеспечивать совместимость с соответствующим поведением этих элементов в уже опубликованном содержимом.

Поскольку HTML5 имеет разные требования по соответствию для авторов и ПА, больше нет необходимости помечать элементы как "deprecated/не рекомендуется".

1.3. Модель разработки

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

2. Синтаксис

HTML5 определяет HTML-синтаксис, который совместим с HTML4- и XHTML1-документами, опубликованными в сети, но не совместим с более эзотерическими возможностями SGML в HTML4, такими как инструкции процессинга и сокращениями разметки, так как они не поддерживаются большинством ПА. Документы с использованием синтаксиса HTML почти всегда обслуживаются как тип носителя text/html.

HTML5 также определяет для данного синтаксиса детальные правила разбора кода (включая "обработку ошибок"), которые широко совместимы с популярными реализациями. ПА обязаны использовать эти правила для ресурсов, имеющих тип носителя text/html. Вот пример документа, соответствующего синтаксису HTML:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Пример документа</title>
  </head>
  <body>
    <p>Пример параграфа</p>
  </body>
</html>

HTML5 также определяет тип носителя text/html-sandboxed для документов, использующих синтаксис HTML. Это может использоваться при хостинге непроверенного содержимого.

Ещё один синтаксис, который можно использовать вместе с HTML5 - это XML. Этот синтаксис совместим с XHTML1-документами и реализациями. Документы, использующие этот синтаксис, должны обрабатываться как XML-тип носителя, а элементы должны размещаться в пространстве имён http://www.w3.org/1999/xhtml по правилам, установленным ранее в XML-спецификациях. [XML]

Ниже дан пример документа, соответствующего XML-синтаксису HTML5. Обратите внимание, что XML-документы должны обслуживаться с XML-типом носителя, таким как application/xhtml+xml или application/xml.

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Пример документа</title>
  </head>
  <body>
    <p>Пример параграфа</p>
  </body>
</html>

2.1. Кодировка символов

Для HTML-синтаксиса HTML5 авторы имеют три способа настройки кодировки:

Для XML-синтаксиса авторы должны использовать правила, как сформулировано в спецификациях XML, для установки кодировки символов.

2.2. DOCTYPE

HTML-синтаксис в HTML5 требует указывать DOCTYPE, чтобы гарантировать отображение страницы браузером в стандартном режиме. DOCTYPE не имеет иного применения и, следовательно, является опционным для XML. Документы с XML-типом носителя всегда обрабатываются в стандартном режиме. [DOCTYPE]

Объявление DOCTYPE - это <!DOCTYPE html> , оно нечувствительно к регистру символов в HTML-синтаксисе. DOCTYPEs более ранних версий HTML были длиннее, так как язык HTML базировался на SGML и требовал ссылки на DTD. В HTML5 это больше не требуется, и DOCTYPE нужен только для стандартного режима для документов, написанных с использованием синтаксиса HTML. Браузеры уже делают это для <!DOCTYPE html>.

2.3. MathML и SVG

HTML-синтаксис в HTML5 позволяет использовать MathML- и SVG-элементы внутри документа. Например, вот очень простой документ с использованием минимального синтаксиса:

<!doctype html>
<title>SVG в text/html</title>
<p>
 A green circle:
 <svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg>
</p>

Возможны и более сложные комбинации. Например, с SVG-элементом foreignObject вы можете вложить MathML, HTML или то и другое внутрь SVG-фрагмента, который сам находится внутри HTML.

2.4. Прочее

Есть и некоторые другие изменения синтаксиса, которые следует упомянуть:

3. Язык

Этот раздел разделён на несколько подразделов для более подробного иллюстрирования различий между HTML4 и HTML5.

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

Ссылки этого раздела могут перестать работать, если элементы переименованы и/или перемещены. В более поздних версиях этого проекта они должны восстановиться.

Для улучшения структурирования введены следующие элементы:

Далее, есть несколько других новых элементов:

Атрибут type элемента input имеет теперь следующие новые значения:

Смысл этих новых типов в том, что ПА может предоставлять пользовательский интерфейс, такой как выбор даты из календаря или интеграция пользовательской адресной книгой, и отправлять определённый формат на сервер. Это удобнее для пользователя, поскольку его ввод проверяется до отправки на сервер, что занимает меньше времени при ожидании ответа.

3.2. Новые атрибуты

HTML5 ввёл несколько новых атрибутов для различных элементов, которые уже являются частью HTML4:

Несколько атрибутов из HTML4 теперь применяются ко всем элементам. Это теперь глобальные атрибуты: class, dir, id, lang, style, tabindex и title.

Появилось несколько новых глобальных атрибутов:

HTML5 делает также все атрибуты обработчиков событий HTML4, которые принимают форму onevent-name, глобальными атрибутами и добавляет несколько новых атрибутов обработчика события для новых определённых им событий. Например, элемент play, который используется в API для элементов носителй (video и audio).

3.3. Изменённые элементы

Эти элементы несколько изменили свои значения в HTML5, чтобы лучше соответствовать их работе в сети или повысить возможности их использования:

3.4. Изменённые атрибуты

Следующие атрибуты разрешены, но авторам не рекомендуется применять их и настоятельно рекомендуется использовать альтернативные решения:

3.5. Отсутствующие элементы

Элементы этого раздела более не используются. ПА по-прежнему должны поддерживать их, и различные разделы HTML5 определяют, как. Например, устаревший элемент isindex рассматривается в разделе о разборщике.

Следующих элементов в HTML5 нет, поскольку их действие - исключительно презентационное и их функции лучше выполняются через CSS:

Следующих элементов в HTML5 нет, поскольку их использование отрицательно влияет на удобство и доступность для конечного пользователя:

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

Наконец, элемент noscript соответствует только синтаксису HTML. Он не отсутствует в синтаксисе XML, так как его использование базируется на работе HTML-разборщика.

3.6. Отсутствующие атрибуты

Некоторые атрибуты HTML4 больше не разрешаются в HTML5. Если они должны как-то влиять на работу ПА, по соображениям совместимости, определяется, как они должны работать в соответствующих сценариях.

Кроме того, в HTML5 нет презентационных атрибутов, которые имелись в HTML4, так как их функции лучше выполняются через CSS:

4. APIs (Программные интерфейсы приложений)

HTML5 вводит новые APIs, которые помогают в создании вэб-приложений. Они могут использоваться вместе новыми элементами приложений:

4.1. Расширения для HTMLDocument

HTML5 расширил интерфейс HTMLDocument из DOM Level 2 HTML несколькими путями. Этот интерфейс реализован теперь для всех объектов, реализующих интерфейс Document, так что он продолжает иметь значение в контексте составного документа. Здесь также появилось несколько новых членов:

4.2. Расширения для HTMLElement

Интерфейс HTMLElement также получил в HTML5 несколько расширений:

5. Логи изменений HTML5

Логи изменений/changelogs данного раздела показывают изменения, произошедшие между публикациями вариантов проекта HTML5. Объяснение изменений можно найти в архивах списков рассылки public-html@w3.org и whatwg@whatwg.org и в серии блог-постов This Week in HTML5. Более фендаментальное разъяснение имеется на wiki-странице WHATWG Rationale. Многие редакционные и незначительные технические изменения не включены в эти логи. То есть реализаторам настоятельно рекомендуется постоянно отслеживать развитие основной спецификации, чтобы быть в курсе всех изменений.

Изменения в логах расположены в хронологическом порядке для облегчения редактирования данного документа.

5.1. Изменения после 4 марта 2010

Дополнительно в данном документе были сделаны незначительные изменения, разъяснения и исправления.

5.2. Изменения с 25 августа 2009 до 4 марта 2010

Решён также целый ряд мелких вопросов. Вышеприведённый список суммирует то, что, думается, представляет основной интерес для авторов.

В дополнение ко всему вышесказанному - Microdata, 2D контекстный API для canvas, и Web Messaging (postMessage() API) были выделены в свои отдельные проекты на W3C (WHATWG всё ещё публикует версию HTML5, содержащую их):

Специфические microdata-словари полностью ушли в W3C-проект HTML5 и не публикуются как отдельный проект. WHATWG-проект HTML5 всё ещё их содержит.

5.3. Изменения с 23 апреля 2009 по 25 августа 2009

Помимо этого списка были сделаны незначительные разъяснения, исправлены опечатки, решены вопросы, касающиеся разработчиков и др. небольшие проблемы.

Кроме того были изъяты следующие части HTML5, которые вероятно, будут  в дальнейшем разработаны как IETF:

5.4. Изменения с 12 февраля 2009 по 23 апреля 2009

Кроме того, некоторые части HTML5 были изъяты и будут разрабатываться в дальнейшем группой Web Applications Working Group как отдельные спецификации:

5.5. Изменения с 10 июня 2008 по 12 февраля 2009

Web Forms 2.0, ранее самостоятельная спецификация, полностью интегрирована в HTML5 после последней публикации. В главе о формах сделаны следующие изменения:

5.6. Изменения с 22 января 2008 по 10 июня 2008

Благодарности

Редактор благодарит Ben Millard, Cameron McCormack, Charles McCathieNevile, Dan Connolly, David Håsäther, Dennis German, Frank Ellermann, Frank Palinkas, Gordon P. Hemsley, Henri Sivonen, James Graham, Jens Meiert, Jeremy Keith, Jürgen Jeka, Krijn Hoetmer, Leif Halvard Silli, Maciej Stachowiak, Marcos Caceres, Mark Pilgrim, Martijn Wargers, Martyn Haigh, Masataka Yakura, Michael Smith, Olivier Gendrin, Øistein E. Andersen, Philip Taylor, Simon Pieters, Toby Inkster, и Yngve Spjeld Landro за их вклад в создание этого документа, а также благодарит всех, кто сотрудничал в работе над HTML5 в течение многих лет, улучшая работу Сети!

Ссылки

[CSS-UI]
CSS3 Basic User Interface Module, T. Çelik. W3C.
[DOCTYPE]
Activating Browser Modes with Doctype, H. Sivonen.
[DOM2HTML]
Document Object Model (DOM) Level 2 HTML Specification, J. Stenback, P. Le Hégaret, A. Le Hors. W3C.
[HTML4]
HTML 4.01 Specification, D. Raggett, A. Le Hors, I. Jacobs, editors. W3C.
[HTML5]
HTML5, I. Hickson. W3C.
HTML5 (editor's draft), I. Hickson. WHATWG.
HTML5 (editors' draft), I. Hickson. W3C.
[PSL]
Public Suffix List, Mozilla Foundation.
[SELECTORS]
Selectors, D. Glazman, T. Çelik, I. Hickson. W3C.
[XHTML1]
XHTML™ 1.1 - Module-based XHTML (Second Edition), S. McCarron, M. Ishikawa. W3C.
[XML]
Extensible Markup Language (XML) 1.0 (Fifth Edition), T. Bray, J. Paoli, C. Sperberg-McQueen, E. Maler, F. Yergeau. W3C.
Namespaces in XML 1.0 (Third Edition), T. Bray, D. Hollander, A. Layman, R. Tobin, H. S. Thompson. W3C.