Будущее HTML: Часть 2. XHTML 2.0

Эдд Дамбилл (Edd Dumbill), председатель, XTech Conference

В предыдущей статье этой серии показано, почему HTML нуждается в обновлении как для решения проблем, так и для того, чтобы соответствовать растущим требованиям, которые встали перед web-страницами и приложениями. Я рассказал о деятельности рабочей группы по разработке гипертекстовых приложений для интернета (Web Hypertext Application Technology Working Group, WHATWG), свободной ассоциации разработчиков браузеров, занимающихся разработкой спецификаций Web Applications 1.0 и Web Forms 2.0.

В этой статье мы познакомимся с работой консорциума World Wide Web Consortium (W3C) по созданию новой версии спецификации XHTML, а также с их ответом на потребность в поведении "rich client", демонстрируемого приложениями Ajax.

В W3C четыре рабочих группы, которые работают над спецификациями в конкретных областях:

  • HTML (теперь XHTML);
  • XForms;
  • Web API;
  • Web Application Formats.

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

XForms

XForms - преемник сегодняшних форм HTML от W3C. Эта спецификация предназначена для обеспечения более полной функциональности; передача результатов приложению для обработки осуществляется в виде XML-документа. XForms являются модульными, поэтому их можно использовать в любом контексте, а не только присоединенными к XML. Основные отличия XForms от форм HTML:

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

Поскольку XHTML 2.0 является модульным языком, он импортирует формы XForms в виде модулей для повышения функциональности своих форм.

Web API

Рабочая группа Web API конcорциума W3C занимается определением стандартного API для разработки приложений на стороне клиента. Первая и самая известная из разработок этой группы - функция XMLHttpRequest, используемая в Ajax (эта технология также была описана WHATWG). Данный API был доступен для программистов через ECMAScript и любые другие языки, поддерживаемые средой браузера.

Среди дополнительных API, которые сейчас находятся в стадии разработки, вероятно, будут:

  • API для работы с объектом браузера Window;
  • Спецификации DOM Level 3 Events и XPath;
  • API для синхронизированных по времени событий;
  • API для сетевой работы без использования HTTP, например, через XMPP или SIP;
  • API для управления устойчивыми хранилищами на стороне клиента;
  • API для поддержки технологии drag and drop;
  • API для мониторинга загрузки на клиентский компьютер;
  • API для загрузки файлов на сервер.

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

Форматы web-приложений (Web Application Formats)

XHTML 2.0 - это всего лишь часть вопроса об интерфейсе пользователя web-приложения , но это не все. Такие технологии, как XUL от Mozilla и XAML от Microsoft способствуют использованию расширенного словаря XML в пользовательских интерфейсах.

Рабочая группа Web Application Formats Working Group занимается разработкой декларативного формата описания интерфейсов пользователя тем же способом, что и XUL или XAML, а также разработкой XBL2, декларативного языка, который обеспечит связь между пользовательской разметкой и существующими технологиями. В основном, XBL2 предоставляет программистам способ написания виджетов для web-приложений.

Почему XHTML 2.0?

Задачей XHTML 1.0 был переход HTML на свойственный XML словарь. Эта спецификация ввела ограничения синтаксиса XML в HTML: регистрозависимость, принудительное заключение в двойные кавычки значений атрибутов и симметричные тэги. Таким образом XHTML 2.0 пытается решить проблемы HTML как языка для разметки web-страниц.

В своей презентации на конференции XTech 2005 в Амстердаме, сотрудник W3C Стивен Пембертон (Steven Pemberton) выразил цели проекта XHTML 2.0:

  • Использовать XML везде, где это возможно: Если функция языка уже существует в XML, она не дублируется и не проектируется повторно;
  • Сначала структура, затем представление: Благодаря таблицам стилей CSS больше нет необходимости в явно презентационных тэгах в HTML;
  • Сделать HTML проще в написании: Устранить некоторые бесполезные идиосинкразии HTML;
  • Больше доступности, аппаратной независимости: Сделать столько предположений, сколько возможно, о способе, которым документ будет прочитан;
  • Улучшенная интернационализация;
  • Улучшенные формы: Необходимые давно назревшие усовершенствования!
  • Снизить необходимость использования сценариев: Включить типичные применения сценариев в синтаксис самого HTML;
  • Улучшенная семантика: Упростить интеграцию HTML с семантическими web-приложениями.

Эти цели определенно покажутся достойными похвалы любому, кто какое-то время работал с HTML. Теперь я более подробно расскажу о некоторых способах их достижения в XHTML 2.0.

Разделы и параграфы

Я помню, как много лет назад, когда я только пришел в HTML, я испытал некоторое удивление по поводу текстовых структурных элементов этого языка. Зачем нужны шесть уровней заголовков, и в какой ситуации можно было бы применить их все? Итак, почему бы заголовкам каким-либо образом не включать разделы, которые они озаглавливают? У XHTML 2.0 есть ответ на этот вопрос благодаря новым элементам <section> и <h> (заголовок):

<section>
  <h>Level 1 heading</h>
  ...
  <section>
  <h>Level 1 heading</h>
  ...
  </section>
</section>

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

После этого для заголовков можно использовать стили CSS. Хотя ожидается, что реализация XHTML 2.0 в браузерах по умолчанию будет включать кое-что из описанного здесь как предварительно заданные параметры, но если написать их явным образом, они могут выглядеть примерно так (если абстрагироваться от спецификации XHTML 2.0):

h {font-family: sans-serif; font-weight: bold; font-size: 200%}
section h {font-size: 150%} /* Заголовок второго уровня */
section section h {font-size: 120%} /* Заголовок третьего уровня */ 

Еще одно логическое несоответствие в XHTML 1.0 заключается в том, что необходимо закрыть абзац, чтобы использовать список. По сути, абзацы следует закрывать для использования любых блочных элементов (блоков цитат, преформатированных разделов, таблиц и т. д.). Поступать так не всегда логично, если материал может вполне правомерно использоваться как часть одного абзаца. XHTML 2.0 устраняет это ограничение. Единственное, чего нельзя делать - это помещать один абзац в другой.

Изображения

Тэг <img> в HTML на самом деле имеет довольно ограниченную гибкость. Как отмечает Пембертон, он не предоставляет никакого механизма нейтрализации ошибки, за исключением альтернативного текста alt (что препятствует утверждению новых форматов изображения), текст в тэгах alt нельзя разметить, а атрибут longdesc никогда не войдет в моду из-за своей неуклюжести. (longdesc используется для того, чтобы указать URI более полного описания изображения, чем то, что приводится в атрибуте alt.)

В XHTML 2.0 появляется элегантное решение этой проблемы: возможность любому элементу иметь атрибут src. Браузер впоследствии заменяет содержимое элемента содержимым, которое находится по указанному URI. В самом простом случае это изображение. Но нигде не сказано, что это не может быть SVG, XHTML или любой другой тип содержимого, которое способен интерпретировать браузер.

Тэг <img> как таковой остается, но теперь он может включать содержимое. Новое действие атрибута src означает, что текст alt теперь представляет собой содержимое элемента, как в этом примере разметки:

<p><img src="http://example.com/water.png">H<sub>2</sub>O</img></p>

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

XHTML 2.0 предлагает более общую форму включения изображения в элемент <object> , который можно применять для включения любого вида объектов -- от изображений и клипов до исполняемого кода наподобие технологий Flash или Java. Это дает возможность использовать изящную технику для обработки постепенного уменьшения возможностей в зависимости от свойств браузера; можно внедрять несколько элементов <object> один в другой. Например, flash-ролик можно поместить на самый внешний уровень, видеофайл AVI внутрь flash-ролика, фотоизображение внутрь avi-файла и, наконец, фрагмент текста в центре группы вложенных объектов. Смотрите Модуль объектов XHTML, где приведена дополнительная информация по этой теме.

Расширяемая семантика

HTML всегда имел некоторые элементы с семантическими ассоциациями, например, <address> и <title>. Проблема заключается в том, что таких элементов мало, и они не являются расширяемыми. Между тем, предпринимались попытки использовать атрибут class для того, чтобы привнести семантику в элементы HTML. Это расширение задач атрибута class по сравнению с тем, для чего он был создан; такое применение атрибута затрудняется тем, что он преимущественно используется для применения стилей CSS. (Некоторых людей раздражает такое утверждение задачи атрибута class, но со вторым применением трудно спорить).

Идя еще дальше этих особых методов, XHTML 2.0 вводит метод для описания метаданных типа RDF в документе. Выражения RDF составляются из троек (субъект, свойство, объект). Например, может существовать тройка: "мой автомобиль", " изображен", "красным цветом".

Атрибут about действует как rdf:about, определяя subject тройки RDF - он может быть опущен, в этом случае сам документ будет субъектом. Атрибут property - это URI, на который ссылается свойство (он может использовать сокращенное наименование, предоставляя соответствующее объявление префикса; подробности можно найти в XHTML 2.0 раздел Модуль атрибутов метаинформации (Metainformation Attributes Module)).

И, наконец, третье значение в тройке является содержимым элемента, к которому применяются атрибуты about и property, а если эти атрибуты пусты, то значением атрибута content. Вот пример применения, которое близко к существующему использованию тэга HTML <meta> tag, определяет создателя в заголовке страницы:

<html xmlns="http://www.w3.org/2002/06/xhtml2/" xml:lang="en">
  <head>
    <title>Edd Dumbill's Home Page</title>
    <meta property="dc:creator">Edd Dumbill</meta>
  </head>
  ...
</html>

Теперь давайте рассмотрим еще один пример, приведенный Пембертоном, который показывает, как использовать метаданные в теле реального документа:

<h property="title">Welcome to my home page</h>

Заголовок обозначается как название документа XHTML 2.0 и определяется как строковый заголовок. Наконец, нам не придется больше дважды писать заголовок в каждом документе!

Благодаря простой технологии преобразования GRDDL (Gleaning Resource Descriptions from Dialects of Languages (Очистка описаний ресурса от диалектов различных языков)), мы получили единый стандарт для извлечения RDF-метаданных из документов XHTML 2.0.

XHTML 2.0 включает и много других изменений, часть из которых связана с параллельной разработкой спецификации XForms. В этой статье я не смогу охватить их все. Тем не менее, это значительный скачок в развитии по сравнению с XHTML 1.0.

Еще несколько новых особенностей XHTML 2.0

Вам не надоело писать <pre><code> ... </code></pre>? Теперь можно использовать новый элемент <blockcode>.

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

Браузеры в настоящее время поддерживают некоторое перемещение фокуса при помощи клавиши Tab , но это может быть произвольным. Новые атрибуты nextfocus и prevfocus позволяют управлять порядком, в котором фокус будет перемещаться между элементами окна; это может быть важной функцией при создании пользовательских интерфейсов с навигацией.

Подготовка к XHTML 2.0

Несмотря на масштаб изменений в будущем, в XHTML 2.0 все еще можно узнать HTML. Хотя в нем есть новые элементы, многое в XHTML 2.0 работает, как раньше. Элементы <h1> - <h6> сохраняются в качестве меры обеспечения совместимости, как и элемент <img>.

Однако миссия XHTML 2.0 заключается не в сохранении строгой обратной совместимости синтаксиса, поэтому интерпретаторы HTML в современных браузерах не смогут вполне справиться с выразительными средствами документов XHTML 2.0. Тем не менее, большинство web-браузеров сегодня хорошо справляются с произвольной интерпретацией XML-плюс-CSS, а многое из XHTML 2.0 может быть интерпретировано этим способом -- даже если вы при этом не получите семантических улучшений.

Некоторые из отличий XHTML 2.0 очень существенны -- переход к XForms является одним из самых заметных, как и полный отказ от не-XML наследия HTML. Поэтому вы не можете переключить ваши сайты на управление XHTML 2.0 прямо сейчас, но зато можете сделать приготовления на будущее:

  • Серьезно подумайте об использовании CSS, постарайтесь удалить презентационную разметку;
  • Подумайте о том, как можно разместить на ваших страницах микроформаты . Микроформаты позволят представить метаданные в HTML-коде с использованием существующих стандартов;
  • Если вы до сих пор не сделали этого, научитесь работать с XHTML 1.0. Сегодня возможно управление страницами XHTML 1.0 как обычным кодом HTML, если они созданы в соответствии с рекомендациями по совместимости XHTML 1.0 HTML, хотя при этом могут возникнуть сложности. XHTML 2.0 так управлять нельзя. Дополнительную информацию по этой теме;
  • Поэкспериментируйте с браузером X-Smiles, который предлагает поддержку XHTML 2.0 наряду с основными средствами SVG, XForms, и SMIL 2.0;
  • Если вы создаете новые клиентские системы на базе XHTML-подобных функций, серьезно подумайте об использовании XHTML 2.0 в качестве исходной точки.

Наконец, обратите внимание на то, что XHTML 2.0 - это все еще не окончательная спецификация. На момент написания нашей статьи она все еще находится в W3C в стадии рабочего черновика (Working Draft), что означает, что ей еще нужно пройти некоторый путь, прежде чем она достигнет стадии Recommendation (Рекомендуемая спецификация). Важно, что может быть еще и стадия Candidate Recommendation (кандидат в рекомедуемые спецификации), которая используется для накопления опыта реализации.

Вероятно, XHTML 2.0 не станет рекомендуемой спецификацией W3C (Recommendation) до 2007 года, в соответствии с рабочим планом рабочей группы W3C по HTML. Это означает, что 2006 год станет годом получения важного опыта размещения.

Сравнение W3C XHTML 2.0 с WHATWG HTML 5

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

Хотя эти две спецификации очень разные, они не являются несовместимыми. Некоторые из наиболее понятных разработок спецификации WHATWG уже получили реализацию в браузерах, а часть разработок WHATWG фактически представляет собой расширения HTML. Самые значительные из них, например, XMLHttpRequest, найдут свое выражение в спецификациях группы W3C Rich Client Activity. WHATWG также действует, как полезный катализатор в мире web-стандартов.

Если посмотреть еще дальше, подход XHTML 2.0 предлагает очищенный словарь для web, в котором модульная обработка XML, CSS и ECMAScript быстро станет нормой. Встроенным устройствам, например, телефонам и цифровым телевизорам, нет необходимости поддерживать традиционные средства беспорядочного HTML, они свободно могут воспользоваться преимуществами XHTML 2.0 как чистого XML-словаря. Кроме того, новые функции, способствующие доступности и интернационализации, делают XHTML 2.0 первым словарем документа XML , который можно обоснованно назвать универсальным, а, следовательно, прочной и экономичной основой для многих попыток, основанных на использовании разметки.

Как и прошлое, будущее HTML будет разным -- некоторые могут назвать его беспорядочным -- но я думаю, что XHTML 2.0 в конце концов получит широкое распространение и применение. Если бы это был единственный словарь XML в Web, возможно, возникли бы некоторые вопросы, но, поскольку браузеры готовы работать с SVG, XForms и другими технологиями, XHTML 2.0 начинает выглядеть точно так же, как любой из этих основанных на XML словарей.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=5275