XHTML, часть 2: HTML на грани кризиса

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

Строго говоря, для создания полнофункциональных информационных сайтов было вполне достаточно возможностей HTML уровня (версии) 2.0, ставшего официальной рекомендацией W3C (World Wide Web Consortium, Консорциум Всемирной паутины; некоммерческая организация, основанная Тимом Бернерсом-Ли в 1994 г. и возложившая на себя нелегкое бремя стандартизации веб-технологий; см. http://www.w3.org/) в 1995 г. Стандарт HTML 2.0 можно назвать своего рода классикой жанра.

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

«Классическая» эпоха, однако, продержалась недолго. Шумное вторжение коммерции в Интернет в середине 1990-х повлекло за собой качественное изменение специфики Всемирной паутины — имиджевым сайтам компаний потребовалось яркое, броское, запоминающееся и даже местами навязчивое оформление страниц, а кроме того — их константный внешний вид в различных браузерах. HTML 2.0 никак не мог обеспечить всего этого.

Но, как известно, кто платит, тот и заказывает музыку… Главный на тот момент производитель браузеров, компания Netscape, почувствовав конъюнктуру рынка, пожертвовала логической стройностью HTML в угоду сиюминутным тенденциям. Чуть позже «подсуетилась» вездесущая Microsoft, и между этими двумя компаниями разгорелась нешуточная «гонка вооружений» — каждый производитель стремился встроить в свой браузер поддержку как можно большего количества разнообразных элементов HTML, отвечающих за визуальное представление информации (к примеру, позволяющих изменять цвет шрифта и фона страницы, позиционировать и выравнивать текст, воплощать эффекты «бегущей строки» и мигающего текста и т. п.), что, разумеется, шло наперекор официальным рекомендациям W3C и являлось злостным нарушением идеологии структурной разметки.

Чтобы как-то повлиять на ситуацию и привести к общему знаменателю порочные инициативы Netscape и Microsoft, в 1997 г. W3C в спешке, под существенным нажимом Microsoft, утвердил рекомендацию HTML 3.2, вобравшую в себя, что называется, «по факту» введенные в оборот участниками состязания элементы визуального форматирования, но в то же время по-прежнему предполагавшую вольность их интерпретации агентами пользователя.

Эта временная мера не сильно помогла — браузеры Netscape Navigator и Microsoft Internet Explorer по-прежнему изобиловали множеством расширений — индивидуальных элементов HTML, никак не представленных в официальном DTD, и по мере развития этих программ несовместимости только продолжали накапливаться.

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

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

Артемий Ломов