Свою историю HTML начинает с 1986 года, когда Международной организацией по стандартизации (ISO) был принят стандарт озаглавленный "Standard Generalized Markup Language" - SGML. Этот стандарт был посвящен описанию обобщенного мета языка, который позволял строить системы логической структурной разметки любых разновидностей текстов. Он соответствовал международному стандарту ISO 8879.

Создатели SGML стремились к тому, чтобы размеченный текст могла без труда интерпретировать любая программа, работающая на разных компьютерных платформах и устройствах вывода.

SGML является не готовой системой разметки текста, а определяет лишь синтаксис записи элементов разметки – тегов и их атрибутов, а также правила определения новых тегов и указания структурных отношений между ними.

Идеология SGML повлияла на многие компьютерные разработки, однако сам по себе язык не получил обширного распространения.

В 1991 году, британским ученым Тимом Бернерсом Ли, сотрудником Европейского института физики частиц (CERN) в Женеве, была разработана система передачи гипертекстовой информации через интернет. А за основу нового языка был взят SGML. Язык разметки гипертекста был назван - HTML (Hyper Text Markup Language) и он является до сих пор самым известным из приложений SGML. HTML в первую очередь был разработан для обмена научной и технической документации для использования людьми, не являющимися специалистами в области верстки. Путем определения небольшого набора структурных и семантических элементов, получались достаточно простые и в тоже время красиво оформленные документы. HTML успешно справился с проблемами SGML.

Как и положено изначально язык HTML разделял все особенности идеологии SGML. Но в 1993 году появляется версия языка HTML 1.2, которая имела сорок с небольшим тегов, три из которых не рекомендованы к использованию, так как указывали на физические параметры предоставления документа, что противоречило идеологии SGML. Вся разметка была логической и только в описательной части стандарта можно было увидеть что-то типа ”в графических браузерах действие этого тега может передаваться жирным начертанием”.

Программа Mosaic была единственной в то время браузером поддерживающим графические возможности. Она была разработана в Национальном центре суперкомпьютерных приложений США (National Center for Supercomputer Applications - NCSA), там же, кстати, была разработана WWW (World Wide Web). По этой причине никаких противоречий между официальными стандартами и их реализацией в браузерах тогда не существовало.

В апреле 1994 года был образован Консорциум W3C (World Wide Web Consortium). Так как официальной спецификации HTML 1.0 не существовало, W3C начал заниматься подготовкой спецификации HTML следующей версии. Но чтобы стандартная версия отличалась от всех предыдущих, ей сразу присвоили номер 2.0. Разработка спецификации HTML 2.0 шла не спеша и лишь в сентябре 1995 года она была утверждена. Из больших дополнений был добавлен лишь механизм форм для отсылки информации с компьютера пользователя на сервер.

Тем временем Консорциум W3 в параллель со спецификацией 2.0 занимался обсуждением HTML 3.0. Она была предложена в марте 1995 года. Третья версия предлагала много новых возможностей: поддержка таблиц, обтекание изображения текстом, отображение сложных математических формул, примечания. Поддержка этого стандарта браузерами того времени была не удовлетворена.

Авторы HTML 3 добавили поддержку нового средства - иерархические стилевые спецификации (Cascading Style Sheets, CSS). Это нововведение нужно было для того, чтобы разрешить назревшее к тому времени противоречие между идеологией структурной разметки и потребностями пользователей, которым в первую очередь нужно было гибкость и обширные возможности визуального представления. CSS имеет свой синтаксис и является формально независимой от HTML.

Следующей версией HTML стала 3.2 и в ней были опущены многие нововведения из версии 3.0.

18 декабря 1997 года бала принята четвертая версия HTML. Она содержала как и третья много элементов, специфичных для отдельных браузеров. Хотя в HTML 4.0 произошла чистка элементов из предыдущих версий спецификаций. Многие элементы были помечены как устаревшие и не рекомендуемые к использованию. Вместо них рекомендовалось использовать таблицы стилей CSS.

HTML 4.01 утвердили 24 декабря 1999. Изменения принятые в нем были более значительные, чем, кажется на первый взгляд.

Сейчас W3C занимается разработкой пятой версии языка HTML. Ее черновой вариант стал доступен 20 ноября 2007 года.

В параллель ведется также разработка XHTML (Extensible Hypertext Markup Language) - расширяемый язык разметки гипертекста. В нем предъявляются более строгие требования к синтаксису, чем в HTML. XHTML 1.0 был утвержден 26 января 2000 года в качестве рекомендации W3C. Вариант XHTML 1.1 одобрен в качестве рекомендации консорциума 31 мая 2001года.

Со спецификациями HTML всегда можно ознакомиться на официальном сайте Консорциума W3C по адресу http://www.w3c.org . Спецификация, предложенная W3C должна быть управляющей и направляющей, обеспечивая одинаковую форму представления информации различными браузерами. В реале с этим не все так хорошо и не всегда различные браузеры отображают одну страницу одинаково. Но это дает стимул к усовершенствованию возможностей браузера и уточнения спецификации. Этот процесс идет непрерывно.

Начну, пожалуй, с начала..

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

Теперь о командах - их называют дескрипторами, но чаще - тегами.

Вернемся к нашей первой страничке.. итак мы написали:



Моя первая страничка


Привет мир!!!


Так вот то что написано между <…> - называют тегами они не видны читателю, заглянувшему на Вашу страницу, зато хорошо видны браузеру, который наткнувшись на тег понимает его как сигнал к тому, что далее будет документ, который необходимо прочитать и вывести на монитор в нужном виде.. а вот тег говорит о том что документ закончился и от него, то бишь браузера, больше ничего не требуется и он может отдыхать с чистой совестью.

Так что же мы написали? и как это читает браузер?

Мысли браузера:

- начало документа.. опять работы привалило..
- смотрим словарик английского переводим "голова" …в голове моей опилки не беда!! ... здесь указывается основная служебная информация о документе.. ну и что они там от меня хотят?
</b> - <i>"название" значит.. это в шапке окна нужно написать его название: </i><br><b>Моя первая страничка </b> - <i>опять чайник тренируется.. </i><br><b> - все название закончилось.. можно идти дальше..
- ага и в голове кроме названия больше никаких вздорных мыслей не держим..
- "тело" документа всё что написано ниже выставляем на всеобщее обозрение
Привет мир!!! - как мило! Достали уже!!!

- переносим текст на следующую строчку.. я даже догадываюсь что в ней будет...
Меня зовут (здесь Ваше имя), это моя первая страничка! - ну да так и есть.. ничего пооригинальнее придумать не могут..
- что всё что ли? Больше ничего не отображать?
- ну вот и конец!! Не будить, не кантовать, при пожаре выносить первым!!

Вот так примерно и происходит чтение нашей странички.. Как видите браузер довольно своенравный тип, поэтому команды ему нужно подавать чёткие и ясные, иначе он разругается.. причем в слух.. а по сему запомним следующие вещи:

1) Необходимо раз и навсегда запомнить что если есть открывающий тег <…> то обязательно должен быть и закрывающий

Хотя есть и исключения как например у нас тег
- он закрытия не требует потому что говорит лишь о том, что следует писать с новой строки. Кстати попробуйте добавить еще пару тройку таких же перед строчкой "Меня зовут.." и Вы увидите, что в результате она заметно опустилась вниз.. (Ну естественно в блокноте сохраните изменения, а в браузере нажмите кнопку "обновить")

2) Все документы должны иметь вот такой шаблон кода:

- начало документа
- начало головы
- закрытие головы
- начало тела
- закрытие тела
- конец документа

Данные теги являются обязательными! Писать их необходимо всегда для каждой новой странички, и только в таком порядке! Не пытайтесь перевернуть всё с ног на голову..

3) О порядке:

Открывающий и закрывающий тег по типу <…> представляет собой своего рода ёмкость, ящик в который могут складываться другие теги - ящички поменьше.. следовательно, согласно логики документ должен выглядеть так:

<Тег "большой ящик">
<Тег "ящик средний">
<Тег "ящик маленький">
содержание


Если писать, например, так:

<Тег "большой ящик">
<Тег "ящик средний">
<Тег "ящик маленький">
содержание



То получится белиберда, которая в голове не укладывается, "большой" уже закрыт, а из него "торчит" "маленький", который заперт в "среднем", а "содержание" рассыпалось везде.. Такое даже человеку трудно представить, что уж там про браузер говорить.. Чётко структурируйте код Вашей странички иначе ничего работать не будет..

Ну вот мы научились писать простой текст, начало положено! в следующей главе я расскажу о том, что с ним можно сделать..

    При написании сайта создайте папку в любом удобном месте на Вашем жёстком диске, называйте как угодно, лишь бы понятно было.. в эту папку сохраняете Ваши странички, присваивая им осмысленные имена.. варианты типа ааа.html, 123.html приведут к беспорядку и путанице… На данном этапе этот совет не покажется дельным, но в дальнейшем это значительно облегчит Ваш труд. Представьте к примеру хотя бы 20-30 таких файлов названия которых нужно держать в голове, чтобы связать их перекрёстными ссылками. Порядок, прежде всего!

    При написании кода советую придерживаться "хорошей манере письма", то есть писать теги "лесенкой" по мере вложенности одного тега в другой. Со временем Вы поймёте что читать код написанный вот так:



    Моя первая страничка


    Привет мир!!!

    Меня зовут Карлсон, это моя первая страничка!

    Значительно легче, чем так:



    Моя первая страничка


    Привет мир!!!

    Меня зовут Карлсон, это моя первая страничка!

    И уж тем более чем вот так:

    Моя первая страничкаПривет мир!!!
    Меня зовут Карлсон, это моя первая страничка!

    Хоть это и дело привычки.. всё же лучше привыкнуть писать "разборчиво".

Тим Бернерс-Ли
Создатель языка HTML

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

HTML (HyperText Markup Language) — язык разметки гипертекста. Сайты создаются с помощью языка HTML .

Создателем языка HTML, является выдающийся британский учёный — Тим Бернерс-Ли .

Версии HTML

До 1995 года официального стандарта языка HTML не существовало, но было несколько не стандартизированных версий языка HTML. 22 сентября 1995 года, создали первый официальный стандарт языка HTML, он сразу получил номер 2.0 (HTML 2.0).

14 января 1997 года появилась версия HTML 3.2,
18 декабря 1997 года HTML 4.0,
24 декабря 1999 года HTML 4.01

В 00-х годах, также существовал язык разметки XHTML (то же самое что и HTML, но с более строгим синтаксисом). XHTML предназначался для того, чтобы подготовить вебмастеров, к строгим правилам разметки языка XML . Благодаря строгой разметке, различные программы и сервисы понимающие XML, могут эффективно обрабатывать данные на сайтах написанные на XHTML, также в этом языке появилась возможность внедрять SVG, MathML, CML и другие производные языка XML.

XHTML существовал в трёх версиях в строгой, переходной и frameset, в переходной можно было использовать устаревшие теги такие как center или font . На данный момент, разработку языка XHTML закрыли.

Современной версией языка HTML, является HTML5 , именно эту версию мы и будем изучать в данном учебнике. HTML5 более удобен чем предыдущие языки и вобрал в себя все их преимущества, также в нём уделено большое значение семантике.

Язык CSS и HTML

Начиная с 4 версии языка HTML, изменять внешний вид HTML тегов рекомендуется только с помощью языка CSS. Поэтому языки HTML и CSS желательно изучать параллельно. В учебнике по HTML для начинающих мы также ознакомимся с начальными аспектами языка CSS, ну а для продолжения изучения вы можете почитать и сам

История HTML

Язык HTML был создан в 1991 году, британским учёным Тимом Бернерсом-Ли. Тогда Тим работал в CERN (Европейская организация по ядерным исследованиям) и сайтов еще не существовало. Ученые работавшие в данном центре нуждались в надежном и эффективном способе обмена информацией.

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

Изначально в HTML-документах (на страницах сайтов), можно было размещать только текстовую информацию, возможность добавления медиафайлов: изображений, видео и аудио появилась чуть позже.

На данный момент, поддержкой и развитием языка HTML занимается W3C (World Wide Web Consortium) — консорциум всемирной паутины. W3C состоит из различных рабочих групп, которые внедряют и развивают интернет стандарты и технологии.

Таблица распространения браузеров

Файлы HTML, обычно имеют расширения .html или .htm . Эти файлы можно просматривать с помощью интернет-браузеров.

Таблица имён браузеров и количество их распространения в мире, на январь 2016 года, в порядке уменьшения:

Браузер Распространение
Google Chrome 54,22 %
Internet Explorer 14,67 %
Mozilla Firefox 14,61 %
Safari 9,43 %
Opera 1,96 %
Прочие 5,11 %

Перевод: Влад Мержевич

Недавно я наткнулся на цитату разработчиков Mozilla о напряженности, связанной с разработкой стандартов :

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

Держите эту цитату в глубине сознания и позвольте мне объяснить про становление HTML5.

MIME-типы

Эта книга об HTML5, а не о предыдущих версиях HTML и не о версиях XHTML. Но чтобы понять историю HTML5 и мотивацию, стоящую за ним, вы должны в первую очередь понимать несколько технических моментов. В частности, MIME-типы.

Каждый раз, когда ваш браузер запрашивает страницу, веб-сервер посылает «заголовки» перед отправкой фактического кода страницы. Эти заголовки, как правило, невидимы, хотя есть инструменты веб-разработчика, которые делают их видимыми, если вам интересно. Заголовки важны, потому что они говорят вашему браузеру, как следует интерпретировать разметку страницы. Наиболее важный заголовок называется Content-Type и выглядит так:

Content-Type: text/html

«text/html» называется «тип содержимого» или «MIME-тип» страницы. Этот заголовок определяет только, что это в действительности за ресурс и как его отображать. Изображения имеют свои собственные MIME-типы (image/jpeg для JPEG, image/png для PNG и т.д.). Файлы JavaScript имеют собственный MIME-тип. CSS имеют собственный MIME-тип. Все имеют собственный MIME-тип. Интернет работает на MIME-типах.

Конечно, в реальности все намного сложнее. Первое поколение веб-серверов (я говорю про веб-сервера с 1993 года) не посылало заголовок Content-Type, потому что его не было (он не был изобретен до 1994 года). Из соображений совместимости при возврате даты на 1993 год, некоторые популярные браузеры игнорируют заголовки Content-Type при определенных обстоятельствах (это называется «сниффинг контента»). Но, как правило, все, что вы когда-нибудь просматривали в Сети - HTML-страницы, изображения, скрипты, видео, PDF и др. - отдавалось вам с определенным MIME-типом в заголовке Content-Type.

Пока отложите вашу шляпу. Мы еще вернемся к этому.

Длинное отступление о том, как делаются стандарты

Почему мы используем элемент ? Это не тот вопрос, который вы слышите каждый день. Очевидно, кто-то его создал. Такие вещи не появляются просто ниоткуда. Каждый элемент, каждый атрибут, каждая особенность HTML, которую вы когда-либо использовали - кто-то создал их, решил, как они должны работать и написал все это. Эти люди не боги и они не безупречны. Они обычные люди. Умные люди, уверен. Но просто люди.

Одна из замечательных вещей в стандартах, разработанных «в открытую» это то, что вы можете вернуться назад во времени и ответить на разные вопросы. Обсуждения происходят через список рассылки, которые, как правило, архивируются и публично доступны. Так что я решил немного заняться «почтовой археологией», чтобы попытаться ответить на вопрос, «Почему мы используем элемент ?». Я должен вернуться назад до того, как появилась организация под названием Консорциум Всемирной паутины (World Wide Web Consortium, W3C). Я вернулся в первые дни Сети, когда количество веб-серверов можно было пересчитать по пальцам двух рук и может быть парой пальцев ног.

Есть ряд опечаток в следующих цитатах. Я решил оставить их нетронутыми для исторической точности.

Я хотел бы предложить новый дополнительный тег HTML:

Обязательный аргумент SRC="url"

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

(Здесь нет закрывающего тега, это всего лишь одиночный тег.)

Браузеры должны проявлять гибкость в отношении графических форматов, которые они поддерживают. Xbm и Xpm хорошо поддерживаются, к примеру. Если браузер не может интерпретировать данный формат, он может делать, что хочет (X Mosaic по умолчанию выведет растровое изображение в качестве заполнителя).

Это потребует функциональности для X Mosaic, у нас это работает, и мы, по крайней мере использовали это внутренне. Я, конечно, открыт для предложений, как это должно обрабатываться в HTML, если у вас есть идея получше, чем предложенная, пожалуйста, дайте мне знать. Я понимаю, туманно написал о форматах изображений, но я не вижу альтернативы, чем просто сказать «пусть браузер делает что может» и ждать идеального решения (MIME, когда-нибудь, возможно).

У меня есть нечто похожее в Midas 2.0 (используется здесь в SLAC и должен быть публичный релиз на этой неделе), за исключением, что все имена разные и есть дополнительный аргумент NAME="name". Он почти в точности имеет ту же функциональность, что и предлагаемый вами тег IMG, например.

Идея параметра name позволит браузеру устанавливать «встроенные» изображения. Если name совпадает со «встроенным» изображением, тогда оно используется вместо того, чтобы пойти и получить изображение. name также может выступать в качестве подсказки для «строчного режима» браузеров, чтобы какой-нибудь символ положить в месте изображения.

Я не очень заботился о параметрах или именах тегов, но было бы разумно, если бы использовали те же самые вещи. Я не очень забочусь о сокращениях, так что, почему не IMAGE= и не SOURCE=. Я предпочитаю все же ICON, поскольку он проще, чем IMAGE и должен быть маленьким, но, возможно, ICON перегруженное слово?

Midas другой ранний браузер, современник X Mosaic. Он кроссплатформенный и запускался на Unix и VMS. SLAC относится к Стэнфордскому центру линейного ускорителя , сейчас Национальная ускорительная лаборатория SLAC, в котором запущен первый веб-сервер США (на самом деле первый веб-сервер за пределами Европы). Когда Тони написал это сообщение, SLAC был старейшим в WWW, у которого на веб-сервере размещалось пять страниц колоссальные 441 день.

Тони продолжает:

Пока мы в теме о новых тегах, у меня есть другая идея, несколько похожий тег, который я хотел бы поддержать в Midas 2.0. В принципе так:

Замысел в том, что второй документ вставляется в первый документ в месте, где этот тег встречается. В принципе, указанный документ может быть любым, но главная цель позволить изображениям (в данном случае произвольного размера) встраиваться в документы. Опять замысел такой, что с приходом HTTP2 форматы включаемых документов будут обсуждаться отдельно.

Несколько часов спустя после отправки сообщения Тони, ответил Тим Бернерс-Ли .

Я думал, что иллюстрации будут представлены так:

Иллюстрация

где значения отношений обозначают

EMBED Вставить сюда при наличии
PRESENT Показать, когда исходный документ представлен

Заметьте, что вы можете иметь их различные комбинации, и если браузер не поддерживает ни одно, он не ломается.

[Я] вижу использование этого как метод для выбора иконки средствами вложенных ссылок. Хммм. Но я не хотел бы специальный тег.

Это предложение не было реализовано, но атрибут rel еще здесь.

Было бы хорошо, если был способ указать тип содержимого, например.

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

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

Хотя изображения находятся в верхней части моего списка желаний, посередине типов в WWW браузерах, я не думаю, что мы должны добавлять специальные хуки для медиа по одному за раз. Что случилось с энтузиазмом по использованию механизма MIME?

Это не замена предстоящего использования MIME в качестве механизма стандартного документа; это обеспечение необходимой и простой реализации функциональности, который требуется независимо от MIME.

Давайте временно забудем о MIME, если это эфемерная проблема. Мое возражение было к обсуждению «как мы будем поддерживать встроенные изображения», а не «как мы будем поддерживать встроенные изображения в разных медиа».

В противном случае кто-то через неделю предложит «вставить новый тег » для аудио.

Не должно быть больших расходов при переходе от чего-то обобщенного.

Оглядываясь назад, беспокойства Джея выглядят обоснованными. Потребовалось чуть больше недели, но в HTML5 наконец добавлены новые элементы

Отвечая на исходное сообщение Джея, Дэйв Рэгетт сказал :

Точно! Я хочу рассмотреть весь диапазон возможных изображений/линий художественных типов наряду с обсуждением формата. Тим заметил про поддержку кликабельных областей внутри изображений, это тоже важно.

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

Посмотрите другие системы, которые имеют эти (довольно ценные) понятия, Andrew и Slate. Andrew построен со _вставками_, каждая из них имеет несколько интересных типов, таких как текст, точечный рисунок, графика, анимация, сообщения, электронные таблицы и т.д. Понятие произвольное рекурсивное вложение присутствует, так что вставка любого рода может быть вложена в любой другой вид, который поддерживает вложения. Например, вставка может быть встроена в любом месте текста текстового виджета или в любой прямоугольной области виджета рисования или в любой ячейке электронной таблицы.

Вот мое мнение. Лучший способ сделать изображения в WWW это использование MIME. Я уверен, PostScript уже поддерживает подтипы в MIME, и он делает очень красиво с совмещением текста и графики.

Но это не кликабельно, вы говорите? Да, вы правы. Я подозреваю, что ответ на это уже есть в Display PostScript. Даже если не добавлено в стандартный PostScript, это тривиально. Определите команду ссылке, которая задает URL и использует текущий путь как замкнутую область для кнопки. Поскольку PostScript хорошо имеет дело с путями, создание произвольной кнопки тривиально.

Display PostScript был экранной технологией рендеринга совместно разработанной Adobe и NeXT.

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

HTTP2 позволяет документу содержать любой тип, с которым пользователь сказал, что он может работать, а не только зарегистрированные MIME-типы. Так что можно экспериментировать. Да, я думаю, есть основания для PostScript-а с гипертекстом. Я не знаю, достаточно ли Display PostScript. Я знаю, Adobe пытается создать свой собственный PostScript-ориентированный «PDF», который будет иметь ссылки и быть читаться их проприетарным просмотрщиком.

Я думаю, что общий оверлейный язык для ссылок (на основе Hytime?) позволит гипертексту и графики/видео стандартам развиваться отдельно, что поможет обоим.

Пусть тег IMG включает INCLUDE и пусть он ссылается на произвольный тип документа. Или EMBED, если INCLUDE звучит как инклюд cpp, чтобы люди могли обеспечить исходный код SGML для построчного разбора - не так, как было задумано.

Вернемся к инлайновым изображениям еще раз - я близок к выпуску Mosaic 0.10, который поддерживает изображения GIF и XBM как уже упоминалось ранее...

Мы не готовы поддержать INCLUDE/EMBED в этой точке... Так что мы, вероятно, будем идти с (не ICON, поскольку не все инлайновые изображения могут обоснованно называться иконками). В настоящее время, инлайновые изображения не будут явно содержать content-type; в будущем, мы планируем сделать поддержку этого (наряду с общей адаптацией MIME). На самом деле процедура чтения изображений, которую мы используем в настоящий момент, выясняет формат на лету, так что расширение файла не так и важно.

Непрерывная линия

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

  • HTTP по-прежнему существует. HTTP успешно развивался с 0.9 в 1.0 и позже в 1.1. И еще развивается.
  • HTML по-прежнему существует. Это элементарный формат данных - он даже не поддерживает строчные картинки! - успешно развивался в 2.0, 3.2, 4.0. HTML это непрерывная линия. Кривая, узловатая, путаная линия, будьте уверены. Существовало много «мертвых ветвей» в эволюционном дереве, мест, где стандартно мыслящие люди опередили самих себя (и превзошли авторов и исполнителей). Но тем не менее. Мы здесь в 2010 году, а веб-страницы с 1990 года по-прежнему отображаются в современных браузерах. Я только что загрузил одну в браузер моего мобильника на новейшем Андроиде и мне даже не предложили «Пожалуйста, подождите, пока импортируется устаревший формат...».
  • HTML всегда был разговором между разработчиками браузеров, авторами, зубрилами стандартов и другими людьми, которые просто пришли и хотят поговорить об угловых скобках. Большинство успешных версий HTML были «ретро-спеками», догоняющими мир и одновременно пытающими подтолкнуть его в правильном направлении. Любой, кто говорит вам, что HTML должен быть «чистым» (вероятно, игнорируя разработчиков браузеров или игнорируя авторов или и тех и других) просто дезинформирует. HTML никогда не была чистым и все попытки очистить его были впечатляющие неудачными и могут только сравниться с попытки заменить его.
  • Ни один из браузеров с 1993 года не существует в любом узнаваемом виде. Netscape Navigator был заброшен в 1998 году и переписан с нуля для создания Mozilla Suite, от которого затем отделился Firefox. Internet Explorer начинал как скромный «с чего начать» в «Microsoft Plus! для Windows 95», где он шел в комплекте с некоторыми темами рабочего стола и игрой пинбол.
  • Некоторые из операционных систем с 1993 года все еще существуют, но ни одна из них не имеет отношение к современной Сети. Большинство «опытных» людей выходят в Интернет на ПК под управлением Windows 2000 или более поздней версии, на Маках под управлением Mac OS X, ПК под управлением некоторых вкусных Linux или портативных устройствах вроде iPhone. В 1993 году Windows была в версии 3.1 (и конкурирующей с OS/2), Маки управлялись System 7, Linux распространялся через Usenet.
  • Некоторые же люди по-прежнему во всем и по-прежнему участвуют в том, что мы теперь просто называем «веб-стандарты». Вот уже почти 20 лет. И некоторые занимались предшественниками HTML, возвращаясь в 1980-е годы и раньше.
  • Говоря о предшественниках... С конечной популярностью HTML и веба легко забыть тех, образовавших дизайн современных форматов и систем. Andrew? Intermedia? HyTime? И HyTime был не каким-то допотопным исследовательским проектом, это был стандарт ISO. Он был одобрен для использования в военных целях. Это был Большой Бизнес. И вы можете прочитать об этом сами... .

Но все это не отвечает на исходный вопрос: почему мы используем элемент ? Почему не элемент ? Или элемент ? Почему не гиперссылки с атрибутом include или некоторых комбинаций значений rel? Почему элемент ? Все очень просто, потому что Марк Андрессен реализовал его и реализованный код победил.

Это не означает, что все реализованные коды победили, в конце концов, Andrew и Intermedia и HyTime тоже были реализованы. Код необходим, но не достаточен для успеха. Я, конечно, не хочу сказать, что реализация кода раньше выпуска стандарта это лучшее решение. Элемент Марка не определяет основные графические форматы; не устанавливает, как текст должен его обтекать; не поддерживает альтернативный текст или запасной контент для старых браузеров. И 17 лет спустя мы еще боремся со сниффингом контента и он по-прежнему источник сумасшедшей уязвимости безопасности . И вы можете проследить все 17 лет назад, через Великие войны браузеров , назад до 25 февраля 1993 года, когда Марк Андрессен небрежно заметил: «MIME, когда-нибудь, возможно», а затем реализовал свой код, не смотря ни на что.

Хронология развития HTML с 1997 по 2004

В декабре 1997 года, World Wide Web Consortium (W3C) опубликовал HTML 4.0 и оперативно закрыл Рабочую Группу HTML. Менее чем через два месяца, отдельная Рабочая группа W3C опубликовала XML 1.0 . Спустя три месяца после этого, люди, которые управляют W3C, провели семинар под названием «Формируя будущее HTML», чтобы ответить на вопрос: « W3C отказался от HTML?» Это был их ответ:

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

W3C перезапустил Рабочую Группу HTML на создание этого «набора XML-тегов». Их первый шаг в декабре 1998 года был проект временной спецификации, которая просто переделывала HTML в XML без добавления каких-либо новых элементов и атрибутов. Эта спецификация позже стала известна как «XHTML 1.0 ». Она определила новый MIME-тип для документов XHTML - application/xhtml+xml . Однако для облегчения миграции существующих страниц HTML4, она также включила приложение C , которое «суммирует рекомендации по проектированию для авторов, желающих, чтобы их XHTML-документы отображались на существующих пользовательских агентах HTML». Приложение C говорит вам, что позволяет автору так называемых «XHTML» страниц, по-прежнему передавать их с MIME-типом text/html .

Следующая цель была веб-формы. В августе 1999 года та же Рабочая Группа HTML опубликовала первый проект XHTML Extended Forms . Она установила ожидания в первом абзаце:

После тщательного рассмотрения, Рабочая Группа HTML постановила, что цели следующего поколения форм не совпадают с сохранением обратной совместимости с браузерами, предназначенных для ранних версий HTML. Нашей целью является обеспечение чистоты новой модели форм (XHTML Extended Forms) на основе набора четко определенных требований. Эти требования описаны в данном документе и основаны на опыте с широким спектром приложений форм.

Несколько месяцев спустя «XHTML Extended Forms» был переименован в «XForms» и переехал в свою собственную Рабочую Группу. Эта группа работала параллельно с Рабочей Группой HTML и, наконец, опубликовала первую редакцию XForms 1.0 в октябре 2003 года.

Между тем, с переходом на XML полностью, Рабочая Группа HTML нацелилась на создание «следующего поколения HTML». В мае 2001 года она опубликовала первую редакцию XHTML 1.1 , в которой добавились только несколько незначительных особенностей вверху XHTML 1.0, но и устранилась лазейка «Приложения C». Начиная с версии 1.1, все XHTML-документы должны передаваться с MIME-типом application/xhtml+xml .

Все, что вы знаете об XHTML, неверно

Почему MIME-типы так важны? Почему я продолжаю возвращаться к ним? Три слова: драконовская обработка ошибок. Браузеры всегда были «снисходительны» с HTML. Если вы создали страницу HTML, но забыли тег , браузер все равно покажет страницу (некоторые теги неявно вызывают завершение и начало ). Вы должны подразумевать иерархическую вложенность тегов - они закрываются в обратном порядке - но если вы создадите код вроде , браузеры обработают его (так или иначе) и двинутся дальше без отображения сообщения об ошибке.

Как и следовало ожидать, тот факт, что «ломаная» разметка HTML работает в браузерах, позволило авторам создавать ломаные HTML-страницы. Много ломаных страниц. По некоторым оценкам, более 99% HTML-страниц в вебе сегодня, содержат, по меньшей мере, одну ошибку. Но так как эти ошибки не заставляют браузеры отображать видимые сообщения об ошибках, никто никогда их не исправляет.

W3C увидел в этом фундаментальную проблему с вебом и стал исправлять ее. XML, опубликованный в 1997 году, вырвался из традиции прощать клиентов и постановил, что все программы, которые потребляют XML должны рассматривать так называемые «синтаксические» ошибки как фатальные. Эта концепция провала на первой же ошибке стала известна как «драконовская обработка ошибок», подобно греческому лидеру Драконту , кто учредил смертную казнь за малейшее нарушение его законов. Когда W3C переформулировал HTML как словарь XML, он поручил, что все документы, передаваемые с новым MIME-типом application/xhtml+xml , будут зависеть от драконовской обработки ошибок. Если есть хотя бы одна ошибка синтаксиса на XHTML-странице - такая как забытый тег или неверно вложенные начальные и конечные теги - у браузеров не будет иного выбора, кроме как остановить обработку и показать сообщение об ошибке конечному пользователю.

Эта идея не везде популярна. При оценке нормы ошибок в 99% на существующих страницах, повсеместной вероятности отображения ошибок конечному пользователю и нехватки новых возможностей в XHTML 1.0 и 1.1, для оправдания затрат авторы в основном игнорируют application/xhtml+xml . Но это не означает, что они игнорировали XHTML в целом. О, определенно нет. Приложение С спецификации XHTML 1.0 дало авторам мира лазейку: «Сделайте что-то, что выглядит подобно синтаксису XHTML, но позвольте передавать это с MIME-типом text/html ». И это именно то, что тысячи веб-разработчиков сделали: они «обновились» до синтаксиса XHTML, но продолжили передавать с MIME-типом text/html .

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


. Но только небольшая часть из этих страниц передается с MIME типом application/xhtml+xml , который включает драконовскую обработку ошибок XML. Любая страница переданная с MIME-типом text/html - независимо от доктайпа, синтаксиса или стиля кодирования - будет обрабатываться с помощью «снисходительного» анализатора HTML, молча игнорируя любые ошибки разметки и никогда не оповещая конечных пользователей (или кого-то еще) даже если страница технически нарушена.

XHTML 1.0 включил эту лазейку, но XHTML 1.1 закрыл ее, а незавершенный XHTML 2.0 продолжил традицию требования драконовской обработки ошибок. Именно поэтому есть миллиарды страниц, которые утверждают, что они XHTML 1.0 и только горстка, которые утверждают, что они XHTML 1.1 (или XHTML 2.0). Так вы действительно используете XHTML? Проверьте свой MIME-тип (на самом деле, если вы не знаете, какой MIME-тип используете, я могу почти гарантировать, что вы еще используете text/html ). Пока вы не передаете ваши страницы с MIME-типом application/xhtml+xml , ваш так называемый «XHTML» является XML только по названию.

Конкурентное видение

В июне 2004 года W3C провел семинар по Веб-приложениям и составным документам . На этом семинаре присутствовали представители трех браузеров, компании по веб-разработке и другие члены W3C. Группы заинтересованных сторон, включая Mozilla Foundation и Opera Software, рассказали о своих конкурентных видениях будущего веба: эволюция существующего стандарта HTML 4 включает новые возможности для современных разработчиков веб-приложений.

Следующие семь принципов отражают то, что мы считаем наиболее важными требованиями для этой работы.

Обратная совместимость, понятный путь миграции Технологии веб-приложений должны базироваться на технологиях знакомым авторам и включающим HTML, CSS, DOM и JavaScript. Основные характеристики веб-приложения должны выполняться с использованием поведения, скриптов и таблиц стилей в IE6 сегодня, так что авторы имеют понятный путь миграции. Любое решение, которое не может быть использовано текущим пользовательским агентом без необходимых плагинов, вероятно не может быть успешным. Обработка ошибок правильности построения Обработка ошибок в веб-приложениях должна быть определена на уровне детализации, где пользовательские агенты не должны изобретать свои собственные механизмы обработки ошибок или реверсивное проектирование других пользовательских агентов. Пользователи не должны подвергаться авторским ошибкам Спецификации должны указывать точное поведение восстановления для каждого возможного сценария ошибки. Обработка ошибок должна по большей части определяться в терминах изящного устранения ошибок (как в CSS), а не как очевидный и катастрофический сбой (как в XML). Практическое использование Каждая функция, которая идет в спецификации веб-приложения, должна быть обоснована практическим использованием. Обратное не всегда верно: каждый вариант использования не обязательно гарантирует новую функцию. Использовать аргументы предпочтительнее на базе реальных сайтов, где авторы ранее применяли плохое решение для обхода ограничения. Скрипты остаются Но их следует избегать там, где может быть использована удобная разметка. Скрипты должны быть нейтральными к устройствам и представлениям пока это возможно в конкретных устройствах (например, если они не включены в XBL). Следует избегать профиля конкретного устройства Авторы должны иметь возможность полагаться на те же функции, которые выполняются в настольных и мобильных версиях одного и того же пользовательского агента. Открытый процесс Веб принес пользу, потому что разрабатывался в открытой среде. Веб-приложения будет ядром веба и их разработчик должен пребывать в открытости. Списки рассылки, архивы и проекты спецификаций должны быть постоянно видимыми для общественности.

В неофициальном опросе участников семинара спросили: «Должен ли W3C развивать декларативное расширение HTML и CSS и обязательно дополнять DOM для решения требований среднего уровня веб-приложений, в отличие от сложных API полноценной ОС? (предложил Ян Хиксон, Opera Software)». Голосовали 11 за, 8 против. В своем резюме семинара , W3C написал: «В настоящее время W3C не намерен предоставлять любые ресурсы сторонней теме неофициального опроса: расширение HTML и CSS для веб-приложений, помимо технологий, разрабатываемых в соответствии с уставом текущей Рабочей Группы W3C».

Столкнувшись с этим решением, у людей, которые предложили развивать HTML и HTML-формы, было только два варианта: отказаться или продолжить свою работу за пределами W3C. Они выбрали последнее и зарегистрировали домен whatwg.org , так в июне 2004 года родилась WHAT Working Group .

WHAT Working Group?

Что еще за, черт побери, WHAT Working Group? Я позволю объяснить это им самим :

Рабочая группа по разработке гипертекстовых приложений для веб (WHAT Working Group) это свободное, неофициальное и открытое сотрудничество производителей браузеров и заинтересованных сторон. Группа направлена на разработку спецификаций на основе HTML и связанных с ним технологий, чтобы облегчить развертывание совместимых веб-приложений с целью предоставления результатов организации по стандартам. Это предоставление затем будет основой работы по формальному расширению HTML в курсе стандартов.

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

Ключевая фраза здесь «без нарушения обратной совместимости». XHTML (исключая лазейку Приложения C) не является обратно совместимым с HTML. Он требует совершенно новый MIME-тип, который включает драконовскую обработку ошибок для любого контента передаваемого с этим MIME-типом. XForms не совместимы с формами HTML, потому что они могут использоваться только в документах, которые передаются с новым MIME-типом XHTML, это означает, что XForms также включают драконовскую обработку ошибок. Все дороги ведут в MIME.

Вместо выбрасывания более десяти лет вложений в HTML и создания 99% существующих веб-страниц непригодными, WHAT Working Group решила принять другой подход: документированы «прощающие» алгоритмы обработки ошибок, которые фактически используется браузерами. Браузеры всегда прощают ошибки HTML, но никто никогда не удосужился написать, как именно они это сделали. NCSA Mosaic имеет свои собственные алгоритмы для работы с неправильными страницами, а Netscape пытался соответствовать им. Затем Internet Explorer пытается состязаться с Netscape. Затем Opera и Firefox пытаются состязаться с Internet Explorer. Затем Safari пытается состязаться с Firefox. И так далее, вплоть до наших дней. На этом пути разработчики сожгли тысячи и тысячи часов, пытаясь сделать свой продукт совместимым с конкурентами.

Если это звучит как безумное количество работы, то потому, что так и есть. Вернее, было. Потребовалось пять лет, но WHAT Working Group успешно документировала, как парсить HTML так, что это совместимо с существующим веб-контентом. В окончательном алгоритме нигде нет шага, который устанавливает, что HTML должен остановить обработку и показать сообщение об ошибке конечному пользователю.

Пока происходило реверсивное проектирование, WHAT Working Group тихо работала над некоторыми другими вещами. Одна из них была спецификация, первоначально дублирующая Web Forms 2.0 и добавляющая новые типы полей в HTML-формы (вы узнаете больше о веб-формах в ). Другой проект спецификации называется «Web Applications 1.0», который включал много новых возможностей вроде холста для непосредственного рисования и встроенную поддержку аудио и видео без плагинов.

Назад в W3C

Два с половиной года W3C и WHAT Working Group в основном игнорировали друг друга. Хотя WHAT Working Group сосредоточила внимание на веб-формах и новых функциях HTML, Рабочая Группа W3C по HTML была занята XHTML версии 2.0. Но к октябрю 2006 года стало понятно, что WHAT Working Group подняла серьезный импульс, в то время как XHTML 2 по-прежнему томится в черновой форме и не был реализован в каком-либо серьезном браузере. В октябре 2006 года Тим Бернерс-Ли, основатель W3C, объявил, что W3C будет работать вместе с WHAT Working Group над развитием HTML.

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

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

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

Одной из первых вещей недавно организованной W3C HTML Working Group было решение переименовать «Web Applications 1.0» в «HTML5». И вот мы погружаемся в HTML5.

Постскриптум

В октябре 2009 года W3C закрыл Рабочую Группу XHTML 2 и выпустил заявление, объясняющее это решение:

Когда W3C анонсировал Рабочие Группы HTML и XHTML 2 в марте 2007 года, мы показали, что будем продолжать мониторинг рынка для XHTML 2. W3C признает важный четкий сигнал сообщества о будущем HTML.

Хотя мы признаем значение Рабочей Группы XHTML 2 на протяжении многих лет, после обсуждения с участниками руководство W3C решило устав Рабочей Группы, который истекает в конце 2009 года, не продлевать.

Выиграли от этого те, кто воплотил.

В 1989 году Тим Бернерс-Ли, сотрудник центра высоких технологий (CERN), предложил проект распределенной гипертекстовой системы под названием WWW (World Wide Web). Гипертекст - это текст, «который разветвляется сам по себе или выполняет действия по запросу». Изначально проект задумывался для того, чтобы объединить все информационные ресурсы CERN в единую распределенную систему гиперссылок, но данная технология, оказалась настолько перспективной, что впоследствии, благодаря простоте и использованием уже известных на тот момент сетевых протоколов (TCP и IP), ляжет в основу известной на егодняшний день Всемирной паутине.

World Wide Web - первая успешно реализованная сетевая технология, удобство применения привели к росту числа пользователей WWW и привлекли внимание коммерческих компаний, благодаря чему количество пользователей увеличивается геометрически и по сей день.

Одним из основных составляющих World Wide Web стал язык гипертекстовой разметки HTML , разработанный Тимом Бернерсом-Ли на основе стандарта языка разметки печатных документов -- SGML (Standard Generalised Markup Language, стандартный обобщенный язык разметки ).

Благодаря созданию HTML были решены две задачи: дизайнеры гипертекстовых баз получили очень удобный инструмент для создания гипертекстовых документов; этот инструмент получился достаточно мощным, чтобы отразить имевшиеся на тот момент представления об интерфейсе пользователя гипертекстовых баз данных.

Первая задача была решена за счет выбора теговой модели(см. главу 2) описания документа. Такая модель широко применяется в системах подготовки документов для печати.

Для реализации HTML документов был выбран текстовый файл, так как помимо существования стандарта Z39.50 (который подразумевал простой текстовый файл, соответствующий кодировке US ASCII, как единицу хранения), создание и редактирование такого файла возможно в любом текстовом редакторе.

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

HTML 1.0 предназначался скорее для презентации самого языка. HTML 2.0 уже определял четкую архитектуру документов. HTML++ предоставил больше возможностей для составления научных статей и формирования таблиц. HTML 3.2 собрал воедино нововведения и наработки предыдущих версий, позволил выполнять на странице написанный на Java код. В HTML 4.01 . расширены возможности работы с мультимедиа, была введена интеграция с таблицами стилей CSS, языкиами программирования JavaScript и VBScript.

Но в 1998 году язык HTML был признан устаревшим (по сравнению с XML) и W3C решили заморозить язык разметки на версии 4.01. Затем был разработан язык XHTML, сочетающий в себе структуру HTML и синтаксис XML. Были разработаны два стандарта XHTML Transitional и XHTML Strict Первый был разработан для упрощения перехода на устоявшийся стандарт XHTML strict. Затем началась работа над XHTML 2.0. При разработке данного стандарта была совершена попытка улучшить логику писания разметки.

Но команда энтузиастов из компании Opera считали, что XML (а так же XHTML 2.0) не является достойным стандартом языка разметки. Они запустили проект по разработке экспериментального стандарта, добавив расширения для форм HTML, сохраняя при этом обратную совместимость. В результате получился стандарт Web forms 2.0, который в дальнейшем вошел в состав HTML5. После присоединения к команде разработчиков сотрудников из Mozilla они продолжили работу над проектом назвав себя WHATWG (Web Hypertext Application Technology Working Group, «рабочая группа по разработке гипертекстовых приложений для Интернета» -- http://www. whatwg.org). Код данного проекта является открытым и каждый может предложить любые изменения и нововведения в спецификацию. В последствии W3C признала, что попытка перевести весь мир на XML оказалась провальной и проголосовала за использование разработки от WHATWG в качестве основной, обновленной версии HTML, и так начался процесс работы над HTML5 аналог которой параллельно разрабатывала W3C и WHATWG. В 2009 году W3C направила все доступные средства на разработку HTML5.