Главная » Полезные статьи » HTML-верстка » Главный секрет HTML5
Распечатать статью

Главный секрет HTML5

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

И тем не менее, HTML5 повсюду. Даже там, где его не ждали. Даже там, где нет модного короткого доктайпа <!DOCTYPE html> (кстати, тоже без цифры 5), даже без модных «семантичных» (хотя об их смысле не всегда могут договориться сами разработчики спецификаций, не говоря уже о простых вебмастерах) элементов типа <article> и <nav>. Даже в тех браузерах, где эти новые теги и не работают без пинка. Как это может быть?

Разгадка в том, что других сортов HTML, кроме HTML5… не существует еще больше. По крайней мере, в реальности, а не на бумаге.

В чем проблема старых языков разметки?

Любой язык работает (передает информацию) лишь тогда, когда является общим для отправителя и получателя, когда они трактуют его одинаково. Например, как узнать, что внутри коробочки с подписью «Gift» — подарок или яд? Нужно знать, на каком языке подписал ее отправитель — на английском или на немецком.

А основные «получатели сообщений» на языке (X)HTML — это браузеры. Так вот: ни один браузер не «понимает» на 100% того, что заложено в старых версиях типа HTML4 и XHTML1 так, как это там задумывалось.

Язык HTML4.0x (как до него HTML2–3.2) был описан на базе более общего языка SGML — своего рода «конструктора» для языков разметки, полного вольностей и неочевидностей. Например, кроме неявного закрытия (и даже открытия) тегов в нем была возможность сокращенной записи тега — <tag/содержимое тега/ (именно так: первым слешом заканчивается открывающий тег, а второй слеш стоит вместо закрывающего, и никаких угловых скобок больше не нужно!). Был особый смысл у двойного дефиса в комментариях и т.д. Но вот перекрытия тегов (<a><b>…</a></b>), вопреки популярной легенде, даже SGML не разрешал.

Но парсить (разбирать) даже правильный SGML, из-за всей этой сложности, было адом. Вдобавок, древние кодеры (да и немалый процент нынешних) писали не на правильном HTML, а на каком-то его «олбанском» диалекте). Поэтому браузеры тоже «научились» понимать HTML «по-своему». Например, тег — только то, что в угловых скобках, а слеш в открывающем теге — «глюк», который нужно игнорировать. Кстати, именно благодаря этому страницы, написанные по правилам XHTML, отображаются в HTML-браузерах как задумано (как минимум, почти). Потому что, разбирай их браузеры по SGML-правилам — все эти концевые слеши в <br/>, <img/> и т.п. воспринимались бы как конец тега, и на экран посыпались бы значки «>»!

Кстати, про XHTML. Появился он именно как ответ на сложность SGML-парсинга, на волне моды на XML. XML — тоже обобщенный, универсальный «конструктор» языков разметки, основанный на всё том же SGML, но упрощенный до предела, «вычищенный» от всех вольностей и почти всех неоднозначностей. Открыть тег — только <tag>, закрыть — </tag>, пустой элемент — <tag></tag> или <tag/>, и т.д. А нарушение любого из этих правил — расстре отказ от дальнейшего разбора кода вообще. И первая версия XHTML была ничем иным, как буквальным переводом HTML4.01 в синтаксис XML — вплоть до набора тегов и атрибутов для каждой разновидности, с точностью до регистра. В 1.1 этот набор попытались раскидать по смысловым модулям, но суть осталась той же.

Разработчики XHTML понимали, что браузеры сразу на XML-разбор не перейдут, что какое-то время странички придется разбирать по-старому. И предусмотрели в спецификации целый раздел с правилами, соблюдение которых делало странички худо-бедно понятными для старых браузеров (тех самых, не понимающих SGML — иначе совместимость «накрылась» бы сразу, но всё равно по умолчанию она не гарантировалась!). Естественно, ни о каких преимуществах XML (простой разбор, интеграция с другими языками, проверка ошибок и т.п.) речь в этом случае не шла — не до жиру. Да и с полноценным XHTML на деле всё оказалось не так уж радужно, как в теории (у браузеров были проблемы с поддержкой скриптов в нем, фатальные ошибки могли возникнуть по вине файрволла, криво вырезающего баннеры, и т.п.). Вот и получилось, что странички «разговаривали» кто на чём — кто на ломаном HTML4, кто на ломаном (во всех смыслах) XHTML1 — а браузеры пытались понять их, как могли (и часто понимали совсем не так, как задумывал автор).

Красная пилюля

И вот WHATWG собрались и положили конец безобразию. А именно взяли и написали свой алгоритм разбора. Чуть сложнее XML, но намного проще SGML, и не привязанный ни к какому «конструктору» типа них, зато максимально приближенный к реальному поведению браузеров. Ну и с запасом на будущее.

HTML5 Logo

И все новые браузеры (FF4+, Chrome 7+, Opera 11.6+ и IE10+) разбирают любые странички с типом text/html (что бы ни стояло у них в доктайпе) по этому новому универсальному алгоритму. А все старые — по очень похожему на него. Они могут не знать новых тегов, но по крайней мере концевые слеши понимают точно так же, потому что новый алгоритм сам во многом списан с них. Вот и получается, что «ультрановый» HTML5, который «еще далеко не стандарт», на самом деле гораздо ближе к реальности, чем «старые и проверенные» HTML4 и XHTML1!

Таким образом, даже если вы не используете ни одного нового модного тега — на самом деле вы пишете HTML5. Потому что скорее всего (а через полгода-год — почти гарантированно) браузеры поймут эту страничку как HTML5. Даже если у нее доктайп старой версии. Больше того — доктайпы XHTML 1.0 Strict, XHTML 1.1 или HTML4.0x Strict официально разрешены для HTML5. Т.е. HTML5 с ними может быть валиден! Вот пример из портфолио автора этого сайта (чтоб далеко не ходить). Валидатор, конечно, удивленно таращится на лишние буквы в доктайпе — но это не ошибка, а всего лишь предупреждение.

Так что HTML5 — это не короткий доктайп и тем более не модные новые теги. Это прежде всего единообразие понимания страниц, понемногу приходящее на смену старому разнобраузерному бардаку. И оно не спрашивает, готовы вы к нему или нет, собираетесь вы на него «переходить» или хотите продолжать «по старинке» — оно просто наступает. Как любое будущее.

Шумовые эффекты

А как же все эти замечательные фичи, о которых только и трещат блоги и твиттеры в вебмастерском сообществе, о которых наперебой заливаются восторженные статьи, а Эпл, Гугл и Микрософт как один штампуют умопомрачительные рекламные презентации, спросите вы? Все эти canvas-ы, drag-and-drop’ы, локальные хранилища, слайдеры и выпадающие календарики, произвольные контекстные меню, wysiwyg-редактирование, Web Workers, Web Sockets и всякий прочий кроссдоменный AJAX? А эти фичи тоже просто есть (хотя и не везде пока). И многие из них не имеют никакого отношения к спецификации HTML5, а некоторые и никогда не имели. Часть из них входит в спецификацию «живого стандарта HTML», разрабатываемую WHATWG (которая никогда не будет закончена совсем, но в любой момент считается достаточно готовой для реализации!), часть не входит даже туда. И вообще большинство этих фич относится не к HTML даже, а к DOM и Javascript).

А что маркетологи и рекламисты объединяют это всё в одну кучу под звучным названием «HTML5″ — так это их работа, придумывать звучные слова для запудривания мозгов не разбирающимся в теме людям, разве можно за это на них обижаться, в самом деле?

Тем более нам. Тем более теперь, когда мы-то уже знаем главный секрет HTML5… )

Источник:  css-live.ru
Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи