HTML 5: назло мечтам, навстречу людям

Ещё пару лет назад было модно считать, что будущее клиентских веб-технологий — за XHTML. Любители стандартов надеялись, что старый HTML 4 вот-вот отомрёт, и на его место придёт свежий, элегантный и чýдно расширяемый XHTML 1.0, а лучше — 1.1.

Однако эти мечты не спешат сбываться. Прогрессу мешают и разработчики браузеров, и создатели сайтов, и конечные пользователи. Скажем, в Internet Explorer до сих пор не поддерживается «истинный» XHTML, то есть тип содержания application/xhtml+xml. Даже если код написан по правилам XHTML, браузер всё равно обрабатывает его тем же синтаксическим анализатором, что и древний HTML. Никакие специфические преимущества XHTML не действуют.

Создатели сайтов тоже не торопятся за новыми веяниями. Они верстают страницы по дремучим технологиям пятнадцатилетней давности. Они не пишут DOCTYPE и не проверяют код валидатором. Они используют оформительские элементы и атрибуты (b, i, center, align, bgcolor, …) и нестандартные конструкции (embed, nobr, …).

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

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

Консорциум W3C до последнего времени не замечал расширяющуюся пропасть между своими разработками и фактическим положением дел в Интернете. Забросив HTML в конце прошлого века, Консорциум углубился в XHTML и дошёл до чернового проекта XHTML 2.0, несовместимого с предыдущими версиями языка, действующими браузерами и объективной реальностью. Пока Консорциум страдал фантазиями, разумные люди из Apple, Mozilla и Opera учредили рабочую группу WHATWG, которая взялась развивать HTML в более конструктивном направлении. Это привело к созданию предварительных версий спецификаций, сейчас известных как HTML 5. К 2007 некоторые браузеры уже начали поддерживать фрагменты этих спецификаций. Консорциум спохватился и судорожно включил плоды деятельности WHATWG в обойму собственных разработок. В январе 2008 материалы по HTML 5 были опубликованы как черновой проект стандарта на сайте W3C. Теперь WHATWG и W3C разрабатывают этот стандарт параллельно.

Основная идея разработчиков HTML 5 — сделать жизнеспособный язык разметки, который будет работать на практике и приносить пользу посетителям и разработчикам сайтов. Один из принципов, положенных в основу стандарта: на первом месте стоят интересы реальных пользователей, затем — создателей сайтов, затем — разработчиков браузеров и других приложений, затем — авторов самогó стандарта, и только потом — теоретические и идеологические соображения, которые Консорциум безуспешно продвигал последние десять лет.

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

HTML 5 существует в двух вариациях — как разновидность XHTML и как модификация «исторического» HTML. Создатели веб-страниц могут применять любую из этих вариаций. В первой вариации новый язык полностью согласован с XML 1.0, так что разработчикам доступны все преимущества XML и смежных технологий.

Во второй вариации HTML 5 покончил с кошмарным наследием прошлого — формальной совместимостью с SGML. Все предыдущие стандарты HTML претендовали на эту совместимость, но ни один браузер не обрабатывал код HTML по замысловатым правилам SGML. Вместо этого использовались простые алгоритмы, распознающие набор конкретных элементов и атрибутов.

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

В отличие от предыдущих стандартов, предназначенных в основном для разработчиков кода, HTML 5 строго и подробно описывает поведение браузеров. Он требует от браузеров обрабатывать не только грамотный код, но и по возможности корректировать ошибки, вплоть до употребления отсутствующих в стандарте элементов. Например, HTML 5 не позволяет авторам кода использовать элементы nobr или marquee, но описывает, как браузер должен поступать, если они всё-таки встретятся в документе.

Это соответствует очередному генеральному принципу HTML 5 — максимальной совместимости с уже существующим наполнением Сети. Миллионы действующих сайтов не должны пострадать от появления нового языка и поддерживающих его браузеров.

Ещё одна особенность нового стандарта: он описывает документ HTML в терминах объектной модели (DOM). Перед тем, как отображать веб-страницу, браузер формирует древовидную структуру её элементов и других объектов. Предыдущие стандарты стыдливо замалчивали этот этап, а HTML 5, наоборот, во многом опирается именно на такое представление документа. Это позволяет включить в спецификацию объекты, свойства и методы DOM, которые широко используются с незапамятных времён, однако никогда не были стандартизованы: window.open(), alert(), prompt(), document.links, document.images, innerHTML, contentEditable и так далее.

Наконец, в HTML 5 официально включён элемент embed. Борцы за стандарты, которые в предыдущие годы предавали его анафеме, жестоко обломались.

Однако HTML 5 впитал не всё, что поддерживается в браузерах. Некоторые элементы, наоборот, удалены из стандарта: acronym, applet, basefont, big, center, dir, font, isindex, s, strike, tt, u. Слава богам, начисто убраны фреймы (frame, frameset, noframes), хотя остался элемент iframe. Нет больше атрибутов, которыми никто в здравом уме не пользовался (accesskey, longdesc и др.) или которыми не имеет смысла пользоваться (align, border, valign, cellpadding, cellspacing и др.).

Некоторые старые элементы переосмыслены: например, i и b теперь обозначают разные формы смыслового выделения, а не курсив и полужирный шрифт; hr отвечает за разрыв в структуре документа. Элемент menu обрёл вторую молодость и позволяет создавать настоящие меню, а address ущемлён в правах и предназначен строго для контактной информации в узком контексте.

Наконец, в HTML 5 добавилось много нового. Для статей, блогов, документации и подобных материалов будут полезны элементы article и section, а также новая система заголовков и рубрикации. «Шапка» и «подвал», панель навигации и боковая панель обозначаются элементами header, footer, nav и aside.

Для мультимедийного содержания появились элементы audio и video. Они внедряют в страницу соответствующий ресурс и обеспечивают стандартные элементы управления — кнопки запуска, паузы и остановки, проматывание, регулятор громкости. Для тех браузеров, где эти элементы не поддерживаются, HTML 5 позволяет дополнить их альтернативным содержанием — например, роликом Flash, с помощью которого сейчас внедряется большинство аудио- и видеозаписей. В продвинутых браузерах полноценно сработает элемент audio или video, а во всех остальных — альтернативный ролик, так что все пользователи останутся довольны.

Здесь проявляется ещё один генеральный принцип — новые возможности HTML 5 должны создавать как можно меньше проблем в тех браузерах, где они не поддерживаются. Почти все новшества языка устроены так, что для старых браузеров можно обеспечить их реализацию с помощью альтернативного содержания, CSS, JavaScript и других технологий.

Отдельного упоминания заслуживает элемент canvas, который предоставляет область для рисования изображений «на лету» средствами JavaScript. Собственно, массовый интерес к HTML 5 начался после того, как Firefox и Opera решили поддерживать этот элемент.

Формы в HTML 5 изменились до неузнаваемости. Примитивные процедуры заполнения и отправки формы, описанные в прежних версиях HTML, уже сейчас никого не устраивают, поэтому разработчики сайтов выдумывают собственные расширения интерфейса, средства проверки, самодельные элементы управления. В HTML 5 эта самодеятельность урегулирована стандартными элементами, атрибутами и интерфейсами DOM.

В дополнение к обычным текстовым полям, появились поля для ввода определённых данных. Например, input type="number" — это поле для ввода числа, а input type="range" — ползунок для регулирования громкости или чего-то похожего. Атрибуты min, max и step определяют диапазон и точность допустимых значений в поле. Элемент datalist обеспечивает поле со списком, а элемент output — область для вывода динамически генерируемых результатов.

Атрибут required для элемента управления обозначает, что этот элемент обязателен для заполнения, так что без него форма не будет отправлена. Атрибут autofocus позволяет установить фокус ввода в данный элемент. Метод checkValidity() проверяет правильность заполнения полей. До сих пор эти возможности имитировались на сайтах с помощью кустарных сценариев JavaScript.

Чтобы перечислить все нововведения в формах HTML 5, потребовался бы десяток таких статей, как эта. А ведь возможности взаимодействия с пользователем не ограничиваются формами. В стандарте предлагается элемент datagrid для организации динамических структур данных, элемент command для вызова пользовательских команд, элемент progress — индикатор хода выполнения операции, а также средства DOM для редактирования содержания прямо на веб-странице, перетаскивания, выделения, работы с буфером обмена и многого другого.

Это отвечает общей тенденции развития Всемирной Паутины: если раньше сайты были чем-то вроде публикаций, то теперь они превратились в полноценные приложения, требующие функционального и удобного пользовательского интерфейса. Соответственно, новый HTML также должен стать не столько языком публикаций, сколько языком описания приложений. На ранних стадиях разработки стандарт HTML 5 даже назывался «Web Applications 1.0».

Как скоро HTML 5 станет действующим стандартом? По традициям W3C стандарт принимается после того, как язык будет полностью реализован по крайней мере в двух настоящих браузерах. Консорциум со своей склонностью к фантазиям надеется, что это произойдёт к концу 2010. Однако разумные люди из WHATWG придерживаются другого мнения: полноценного воплощения HTML 5 стóит ждать не раньше 2022. До тех пор основным языком клиентской части Веба останется нынешняя мешанина из HTML 4 и XHTML 1, которая так раздражает любителей стандартов, зато эффективно и круглосуточно приносит пользу посетителям сайтов.


Ростислав Чебыкин (2008)


Другие статьи

Оптимизм.ру Настрой на результат!