В последний год, а может и два, значительно возрос интерес к разрабатываемой в настоящее время спецификации HTML 5. Это касается и производителей браузеров, и создателей сайтов. Однако, целостного взгляда на отличия новой спецификации от старой я ещё не находил, поэтому решил изложить суть официального документа рабочей группы HTML5 о различиях этой спецификации с её предыдущей версией.
Эта статья не закончена, здесь описаны лишь первые два из четырёх основных разделов документа о различиях HTML4 и HTML5. Она будет дополнена и завершена в ближайшее время, также возможны обновления по мере изменения исходного документа W3C.
1. Введение
HTML непрерывно эволюционировал, так как был внедрен в Интернет в начале 90-х годов прошлого века. Некоторые функции были внесены в спецификации и использованы в различных версиях программного обеспечения. В каком-то смысле, реализации и методики авторов соответствовали друг другу и спецификациям, но с другой стороны, они продолжали отдаляться.
HTML4 стал Рекомендацией W3C в 1997. В то время как он продолжал для многих быть грубым руководством к основным функциям HTML, он также не обеспечивал достаточной информации для построения реализаций, которые взаимодействуют с другими реализациями, и что важнее с критическим объёмом созданного HTML-содержимого. Это относилось и к XHTML1 и DOM Level 2 HTML. HTML5 заменит эти документы.
Рабочий проект HTML5 начал разрабатываться в 2004 году с попытки изучения современных реализаций HTML и созданных с помощью них HTML-документов. Рабочий проект:
- Описывает отдельный язык, названный HTML5, который может использовать синтаксис HTML или XML.
- Определяет подробные модели обработки для развития способных к взаимодействию реализаций.
- Совершенствует разметку для HTML-документов.
- Внедряет разметку и API для зарождения идиом, таких как Web applications.
1.1. Нерешенные проблемы
HTML5 — пока еще незаконченная спецификация. Содержание HTML5, также как и содержание этого документа («HTML5 differences from HTML4»), напрямую зависящего от HTML5, всё ещё обсуждается в Рабочей группе HTML и WHATWG. Нерешенные проблемы включают в себя (список не исчерпывающий):
- Семантическое определение некоторых элементов, ранее предназначенных лишь для оформления.
- Сведения о доступности, возможностях замены и сопровождения альтернативным содержимым медиа-данных, таких как атрибуты
alt
иsummary
.
1.2. Обратная совместимость
HTML5 определен таким образом, что он обратно совместим с тем, как агенты пользователей обрабатывают связанное содержимое. Для сохранения относительной простоты языка для авторов некоторые элементы и атрибуты не включены в другие разделы этого документа, например, элементы оформления, которые лучше описаны в спецификации CSS.
Агенты пользователей, однако, всегда должны будут поддерживать устаревшие элементы и атрибуты, и именно поэтому спецификация полностью отделяет требования к авторам и агентам пользователей. Это означает, что авторы не могут использовать элементы isindex
или plaintext
, но агентам пользователей необходимо их поддерживать для совместимости с созданным HTML-содержимым.
Так как в HTML5 требования для автором и агентов пользователей разделены, больше нет необходимости присвоения отдельным частям спецификации статуса «устаревшая».
1.3. Разрабатываемая модель
Спецификация HTML5 не будет рассматриваться завершённой до тех пор, пока не существуют, по крайней мере, две завершённые реализации этой спецификации. Этот подход отличается от предыдущих версий HTML. Его цель – гарантировать полную пригодность спецификации для дизайнеров и разработчиков.
1.4. Влияние на веб-архитектуру
Предполагается, что на веб-архитектуру окажут влияние следующие области/возможности, определенные в HTML5:
- Использование DOM в качестве основы для описания языка.
- Концепция окружения браузера.
- Разделение требований к агентам пользователей и авторам HTML-документов.
- Использование обязательных определений вместо абстрактных определений с требованием эквивалента «чёрного ящика» при реализации.
- Новая концепция модели содержимого (взамен концепции строчных и блочных элементов в HTML4).
- Рассмотрение доступности как неотъемлемой концепции для создания новых возможностей (таких как атрибут
hidden
, элементprogress
и т.п.) вместо каких-либо расширений (к примеру, атрибутаalt
). - Подробное определение семантики (например, алгоритма outline, взамен его нечёткой семантики в HTML4).
- Элементы
menu
иcommand
. - Основополагающие идеи.
- Оффлайн-кеш веб-приложений.
- Определение алгоритма контекстной навигации в браузере (browsing context "navigation" algorithm) и связанных с ним алгоритмов просмотра истории сессий (session history traversal algorithms).
- Контроль типов содержимого и кодировок.
- Очень строгое и недвусмысленное описание парсера.
- Возможности contentEditable и UndoManager.
- Архитектура Drag&Drop и Copy&Past.
- Новые возможности «sandbox» («песочницы», учебно-эксперементальных сред) для
iframe
.
2. Синтаксис
HTML5 использует синтаксис HTML, который совместим с HTML4- и XHTML1-документами, опубликованными в Интернете, но несовместим с нечёткими функциями SGML языка HTML4, такими как команды обработки (processing instructions) и сокращенная разметка (shorthand markup). Документы, использующие синтаксис HTML почти всегда имеют медиа-тип text/html
.
HTML5 также описывает подробные правила синтаксического анализа (включая обработку ошибок), которые в значительной степени совместимы с уже существующими популярными реализациями парсеров. Агенты пользователей должны использовать эти правила для документов, которые имеют медиа-тип text/html
. Ниже приведен пример документа, который соответствует HTML-синтаксису языка HTML5:
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Example document</title> </head> <body> <p>Example paragraph</p> </body> </html>
HTML5 также определяет медиа-тип text/html-sandboxed
для документов, использующих HTML-синтаксис и содержащих непроверенное (разрабатываемое) содержимое.
Другим синтаксисом, который можно использовать для HTML5, является XML. Этот синтаксис совместим с реализациями и документами XHTML1. Документы, использующие такой синтаксис, должны иметь медиа-тип XML, а элементы должны быть помещены в пространство имён http://www.w3.org/1999/xhtml
по правилам, в дальнейшем устанавливаемым спецификациями 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>Example document</title> </head> <body> <p>Example paragraph</p> </body> </html>
2.1. Кодировка символов
Для HTML-синтаксиса языка HTML5 у авторов документов существует три варианта задания кодировки:
- На транспортном уровне можно использовать заголовок HTTP
Content-Type
. - Использовать символ маркера порядка байтов Unicode (BOM) в начале файла. Этот символ обеспечивает сигнатуру для использования необходимой кодировки.
- Используя элемент
meta
с атрибутомcharset
. Например,<meta charset="UTF-8">
может использоваться для установки кодировки UTF-8. Эта запись заменяет более длинную<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
, которая также допустима в HTML-синтаксисе.
Для установки кодировки в случае XML-синтаксиса авторы должны использовать правила, которые установлены в спецификациях XML.
2.2. DOCTYPE
HTML-синтаксис HTML5 требует наличия DOCTYPE для гарантирования того, что браузер отобразит страницу в режиме поддержки стандартов. У DOCTYPE нет иного предназначения и поэтому он необязателен для XML. Документы с медиа-типом XML всегда отображаются в режиме поддержки стандартов.
Объявление DOCTYPE должно быть следующим: <!DOCTYPE html>, оно регистронезависимо в HTML-синтаксисе. DOCTYPE в ранних версиях 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>Зелёный круг: <svg><circle r="50" cx="50" cy="50" fill="green"/></svg> </p>
Более сложные сочетания также допустимы. Например, с помощью SVG-элемента foreignObject
вы можете внедрять MathML, HTML внутрь фрагмента SVG, который сам находится внутри HTML.
2.4. Прочее
Существует несколько других синтаксических изменений, о которых следует упомянуть:
- HTML теперь имеет встроенную поддержку идентификаторов IRI, хотя они могут использоваться в полной мере, только если документ имеет кодировку UTF-8 или UTF-16.
- Атрибут
lang
может иметь значение пустой строки или верного идентификатора языка, также как и атрибутxml:lang
в XML.
Категории этой статьи
Опросы, близкие по теме
Комментарии
<meta charset="UTF-8">
незакрытый meta, это не соответствует стандартам xml
Смотри спецификацию и не сравнивай с XHTML. Тег можно и не закрывать.
ага. и как по-вашему незакрытые теги будут обрабатываться? да. можно. (прыгать с крыши тоже никто не запрещает) но в случае достаточно сложной структуры документа незакрытие тегов даст вам высокую вероятность ошибок при обработке браузером.
Не думаю, обрабатывая теги типа meta, link - браузеры ищут закрывающий тег. Другое дело div, p и остальные обычные теги. Их конечно нужно закрывать.
<meta charset="UTF-8"/>
напишите таблицей - отличия html5 от html4.