Типа примерчик

HTML на пятом витке эволюции

Как известно, история HTML началась в ранних 1990-х, когда Тим Бернерс-Ли положил в основу своего детища — Всемирной паутины — язык разметки гипертекста, разработанный им на основе метаязыка SGML. Это старый, имеющий свою интересную историю, сложный и противоречивый стандарт — к слову, утвержденный ISO еще в 1986 году.

Повороты истории

Дальнейшее развитие HTML сопровождалось, как минимум, тремя крутыми поворотами.

Первый поворот судьбы HTML пережил еще в совсем нежном возрасте, в середине 1990-х, когда потенциал Всемирной паутины внезапно открылся бизнесу. В условиях остро развившейся потребности создавать яркие и броские сайты на фоне полного отсутствия адекватных инструментов для этого HTML (при непосредственном участии жестко конкурировавших на рынке производителей браузеров Netscape и Microsoft) начал стихийно прирастать элементами визуального форматирования, внедрение которых шло вразрез с первоначальным предназначением языка как средства структурной разметки документов.

Второй поворот связан с намерением консорциума W3C, основанного Тимом Бернерсом-Ли в 1994 году, восстановить фактически полностью утраченный и перешедший коммерческим компаниям контроль за развитием HTML и других ключевых технологий, лежащих в основе Всемирной паутины. Этот довольно длительный период ознаменовался:

  • разработкой CSS;
  • объявлением не рекомендованными к использованию (deprecated) многих элементов, отвечавших исключительно за визуальное представление, в рамках спецификации HTML 4;
  • переформулировкой HTML 4.01 в соответствии с более строгими правилами синтаксиса и обработки документов, принятых в XML (который, в свою очередь, является весьма компактным и стройным подмножеством SGML), результатом чего стала спецификация XHTML 1.0;
  • неудавшейся попыткой повсеместного внедрения XHTML взамен «классического» HTML, апофеозом которой стала разработка рафинированной спецификации XHTML2, не совместимой с предшествующими версиями языка разметки гипертекста и слишком оторванной от реальности.

Третий поворот мы переживаем сейчас. Новый головокружительный вираж заложила созданная в 2004 году рабочая группа WHATWG, справедливо упрекнувшая W3C в пренебрежении реальными потребностями отрасли и выступившая за продолжение развития HTML. Это обернулось тем, что в настоящее время совместными усилиями WHATWG и рабочей группы W3C разрабатывается компромиссный проект — HTML5, а разработка XHTML2 прекращена за бесперспективностью.

Сложности взаимоотношений

Формальному объединению двух рабочих групп препятствуют некоторые административные ограничения и несколько различные взгляды на окружающую действительность.

Так, WHATWG сводит все результаты своей работы в единую спецификацию Web Applications 1.0, всерьез замышляя, по всей видимости, объять необъятное и поработить мир. WHATWG позиционирует свои наработки как «живые стандарты» (Living Standards), призывая профессиональное сообщество использовать новые технологии «здесь и сейчас», в соответствии с текущим статусом их развития, и отказываясь от упоминания номера версии «5» в аббревиатуре HTML.

W3C ведет себя более сдержанно. Спецификация HTML5 позиционируется консорциумом как перспективная замена стандартам HTML 4.01, XHTML 1.0 и DOM2HTML. Множество предложенных WHATWG технологий, имеющих, скажем прямо, косвенное отношение к HTML, W3C обособил в отдельные спецификации, получившие самостоятельное развитие в соответствии с традиционным многоступенчатым сценарием доработок и ожидаемым утверждением в качестве рекомендаций в отдаленной перспективе.

Впрочем, описанные различия в подходах не таят в себе каких бы то ни было фундаментальных противоречий, заметно сказывающихся на интересах производителей браузеров, веб-разработчиков и конечных пользователей. Тот же W3C, когда дело не касается строгого языка официальных спецификаций, продвигает под флагом HTML5 все многообразие смежных технологий. И тут, уже, в сущности, не так важно, является ли главным элементом этого флага пресловутая цифра «5». :-)

Конец не начинавшейся эпохи

Как уже отмечалось, до поры до времени W3C и вместе с ним все профессиональное сообщество веб-разработчиков связывали большие надежды с XHTML. В сущности, еще совсем недавно, несколько лет тому назад, веб-разработчики прогрессивных взглядов верили в то, что рано или поздно XHTML в самом деле воцарится на планете и заменит собой «классический» HTML. Жизнь, однако, распорядилась иначе.

Что должно принципиально измениться с внедрением HTML5?

Нам предлагают единый язык разметки, в котором можно использовать два вида синтаксиса — достаточно вольный HTML-ориентированный и строгий XML-ориентированный. Документы, создаваемые с использованием HTML-синтаксиса, должны иметь тип text/html и обрабатываться HTML-парсером. Документы, использующие XHTML-синтаксис, должны использовать пространство имен http://www.w3.org/1999/xhtml (как и прежние версии XHTML), отдаваться сервером с указанием MIME-типа application/xhtml+xml и обрабатываться XML-парсером. Это называется XHTML5. (Где же XHTML3 и XHTML4? А нету. Запутывают нас, как только могут. :-))

С XHTML5, вроде бы, все ясно. (И, в частности, то, что использоваться на практике он будет, скорее всего, в единичных, почти экзотических случаях при разработке каких-нибудь весьма специальных веб-приложений.) А чем грозит нам «обычный» HTML5? Попробуем сформулировать ключевые особенности.

Во-первых, язык HTML5, в отличие от HTML 4.01, никак не связан с SGML, будучи определенным в терминах DOM. Это избавляет нас от разнообразных формальностей, требуемых с точки зрения совместимости с правилами SGML. В частности, конструкция <!DOCTYPE html>, которую требуется помещать в самом начале HTML-документа, теперь преследует единственную цель — переключение браузеров в режим соответствия стандартам (standards mode). В XHTML5-документах доктайп можно вообще не использовать.

Во-вторых, HTML5 не утрачивает совместимости с предыдущими версиями HTML и устаревшими браузерами. Правда, на данном этапе приходится при помощи CSS явно указывать display: block для новых структурных элементов (таких как <section>, <article> и им подобных), а Internet Explorer’у до восьмой версии включительно «скармливать» даже особый скрипт, создающий в DOM новые элементы HTML5 как таковые. Но, в любом случае, самое худшее, на что способен браузер — это просто проигнорировать незнакомые теги разметки, тогда как в случае гипотетического сценария массового внедрения XHTML говорить о текстуальной доступности контента для пользователей устаревших браузеров не пришлось бы.

В-третьих, спецификация HTML5 детально, в мелочах расписывает правила обработки документов, что должно привести к одинаковым последствиям одинаковых ошибок кода разметки веб-страниц в различных браузерах. Это, по-видимому, весьма разумный компромисс между чрезвычайной вольностью интерпретации ошибок браузерами, свойственной уходящей эпохе HTML 4.01 (и использующихся аналогичным образом XHTML 1.0 и 1.1) и полным отсутствием у разработчика права на ошибку, возведенным в абсолют «истинным» XHTML.

В-четвертых, HTML5 позволяет использовать SVG- и MathML-вставки (каждый из упомянутых языков, напомним, является подмножеством XML и предполагает соответствующие правила обработки) внутри HTML-документов, имеющих тип text/html.

В общем, следует признать, что HTML5 — шаг вперед не только по сравнению с HTML 4.01, но и в сравнении с бескомпромиссным и оторванным от жизни «истинным» XHTML