Статьи Конвергенция Html и Xhtml

Discussion in 'Статьи' started by [53x]Shadow, 20 Apr 2007.

  1. [53x]Shadow

    [53x]Shadow Leaders of Antichat

    Joined:
    25 Jan 2007
    Messages:
    284
    Likes Received:
    597
    Reputations:
    514
    Автор: Артём Скорецкий
    Источник: tonnzor about IT & Hi-Tech

    Недавняя публикация W3C о возобновлении работ над HTML стала сюрпризом для многих веб-разработчиков и в одночасье сделала малоизвестный черновик стандарта Web Applications 1.0 (тут же окрещённый в HTML5) достоянием общественности.

    Появление нового стандарта не осталось без внимания ИТ-сообщества — появилось несколько статей о Web Applications / HTML5, развернулось оживлённое обсуждение нового стандарта. Однако дискуссия о новом, и, на самом деле, полезном стандарте превратилась в священные войны “HTML5 vs. XTHML”.

    Хотелось бы развеять миф о том, что Web Applications / HTML5 и XHTML являются конкурентами. Но для этого придётся ответить на вопрос — что такое Web Applications 1.0?

    Что такое Web Applications 1.0 ?

    История создания

    В 2004 году несколько компаний, включая Apple, Mozilla и Opera, обеспокоились позицией W3C относительно стандарта HTML, а именно — потере интереса к нему и игнорировании потребностей “real-world authors”. Для решения этих проблем была создана “Web Hypertext Application Technology Working Group” (WHATWG), имеющая целью создание следующего поколения HTML и связанных с ним технологий. В настоящее время WHATWG динамично развивается и объединяет разработчиков браузеров, веб-разработчиков и других заинтересованных лиц.

    Требования и решения

    Целью Web Applications 1.0 было создание на основе HTML нового стандарта, который:

    * Максимально приближен к HTML
    * Учитывает опыт новых стандартов (XHTML 1 и XHTML 2, XForms и т.д.)
    * Реализует новые возможности, востребованные в современном вебе
    * Исправляет ошибки / недоработки HTML

    В процессе разработки поставленные требования реализовались в:

    * Обратную совместимость с HTML
    * Механизм представлений (representations)
    * Упрощённый (по сравнению с HTML) синтаксис
    * Дополненную и уточнённую (по сравнению с HTML) семантику
    * Чёткие правила проверки правильности и парсинга документов
    * Новый DOM

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

    Web Applications 1.0 обратно совместим с HTML [4.01], т.е. приложения, рассчитанные на работу с документами Web Applications 1.0, могут без изменений работать с HTML документами.

    Обратная совместимость делает Web Applications 1.0 очень интересным стандартом — с одной стороны, это позволяет с минимальными переделками реализовать поддержку стандарта в существующем программном обеспечении (браузеры, редакторы и т.п.), а с другой стороны — позволяет воспользоваться некоторыми возможностями нового стандарта (чёткими правилами парсинга и проверки правильности) для уже существующих документов.

    Механизм представлений

    В отличие от HTML, в котором семантика и синтаксис были склеены в одно целое, в Web Applications разработчики разделили их, предоставив несколько синтаксисов для представления одной и той же семантики.

    Так, стандарт в первую очередь закрепляет семантику — смысл элементов (например — элемент “Q” означает цитату, а атрибут “SRC” — ссылку на источник), и лишь во вторую очередь — фиксирует синтаксис — представление документа в машинопонимаемом формате.

    Как результат — в Web Applications есть 3 равноправных представления (representations) документа:

    * HTML5 — представление документа с помощью HTML сериализации
    * XHTML5 — представление документа с помощью XML сериализации
    * DOM5 HTML — представление документа в виде объектной модели — DOM-дерева

    При этом сами разработчики при описании Web Applications 1.0 используют DOM5 HTML представление, например:

    interface HTMLBaseElement : HTMLElement {
    attribute DOMString href;
    attribute DOMString target;
    };

    Несмотря на равноправность представлений, разработчики подчёркивают, что представления не всегда могут представить один и тот же контент. Например, namespaces не могут быть адекватно представлены в HTML5, и наоборот -– элемент “NOSCRIPT” не может быть представлен в XHTML5 и DOM 5 HTML.

    Упрощённый синтаксис

    В стандарте был предпринят ряд шагов, направленных на упрощение синтаксиса / сокращение объёма кода.

    Например, вместо:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">

    Можно писать:

    <!doctype html>
    <html><head>
    <meta charset="UTF-8">

    Дополненная и уточнённая семантика

    Последняя редакция HTML (4.01) вышла в декабре 1999 года — 7 (!) лет назад. За это время веб сильно изменился, стала ощущаться ограниченность семантики HTML, созданного в общем-то для описания научных работ.

    Web Applications описывает новые (по сравнению с HTML) элементы, а также добавляет дополнительные атрибуты к уже существующим элементам. Стандарт также фиксирует некоторые микроформаты (см. статья о микроформатах Ивана Сагалаева).

    Полное описание новой семантики займёт несколько страниц, поэтому приведу лишь несколько примеров:

    * тэг nav — указание на часть страницы, содержащую навигационные ссылки
    * тэг section — разбиение страницы на части (секции)
    * тэг footer — указание концовки секции (скажем, для отображения информации о создателе, дате создания, связанные ссылки, информация об авторском праве и т.п.)
    * тэг m — выделение текста страницы, совпадающего с текстом запроса при поиске
    * атрибут ping (например, тэга a) — адрес ресурса, который должен быть уведомлен, что пользователь перешёл по ссылке

    Помимо этого, Web Applications переопределяет / уточняет значения уже существующих элементов, например:

    * тэг strong — указывает на большую значимость слова или фразы; наличие данного тэга внутри фразы не должно менять смысла всей фразы
    * тэг hr — указывает на смену тематики между параграфами, например, сюжетный поворот в рассказе, или переход от одной темы к другой внутри одной темы в справочнике

    Чёткие правила проверки правильности и парсинга документов

    Одним из главных недостатков HTML является его недостаточная чёткость и однозначность — стандарт позволяет авторам пропускать некоторые элементы синтаксиса (закрывающие тэги и т.п.), но не описывает то, каким образом восстанавливать эти пропуски. Другими словами, стандарт подразумевает некоторое “додумывание” за создателей документов, однако не рассказывает, каким образом это делать.

    Вторым серьёзным недостатком HTML является отсутствие описания действий агентов (браузеров) при обработке неправильных HTML-документов. Таким образом, обработка таких неправильных документов остаётся на усмотрение разработчика агента.

    В этой ситуации разработчики браузеров были вынуждены:

    1. по своему разумению реализовывать механизм “додумывания”
    2. реализовывать обработку явно неправильных HTML-документов

    Это привело к тому, что:

    * Код браузеров оказался сильно усложнён (в результате — более низкая скорость, большее число ошибок и уязвимостей)
    * Браузеры по-разному парсят (и, соответственно, отображают) документы
    * Создатели документов не обременяют себя написанием правильных HTML-документов, предпочитая tag-soup

    В Web Applications уделили особое внимание вопросу проверки правильности и парсинга документа — целый блок стандарта был отведён под описание того, как оно должно делаться. Более того, параллельно с написанием спецификации на парсинг и проверку правильности осуществляется реализация спецификации в исполняемом коде и написание юнит-тестов для этого кода.

    Новый DOM

    Web Applications 1.0 включает в себя также обновлённый DOM — DOM4 (Core, Views, Events). В новом DOM разработчики постарались реализовать востребованные в современном вебе возможности — так, например, декларируется поддержка Drag’n'Drop.

    Web Applications 1.0 / HTML5 и XHTML — конкуренты?

    Web Applications и XHTML не являются конкурентами как таковыми — Web Applications является прямым наследником XHTML 1.x и содержит все его ключевые моменты. Формально Web Applications и XHTML/HTML являются конкурентами — так же, как HTML 3.2 и HTML 4.01 или CSS 1.0 и CSS 2.0 — однако в действительности вопрос выбора не встаёт — всегда используется более современный стандарт, если нет специфичных условий (поддержка конкретных версий программных/аппаратных продуктов).

    HTML5 и XHTML — тоже не являются конкурентами, поскольку почти любой HTML5 документ может быть представлен в XHTML синтаксисе — XHTML5.

    Светлое будущее по версии Web Applications

    Web Applications — очень интересный стандарт. Если он будет утверждён W3C и поддержан разработчиками, то веб сделает большой шаг вперёд.

    Окончание войны “HTML vs. XHTML”

    Web Applications не делает разницы между HTML и XHTML синтаксисом (за редким исключением), поэтому авторы совершенно свободны в выборе синтаксиса для создания документов. Более того, наличие чётких правил парсинга (включая код работающего парсера) позволит работать с HTML (как HTML5, так и более младшими версиями) практически так же легко, как и с XML.

    Таким образом, решение о выборе HTML или XHTML станет вопросом поставленных задач и личных предпочтений автора, что переводит споры “HTML vs. XHTML” из разряда религиозных войн в конструктивное обсуждение. Ура, товарищи!

    Долой зоопарк!

    Поскольку Web Applications обратно совместим с HTML4 и XHTML1, то новый стандарт можно будет использовать для обработки существующих документов (возможно, с небольшими модификациями). В то же время, Web Applications предоставляет новые, востребованные возможности при минимальных усилиях на миграцию — как по переучиванию, так и изменению кода — то новые разработки имеет смысл реализовывать именно на этом стандарте.

    Таким образом, у Web Applications есть серьёзный шанс стать основным языком веба в ближайшие годы. В этом случае и HTML, и XHTML1 станут раритетами.

    “Облегчение” и унификация браузеров

    Обратная совместимость Web Applications позволит отказаться от отдельной реализации для поддержки XHTML5 и HTML5 (или, наоборот, для HTML4 и XHTML1), что позволит сохранить список “движков” браузера минимальным:

    * “Движок” рендеринга — 1шт.:
    o Web Applications 1.0
    * “Движок” парсинга — 2 или 3 шт.:
    o Legacy XHTML5 — браузер-неспецифичный парсинг правильных XHTML документов (в соответствии с Web Applications 1.0)
    o Legacy HTML5 — браузер-неспецифичный парсинг правильных HTML документов (в соответствии с Web Applications 1.0)
    o Dirty HTML (по желанию разработчиков) — авторский парсинг — попытка парсинга документа, не соответствующего стандарту Web Applications

    При этом:

    * Legacy HTML5-парсер заведомо проще, чем текущая реализация HTML-парсера
    * Legacy HTML5-парсер является однозначным, что гарантирует одинаковую трактовку данных различными реализациями парсера (браузерами)
    * Dirty HTML-парсер может отсутствовать, т.к. с одной стороны, браузер не обязан пытаться рендерить неправильный документ (по-хорошему он должен стазу выдавать сообщение “невалидный документ” и прекращать обработку), а во-вторых неправильными будут только совсем “кривые” документы (которые делались без малейшей оглядки на стандарты)

    Обновление “движков” браузера позволит:

    * Увеличить скорость работы браузеров
    * Уменьшить количество потенциальных багов и уязвимостей браузеров
    * Уменьшить различия рендеринга одних и тех же документов разными браузерами
    * Фокусироваться разработчикам браузеров на реализации новых стандартов, а не усовершенствовании разбора tag-soup и исправлении ошибок в этом коде