Введение

Язык разметки гипертекста (HTML) — это стандартный язык разметки для документов, предназначенных для отображения в веб-браузере. Он определяет содержание и структуру веб-контента. Часто его дополняют такие технологии, как каскадные таблицы стилей (CSS) и языки программирования, такие как JavaScript. Веб-браузеры получают HTML-документы с веб-сервера или из локального хранилища и отображают их в виде мультимедийных веб-страниц. HTML семантически описывает структуру веб-страницы и изначально содержал указания по её оформлению. HTML-элементы — это строительные блоки HTML-страниц. С помощью конструкций HTML изображения и другие объекты, такие как интерактивные формы, могут быть встроены в отображаемую страницу. HTML предоставляет возможность создавать структурированные документы, определяя структурную семантику для текста, например, заголовки, абзацы, списки, ссылки, цитаты и другие элементы. HTML-элементы обозначаются тегами, записанными с использованием угловых скобок. Теги, такие как `<p>` и `<h1>`, непосредственно вводят контент на страницу. Другие теги, такие как `<div>` и `<span>`, окружают текст документа и предоставляют о нём информацию, а также могут включать теги подэлементов. Браузеры не отображают HTML-теги, но используют их для интерпретации содержимого страницы. HTML может встраивать программы, написанные на языке сценариев, таком как JavaScript, что влияет на поведение и содержание веб-страниц. Использование CSS определяет внешний вид и макет контента. Всемирный консорциум веб (W3C), бывший разработчик HTML и нынешний разработчик стандартов CSS, с 1997 года рекомендует использовать CSS вместо явного форматирования HTML. Форма HTML, известная как HTML5, используется для отображения видео и аудио, в основном с использованием элемента `<video>` вместе с JavaScript.

Разработка

В 1980 году физик Тим Бернерс-Ли, работавший по контракту в CERN, предложил и создал прототип ENQUIRE – системы для исследователей CERN, предназначенной для использования и обмена документами. В 1989 году Бернерс-Ли написал служебную записку с предложением о создании гипертекстовой системы на основе Интернета. Бернерс-Ли разработал спецификацию HTML и написал программное обеспечение для браузера и сервера в конце 1990 года. В том же году Бернерс-Ли и инженер по системам данных CERN Роберт Кайлиу совместно подготовили запрос на финансирование, однако проект не был официально принят CERN. В своих личных заметках 1990 года Бернерс-Ли перечислил "некоторые из множества областей применения гипертекста", при этом энциклопедию он указал в качестве первого примера. Первым общедоступным описанием HTML стал документ под названием "HTML Tags", впервые упомянутый Тимом Бернерсом-Ли в Интернете в конце 1991 года. В нем описаны 18 элементов, составляющих первоначальный, относительно простой дизайн HTML. За исключением тега гиперссылки, на них оказал сильное влияние SGMLguid – внутренняя стандартная система документации на основе языка SGML (Standard Generalized Markup Language), использовавшаяся в CERN. Одиннадцать из этих элементов до сих пор существуют в HTML 4. HTML – это язык разметки, который веб-браузеры используют для интерпретации и компоновки текста, изображений и других материалов в видимые или слышимые веб-страницы. Браузер определяет характеристики по умолчанию для каждого элемента HTML-разметки, которые веб-дизайнер может изменить или дополнить с помощью CSS. Многие текстовые элементы упоминаются в техническом отчете ISO 1988 года TR 9537 "Техники использования SGML", в котором описываются особенности ранних языков форматирования текста, таких как команда RUNOFF, разработанная в начале 1960-х годов для операционной системы CTSS (Compatible Time Sharing System). Эти команды форматирования были основаны на командах, используемых наборщиками для ручного форматирования документов. Однако концепция обобщенной разметки SGML основана на элементах (вложенных аннотированных диапазонах с атрибутами), а не только на эффектах печати, с разделением структуры и разметки. HTML постепенно развивался в этом направлении с использованием CSS. Бернерс-Ли рассматривал HTML как приложение SGML. Это было официально подтверждено Internet Engineering Task Force (IETF) в середине 1993 года публикацией первого предложения по спецификации HTML – интернет-черновика "Hypertext Markup Language (HTML)" авторства Бернерса-Ли и Дэна Коннолли, который включал определение типа документа SGML для определения синтаксиса. Черновик утратил силу через шесть месяцев, но был примечателен тем, что признавал нестандартный тег браузера NCSA Mosaic для встраивания изображений в строку, что отражало философию IETF, заключающуюся в разработке стандартов на основе успешных прототипов. Аналогичным образом, конкурирующий интернет-черновик Дэйва Раггетта "HTML+ (Hypertext Markup Format)" от конца 1993 года предлагал стандартизировать уже реализованные функции, такие как таблицы и формы для ввода данных. После того как черновики HTML и HTML+ утратили силу в начале 1994 года, IETF создала рабочую группу по HTML. В 1995 году эта рабочая группа завершила работу над "HTML 2.0" – первой спецификацией HTML, которая должна была рассматриваться как стандарт, на основе которого должны были создаваться будущие реализации. Дальнейшая разработка под эгидой IETF была затруднена из-за конкурирующих интересов. С 1996 года спецификации HTML поддерживаются World Wide Web Consortium (W3C) при участии поставщиков коммерческого программного обеспечения. В 2000 году HTML стал международным стандартом (ISO/IEC 15445:2000). HTML 4.01 был опубликован в конце 1999 года, а исправления к нему публиковались до 2001 года. В 2004 году началась разработка HTML5 в рабочей группе Web Hypertext Application Technology Working Group (WHATWG), которая в 2008 году стала совместным проектом с W3C, а 28 октября 2014 года разработка была завершена и стандарт был утвержден.

Версии XHTML

XHTML — это отдельный язык, возникший как переформулировка HTML 4.01 с использованием XML 1.0. В настоящее время он известен как синтаксис XML для HTML и больше не разрабатывается как самостоятельный стандарт. XHTML 1.0 был опубликован как Рекомендация W3C 26 января 2000 года, а затем пересмотрен и переиздан 1 августа 2002 года. Он предлагает те же три варианта, что и HTML 4.0 и 4.01, переформулированные в XML с незначительными ограничениями. XHTML 1.1 был опубликован как Рекомендация W3C 31 мая 2001 года. Он основан на XHTML 1.0 Strict, но включает незначительные изменения, допускает настройку и переформулирован с использованием модулей в рекомендации W3C "Модуляризация XHTML", опубликованной 10 апреля 2001 года. XHTML 2.0 был рабочим проектом. Разработка была прекращена в 2009 году в пользу разработки HTML5 и XHTML5. XHTML 2.0 был несовместим с XHTML 1.x и, следовательно, точнее характеризовался как новый язык, вдохновленный XHTML, а не как обновление XHTML 1.x.

Переход публикации HTML к WHATWG

28 мая 2019 года W3C объявил, что WHATWG станет единственным издателем стандартов HTML и DOM. W3C и WHATWG публиковали конкурирующие стандарты с 2012 года. Хотя стандарт W3C был идентичен стандарту WHATWG в 2007 году, с тех пор стандарты постепенно разошлись из-за различных решений в области проектирования. "Живой стандарт" WHATWG уже некоторое время фактически являлся веб-стандартом.

Элементы

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

Некоторые элементы, такие как разрыв строки, не допускают никакого содержимого внутри себя, ни текста, ни других тегов. Для них требуется только один пустой тег (аналогичный открывающему тегу) и закрывающий тег не используется. Многие теги, особенно закрывающий тег для часто используемого элемента абзаца, являются необязательными. HTML-браузер или другой агент может определить завершение элемента по контексту и структурным правилам, определенным стандартом HTML. Эти правила сложны и малоизвестны большинству разработчиков HTML. Поэтому общая форма HTML-элемента выглядит следующим образом: Некоторые HTML-элементы определены как пустые элементы и имеют вид. Пустые элементы не могут содержать никакого содержимого, например, тег или встроенный тег. Имя HTML-элемента – это имя, используемое в тегах. Имя закрывающего тега предшествует символ косой черты, /, а в пустых элементах закрывающий тег не требуется и не допускается. Если атрибуты не указаны, в каждом случае используются значения по умолчанию.

Типы данных

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

Семантический HTML

Семантический HTML – это способ написания HTML, который делает акцент на значении закодированной информации, а не на ее представлении (внешнем виде). HTML включал семантическую разметку с самого начала, но также содержал и презентационную разметку, такую как , и теги. Существуют также семантически нейтральные теги `div` и `span`. С конца 1990-х годов, когда каскадные таблицы стилей (CSS) начали работать в большинстве браузеров, веб-разработчикам рекомендовалось избегать использования презентационной разметки HTML с целью разделения контента и представления. В 2001 году, в ходе обсуждения Семантической сети, Тим Бернерс-Ли и другие привели примеры того, как интеллектуальные программные "агенты" однажды смогут автоматически сканировать веб, находить, фильтровать и сопоставлять ранее не связанные опубликованные факты для пользы пользователей. Такие агенты пока не получили широкого распространения, но некоторые идеи Web 2.0, mashup-приложения и сайты сравнения цен могут быть близки к этому. Основное различие между этими гибридными веб-приложениями и семантическими агентами Бернерса-Ли заключается в том, что текущая агрегация и гибридизация информации обычно разрабатывается веб-разработчиками, которые уже знают адреса веб-страниц и семантику API конкретных данных, которые они хотят объединить, сравнить и сопоставить. Важным типом веб-агента, который автоматически сканирует и читает веб-страницы, не имея предварительных знаний о том, что он может найти, является веб-сканер или поисковый робот (spider). Эти программные агенты зависят от семантической ясности веб-страниц, которые они находят, поскольку используют различные методы и алгоритмы для чтения и индексации миллионов веб-страниц в день и предоставляют пользователям веб-сайтов поисковые возможности, без которых полезность Всемирной паутины была бы значительно снижена. Чтобы поисковые роботы могли оценивать значимость фрагментов текста, найденных в HTML-документах, а также для создателей mashup-приложений и других гибридов, и для более автоматизированных агентов по мере их разработки, семантические структуры, существующие в HTML, должны широко и единообразно применяться для раскрытия смысла опубликованного текста. Презентационные теги разметки устарели в текущих рекомендациях HTML и XHTML. Большинство функций презентационной разметки из предыдущих версий HTML больше не допускаются, поскольку они приводят к снижению доступности, увеличению стоимости обслуживания сайта и большему размеру документов. Хороший семантический HTML также повышает доступность веб-документов (см. также Руководство по обеспечению доступности веб-контента). Например, когда программа чтения с экрана или аудио-браузер может правильно определить структуру документа, она не будет тратить время пользователя с нарушениями зрения на чтение повторяющейся или нерелевантной информации, если она была правильно размечена.

Доставка

Документы HTML могут быть доставлены тем же способом, что и любой другой компьютерный файл. Однако чаще всего они доставляются либо по протоколу HTTP с веб-сервера, либо по электронной почте.

HTTP-адрес

Всемирная паутина состоит в основном из HTML-документов, передаваемых с веб-серверов в веб-браузеры с использованием протокола передачи гипертекста (HTTP). Однако HTTP используется и для передачи изображений, звука и другого контента, помимо HTML. Чтобы веб-браузер знал, как обрабатывать каждый полученный документ, вместе с ним передается дополнительная информация. Эти метаданные обычно включают тип MIME (например, text/html или application/xhtml+xml) и кодировку символов (см. Кодировку символов в HTML). В современных браузерах тип MIME, передаваемый вместе с HTML-документом, может влиять на его первоначальную интерпретацию. Ожидается, что документ, отправленный с типом MIME XHTML, будет корректным XML; синтаксические ошибки могут привести к тому, что браузер не сможет его отобразить. Тот же документ, отправленный с типом MIME HTML, может быть успешно отображен, поскольку некоторые браузеры более терпимы к HTML. Рекомендации W3C указывают, что документы XHTML 1.0, соответствующие требованиям, изложенным в Приложении C к рекомендации, могут быть обозначены любым из этих типов MIME. XHTML 1.1 также определяет, что документы XHTML 1.1 должны быть обозначены одним из этих типов MIME.

HTML-электронная почта

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

Конвенции о наименовании

Наиболее распространенным расширением имени файла для файлов, содержащих HTML, является html. Распространенное сокращение этого – htm, которое появилось из-за того, что некоторые ранние операционные системы и файловые системы, такие как DOS, а также ограничения, связанные с файловой системой FAT, ограничивали длину расширений файлов тремя символами.

Приложение HTML

HTML-приложение (HTA; расширение файла hta) — это приложение Microsoft Windows, использующее HTML и динамический HTML в браузере для обеспечения графического интерфейса. Обычный HTML-файл ограничен моделью безопасности веб-браузера, взаимодействуя только с веб-серверами и манипулируя только объектами веб-страниц и файлами cookie сайта. HTA запускается как полностью доверенное приложение и, следовательно, обладает большими правами, такими как создание, редактирование и удаление файлов, а также изменение записей реестра Windows. Поскольку HTA работают вне модели безопасности браузера, их нельзя выполнить через HTTP — их необходимо загрузить (как и EXE-файл) и запустить из локальной файловой системы.

Вариации HTML4

С момента своего создания HTML и связанные с ним протоколы получили признание относительно быстро. Однако в первые годы существования языка не существовало чётких стандартов. Хотя создатели изначально задумывали HTML как семантический язык, не содержащий элементов оформления, практическое применение привело к включению в язык множества элементов и атрибутов, отвечающих за представление, во многом под влиянием различных производителей браузеров. Современные стандарты HTML отражают стремление преодолеть порой хаотичное развитие языка и создать рациональную основу для создания осмысленных и хорошо оформленных документов. Чтобы вернуть HTML к его роли семантического языка, W3C разработал языки стилей, такие как CSS и XSL, для решения задач оформления. Параллельно спецификация HTML постепенно ограничивала использование элементов оформления. Существует два критерия, различающих различные версии HTML в текущей спецификации: HTML на основе SGML и HTML на основе XML (известный как XHTML) – по первому критерию, и строгий, переходный (свободный) и для фреймов – по второму.

На основе SGML против HTML на основе XML

Одно из различий в последних спецификациях HTML заключается в разграничении между спецификацией на основе SGML и спецификацией на основе XML. Спецификация на основе XML обычно называется XHTML, чтобы чётко отличать её от более традиционного определения. Однако имя корневого элемента остаётся "html" даже в HTML, определённом в XHTML. W3C предполагал, что XHTML 1.0 будет идентичен HTML 4.01, за исключением случаев, когда ограничения XML по сравнению с более сложным SGML требуют обходных решений. Поскольку XHTML и HTML тесно связаны, они иногда документируются параллельно. В таких случаях некоторые авторы объединяют два названия как (X)HTML или X(HTML). Как и HTML 4.01, XHTML 1.0 имеет три подспецификации: строгая, переходная и фреймсет. Помимо различных объявлений типа документа, различия между документом HTML 4.01 и XHTML 1.0 — в каждом из соответствующих DTD — в основном синтаксические. Основной синтаксис HTML допускает множество сокращений, которых нет в XHTML, например, элементы с необязательными открывающими или закрывающими тегами и даже пустые элементы, которые не должны иметь закрывающий тег. Напротив, XHTML требует, чтобы все элементы имели открывающий и закрывающий теги. Однако XHTML также вводит новое сокращение: тег XHTML может быть открыт и закрыт в пределах одного тега, путём включения слеша перед концом тега, например: Введение этого сокращения, которое не используется в объявлении SGML для HTML 4.01, может сбить с толку старое программное обеспечение, незнакомое с этой новой конвенцией. Решением является добавление пробела перед закрывающим тегом, например: Чтобы понять тонкие различия между HTML и XHTML, рассмотрим преобразование валидного и хорошо сформированного документа XHTML 1.0, соответствующего Приложению C (см. ниже), в валидный документ HTML 4.01. Для этого требуются следующие шаги: язык элемента следует указывать с помощью атрибута `lang`, а не атрибута `xml:lang` XHTML. XHTML использует встроенную в XML функциональность определения языка. Удалите пространство имён XML (`xmlns=URI`). HTML не поддерживает пространства имён. Измените объявление типа документа с XHTML 1.0 на HTML 4.01 (см. раздел DTD для получения дополнительных пояснений). Если оно присутствует, удалите объявление XML (обычно это: ). Убедитесь, что MIME-тип документа установлен в `text/html`. Как для HTML, так и для XHTML это поступает из заголовка HTTP `Content-Type`, отправляемого сервером. Измените синтаксис пустого элемента XML на синтаксис пустого элемента в стиле HTML ( на ). Это основные изменения, необходимые для преобразования документа из XHTML 1.0 в HTML 4.01. Для преобразования из HTML в XHTML также потребуется добавление любых пропущенных открывающих или закрывающих тегов. Независимо от того, пишете ли вы код на HTML или XHTML, возможно, лучше всегда включать необязательные теги в HTML-документ, чем запоминать, какие теги можно опустить. Хорошо сформированный документ XHTML соответствует всем требованиям синтаксиса XML. Валидный документ соответствует спецификации содержимого для XHTML, которая описывает структуру документа. W3C рекомендует несколько соглашений для обеспечения лёгкой миграции между HTML и XHTML (см. Руководство по совместимости HTML). Следующие шаги можно применять только к документам XHTML 1.0: укажите как атрибут `xml:lang`, так и атрибут `lang` для любых элементов, назначающих язык; используйте синтаксис пустого элемента только для элементов, определённых как пустые в HTML; добавьте дополнительный пробел в пустые теги элементов, например, вместо ; включите явные закрывающие теги для элементов, которые допускают содержимое, но остаются пустыми (например, , а не ); опустите объявление XML. Тщательно следуя рекомендациям W3C по совместимости, пользовательский агент должен иметь возможность интерпретировать документ как HTML, так и XHTML. Для документов, которые являются XHTML 1.0 и были сделаны совместимыми таким образом, W3C разрешает их передавать либо как HTML (с MIME-типом `text/html`), либо как XHTML (с MIME-типом `application/xhtml+xml` или `application/xml`). При доставке в виде XHTML браузеры должны использовать XML-парсер, который строго соответствует спецификациям XML для разбора содержимого документа.

Фреймсет против переходного

В дополнение к вышеуказанным переходным различиям, спецификации фреймсетов (будь то XHTML 1.0 или HTML 4.01) определяют иную модель содержимого, в которой элемент `<frameset>` заменяет элемент `<body>`, и которая содержит либо элементы `<frame>`, либо, опционально, `<noframes>` с элементом `<body>` внутри.

Резюме версий спецификаций

Как показывает этот список, менее строгие версии спецификации поддерживаются для обеспечения обратной совместимости. Однако, вопреки распространенному мнению, переход к XHTML не означает отказ от этой поддержки. Скорее, буква "X" в XML означает "расширяемый", и W3C модулирует всю спецификацию, открывая возможность независимых расширений. Главным достижением перехода от XHTML 1.0 к XHTML 1.1 является модульность всей спецификации. Строгая версия HTML реализована в XHTML 1.1 посредством набора модульных расширений к базовой спецификации XHTML 1.1. Соответственно, те, кто ищет менее строгие (переходные) или спецификации для фреймов, найдут аналогичную расширенную поддержку в XHTML 1.1 (значительная часть которой содержится в модулях устаревшей поддержки или модулях для фреймов). Модульность также позволяет отдельным функциям развиваться в собственном темпе. Например, XHTML 1.1 позволит быстрее перейти к новым стандартам XML, таким как MathML (язык математической разметки, сочетающий представление и семантику, основанный на XML) и XForms – новая, высокоразвитая технология веб-форм, призванная заменить существующие формы HTML. В итоге, спецификация HTML 4 прежде всего унифицировала все различные реализации HTML в единую, четко сформулированную спецификацию, основанную на SGML. XHTML 1.0 перенес эту спецификацию без изменений в новую спецификацию, основанную на XML. Затем XHTML 1.1 воспользовался расширяемостью XML и модулировал всю спецификацию. XHTML 2.0 задумывался как первый шаг к добавлению новых функций в спецификацию, используя подход, основанный на стандартах.

WHATWG HTML против HTML5

Стандарт HTML Living, разрабатываемый WHATWG, является официальной версией, а W3C HTML5 больше не существует как отдельный стандарт от WHATWG.