Язык гипертекстовой разметки ( HTML ) — стандартный язык разметки документов, предназначенных для отображения в веб-браузере . Он определяет содержание и структуру веб-контента . Ему часто помогают такие технологии, как каскадные таблицы стилей (CSS), и языки сценариев, такие как JavaScript .
Веб-браузеры получают HTML-документы с веб-сервера или из локального хранилища и преобразуют документы в мультимедийные веб-страницы. HTML описывает структуру веб-страницы семантически и изначально включал подсказки для ее внешнего вида.
Элементы HTML являются строительными блоками страниц HTML. С помощью конструкций HTML изображения и другие объекты, такие как интерактивные формы, могут быть встроены в визуализированную страницу. HTML предоставляет средства для создания структурированных документов путем обозначения структурной семантики для текста, такого как заголовки, абзацы, списки, ссылки , цитаты и другие элементы. Элементы HTML разграничиваются тегами , записанными с использованием угловых скобок . Теги, такие как и , напрямую вводят содержимое на страницу. Другие теги, такие как и , окружают и предоставляют информацию о тексте документа и могут включать теги подэлементов. Браузеры не отображают теги HTML, но используют их для интерпретации содержимого страницы.<img>
<input>
<p>
</p>
HTML может встраивать программы, написанные на языке сценариев , таком как JavaScript , что влияет на поведение и содержимое веб-страниц. Включение CSS определяет внешний вид и макет содержимого. Консорциум Всемирной паутины (W3C), бывший разработчик HTML и нынешний разработчик стандартов CSS, поощрял использование CSS вместо явного презентационного HTML с 1997 года. [2] Форма HTML, известная как HTML5 , используется для отображения видео и аудио, в основном с использованием элемента вместе с JavaScript.[update]<canvas>
В 1980 году физик Тим Бернерс-Ли , подрядчик в ЦЕРНе , предложил и создал прототип ENQUIRE , системы для исследователей ЦЕРНа, чтобы использовать и обмениваться документами. В 1989 году Бернерс-Ли написал служебную записку, предлагающую систему гипертекста на основе Интернета . [3] Бернерс-Ли определил HTML и написал программное обеспечение браузера и сервера в конце 1990 года. В том же году Бернерс-Ли и инженер систем данных ЦЕРНа Роберт Кайо совместно работали над совместным запросом на финансирование, но проект не был официально принят ЦЕРН. В своих личных заметках 1990 года Бернерс-Ли перечислил «некоторые из многих областей, в которых используется гипертекст»; энциклопедия является первой записью. [4]
Первым общедоступным описанием HTML был документ под названием «HTML Tags», [5] впервые упомянутый в Интернете Тимом Бернерсом-Ли в конце 1991 года. [6] [7] Он описывает 18 элементов, составляющих первоначальный, относительно простой дизайн HTML. За исключением тега гиперссылки, они были сильно вдохновлены SGMLguid , внутренним форматом документации на основе Standard Generalized Markup Language (SGML) в CERN. Одиннадцать из этих элементов все еще существуют в HTML 4. [8]
HTML — это язык разметки , который веб-браузеры используют для интерпретации и компоновки текста, изображений и других материалов в видимые или слышимые веб-страницы. Характеристики по умолчанию для каждого элемента разметки HTML определяются в браузере, и эти характеристики могут быть изменены или улучшены с помощью дополнительного использования CSS разработчиком веб-страницы . Многие из текстовых элементов упоминаются в техническом отчете ISO 1988 года TR 9537 Методики использования SGML , в котором описываются особенности ранних языков форматирования текста, таких как язык, используемый командой RUNOFF, разработанной в начале 1960-х годов для операционной системы CTSS (Compatible Time-Sharing System). Эти команды форматирования были получены из команд, используемых наборщиками для ручного форматирования документов. Однако концепция обобщенной разметки SGML основана на элементах (вложенных аннотированных диапазонах с атрибутами), а не просто на эффектах печати, с отдельной структурой и разметкой. HTML постепенно продвигался в этом направлении с помощью CSS.
Бернерс-Ли считал HTML приложением SGML. Он был формально определен как таковой Целевой группой по инжинирингу Интернета (IETF) с публикацией в середине 1993 года первого предложения по спецификации HTML, "Язык гипертекстовой разметки (HTML)" Интернет-проекта Бернерса-Ли и Дэна Коннолли , который включал определение типа документа SGML для определения синтаксиса. [9] [10] Проект истек через шесть месяцев, но был примечателен признанием пользовательского тега браузера NCSA Mosaic для встраивания встроенных изображений, отражающего философию IETF основывать стандарты на успешных прототипах. Аналогичным образом, конкурирующий Интернет-проект Дейва Рэггетта , "HTML+ (Формат гипертекстовой разметки)", от конца 1993 года, предлагал стандартизировать уже реализованные функции, такие как таблицы и формы для заполнения. [11]
После того, как в начале 1994 года истек срок действия проектов HTML и HTML+, IETF создала рабочую группу HTML. В 1995 году эта рабочая группа завершила "HTML 2.0", первую спецификацию HTML, которая должна была рассматриваться как стандарт, на котором должны были базироваться будущие реализации. [12]
Дальнейшее развитие под эгидой IETF было остановлено конкурирующими интересами. С 1996 года [update]спецификации HTML поддерживались, с участием поставщиков коммерческого программного обеспечения, Консорциумом Всемирной паутины (W3C). [13] В 2000 году HTML стал международным стандартом ( ISO / IEC 15445:2000). HTML 4.01 был опубликован в конце 1999 года, с дальнейшими исправлениями, опубликованными до 2001 года. В 2004 году началась разработка HTML5 в Рабочей группе по технологиям веб-гипертекстовых приложений (WHATWG), которая стала совместным проектом с W3C в 2008 году и была завершена и стандартизирована 28 октября 2014 года. [14]
XHTML — это отдельный язык, который начинался как переформулировка HTML 4.01 с использованием XML 1.0. Теперь он называется синтаксисом XML для HTML и больше не разрабатывается как отдельный стандарт. [58]
28 мая 2019 года W3C объявил, что WHATWG станет единственным издателем стандартов HTML и DOM. [65] [66] [67] [68] W3C и WHATWG публиковали конкурирующие стандарты с 2012 года. Хотя стандарт W3C был идентичен WHATWG в 2007 году, с тех пор стандарты постепенно расходились из-за различных проектных решений. [69] «Живой стандарт» WHATWG некоторое время был фактическим веб-стандартом. [70]
Разметка HTML состоит из нескольких ключевых компонентов, включая теги (и их атрибуты ), типы данных на основе символов , ссылки на символы и ссылки на сущности . Теги HTML чаще всего идут парами, например и , хотя некоторые представляют собой пустые элементы и поэтому не являются парными, например . Первый тег в такой паре — это начальный тег , а второй — конечный тег (их также называют открывающими тегами и закрывающими тегами ).<h1>
</h1>
<img>
Другим важным компонентом является объявление типа документа HTML , которое запускает рендеринг в стандартном режиме .
Ниже приведен пример классической программы «Hello, World!» :
<!DOCTYPE html> < html > < head > < title > Это заголовок </ title > </ head > < body > < div > < p > Привет, мир! </ p > </ div > </ body > </ html >
Текст между и описывает веб-страницу, а текст между и является видимым содержимым страницы. Текст разметки определяет заголовок страницы браузера, отображаемый на вкладках браузера и заголовках окон , а тег определяет разделение страницы, используемое для простого оформления. Между и элемент может использоваться для определения метаданных веб-страницы.<html>
</html>
<body>
</body>
<title>This is a title</title>
<div>
<head>
</head>
<meta>
Декларация типа документа <!DOCTYPE html>
предназначена для HTML5. Если декларация не включена, различные браузеры будут возвращаться в « режим совместимости » для рендеринга. [71]
HTML-документы подразумевают структуру вложенных HTML-элементов . Они обозначены в документе HTML- тегами , заключенными в угловые скобки, таким образом: . [72] [ требуется лучший источник ]<p>
В простом, общем случае протяженность элемента указывается парой тегов: «начальный тег» и «конечный тег» . Текстовое содержимое элемента, если таковое имеется, размещается между этими тегами.<p>
</p>
Теги также могут включать дополнительную разметку тегов между началом и концом, включая смесь тегов и текста. Это указывает на дополнительные (вложенные) элементы, как дочерние элементы родительского элемента.
Начальный тег может также включать атрибуты элемента внутри тега. Они указывают другую информацию, такую как идентификаторы разделов в документе, идентификаторы, используемые для привязки информации о стиле к представлению документа, а для некоторых тегов, таких как используемый для встраивания изображений, ссылка на ресурс изображения в таком формате:<img>
<img src="example.com/example.jpg">
Некоторые элементы, такие как разрыв строки, не допускают никакого встроенного контента, будь то текст или дополнительные теги. Для них требуется только один пустой тег (похожий на начальный тег) и не используется конечный тег.<br />
Многие теги, в частности закрывающий конечный тег для очень часто используемого элемента абзаца , являются необязательными. HTML-браузер или другой агент может вывести закрытие для конца элемента из контекста и структурных правил, определенных стандартом HTML. Эти правила сложны и не очень хорошо понятны большинству авторов HTML.<p>
Таким образом, общая форма элемента HTML выглядит следующим образом: . Некоторые элементы HTML определяются как пустые элементы и имеют форму . Пустые элементы могут не содержать никакого содержимого, например, тег или встроенный тег. Имя элемента HTML — это имя, используемое в тегах. Имени конечного тега предшествует символ косой черты, , и что в пустых элементах конечный тег не является ни обязательным, ни разрешенным. Если атрибуты не указаны, в каждом случае используются значения по умолчанию.<tag attribute1="value1" attribute2="value2">''content''</tag>
<tag attribute1="value1" attribute2="value2">
<br />
<img>
/
Заголовок HTML-документа: . Заголовок включается в заголовок, например:<head>...</head>
< head > < title > Заголовок </ title > < link rel = "stylesheet" href = "stylebyjimbowales.css" > <!-- Импорт таблиц стилей --> </ head >
Заголовки HTML определяются с помощью тегов to , где H1 — самый высокий (или самый важный) уровень, а H6 — самый низкий:<h1>
<h6>
< h1 > Уровень заголовка 1 </ h1 > < h2 > Уровень заголовка 2 </ h2 > < h3 > Уровень заголовка 3 </ h3 > < h4 > Уровень заголовка 4 </ h4 > < h5 > Уровень заголовка 5 </ h5 > < h6 > Уровень заголовка 6 </ h6 >
Эффекты таковы:
CSS может существенно изменить рендеринг.
Абзацы:
< p > Абзац 1 </ p > < p > Абзац 2 </ p >
<br />
. Разница между и заключается в том, что он разрывает строку , не изменяя семантическую структуру страницы, тогда как разделяет страницу на абзацы . Элемент является пустым элементом , поскольку, хотя он может иметь атрибуты, он не может принимать никакого содержимого и может не иметь закрывающего тега.<br />
<p>
<br />
<p>
<br />
< p > Это < br > абзац < br > с < br > переносами строк </ p >
Это ссылка в HTML. Для создания ссылки используется тег. Атрибут содержит URL- адрес ссылки.<a>
href
< a href = "https://www.wikipedia.org/" > Ссылка на Википедию! </ a >
Существует множество возможных способов, с помощью которых пользователь может вносить данные, например:
< input type = "text" > <!-- Это для ввода текста --> < input type = "file" > <!-- Это для загрузки файлов --> < input type = "checkbox" > <!-- Это для флажков -->
Комментарии:
<!-- Это комментарий -->
Комментарии могут помочь в понимании разметки и не отображаются на веб-странице.
В HTML используются несколько типов элементов разметки:
<h2>Golf</h2>
<b>bold text</b>
<b>bold text</b>
<i>italic text</i>
<strong>strong text</strong>
<em>emphasized text</em>
href
ссылки . Например, разметка HTML , отобразит слово " Wikipedia " как гиперссылку. Чтобы отобразить изображение как гиперссылку, элемент вставляется как содержимое в элемент. Как , является пустым элементом с атрибутами, но без содержимого или закрывающего тега. .<a href="https://en.wikipedia.org/">Wikipedia</a>
img
a
br
img
<a href="https://example.org"><img src="image.gif" alt="descriptive text" width="50" height="50" border="0"></a>
Большинство атрибутов элемента представляют собой пары имя-значение , разделенные =
и записанные внутри начального тега элемента после имени элемента. Значение может быть заключено в одинарные или двойные кавычки, хотя значения, состоящие из определенных символов, могут оставаться без кавычек в HTML (но не в XHTML). [74] [75] Оставление значений атрибутов без кавычек считается небезопасным. [76] В отличие от атрибутов пар имя-значение, есть некоторые атрибуты, которые влияют на элемент просто своим присутствием в начальном теге элемента, [6] как ismap
атрибут для img
элемента. [77]
Существует несколько общих атрибутов, которые могут встречаться во многих элементах:
id
предоставляет уникальный идентификатор элемента на уровне документа. Он используется для идентификации элемента, чтобы таблицы стилей могли изменять его презентационные свойства, а скрипты могли изменять, анимировать или удалять его содержимое или представление. Присоединяясь к URL-адресу страницы, он предоставляет глобальный уникальный идентификатор элемента, обычно подраздела страницы. Например, идентификатор "Атрибуты" в https://en.wikipedia.org/wiki/HyperText_Markup_Language/HTML#Attributes
.class
предоставляет способ классификации схожих элементов. Это может использоваться в семантических или презентационных целях. Например, HTML-документ может семантически использовать обозначение , чтобы указать, что все элементы с этим значением класса подчинены основному тексту документа. В презентации такие элементы могут быть собраны вместе и представлены в виде сносок на странице вместо того, чтобы появляться в том месте, где они встречаются в исходном HTML-коде. Атрибуты класса используются семантически в микроформатах . Можно указать несколько значений класса; например, помещает элемент как в классы , так и .<class="notation">
<class="notation important">
notation
important
style
атрибут для назначения презентационных свойств определенному элементу. Считается лучшей практикой использовать атрибуты элемента id
или class
для выбора элемента из таблицы стилей , хотя иногда это может быть слишком громоздко для простого, конкретного или специального стиля.title
используется для присоединения подтекстового объяснения к элементу. В большинстве браузеров этот атрибут отображается как подсказка .lang
определяет естественный язык содержимого элемента, который может отличаться от языка остальной части документа. Например, в англоязычном документе:< p > Ну что ж, < span lang = "fr" > c'est la vie </ span > , как говорят во Франции. </ p >
Элемент аббревиатуры, abbr
, может использоваться для демонстрации некоторых из этих атрибутов:
< abbr id = "anId" class = "jargon" style = "color:purple;" title = "Язык гипертекстовой разметки" > HTML </ abbr >
Этот пример отображается как HTML ; в большинстве браузеров при наведении курсора на аббревиатуру должен отображаться текст заголовка «Язык гипертекстовой разметки».
Большинство элементов используют атрибут, связанный с языком dir
, для указания направления текста, например, «rtl» для текста справа налево, например, в арабском , персидском или иврите . [78]
Начиная с версии 4.0, HTML определяет набор из 252 ссылок на сущности символов и набор из 1 114 050 ссылок на числовые символы , оба из которых позволяют записывать отдельные символы с помощью простой разметки, а не буквально. Буквальный символ и его аналог в разметке считаются эквивалентными и отображаются идентично.
Возможность « экранирования » символов таким образом позволяет интерпретировать символы <
и &
(когда они записаны как <
и &
, соответственно) как символьные данные, а не как разметку. Например, литерал <
обычно указывает на начало тега и &
обычно указывает на начало ссылки на символьную сущность или числовую ссылку на символ; запись его как &
или &
или &
позволяет &
включать его в содержимое элемента или в значение атрибута. Символ двойной кавычки ( "
), когда он не используется для цитирования значения атрибута, также должен быть экранирован как "
или "
или "
, когда он появляется внутри самого значения атрибута. Эквивалентно, символ одинарной кавычки ( '
), когда он не используется для цитирования значения атрибута, также должен быть экранирован как '
или '
(или как '
в документах HTML5 или XHTML [79] [80] ), когда он появляется внутри самого значения атрибута. Если авторы документов упускают из виду необходимость экранирования таких символов, некоторые браузеры могут быть очень снисходительными и пытаться использовать контекст, чтобы угадать их намерения. Результатом по-прежнему остается недействительная разметка, что делает документ менее доступным для других браузеров и других пользовательских агентов , которые могут попытаться проанализировать документ, например, для целей поиска и индексации .
Экранирование также позволяет отображать символы, которые нелегко набрать или которые отсутствуют в кодировке символов документа , в содержимом элемента и атрибута. Например, символ с острым ударением e
( é
), который обычно встречается только на клавиатурах Западной Европы и Южной Америки, может быть записан в любом документе HTML как ссылка на сущность é
или как числовые ссылки é
или é
, используя символы, которые доступны на всех клавиатурах и поддерживаются во всех кодировках символов. Кодировки символов Unicode , такие как UTF-8, совместимы со всеми современными браузерами и обеспечивают прямой доступ практически ко всем символам мировых систем письма. [81]
HTML определяет несколько типов данных для содержимого элемента, таких как данные скрипта и данные таблицы стилей, а также множество типов для значений атрибутов, включая идентификаторы, имена, URI , числа, единицы длины, языки, дескрипторы медиа, цвета, кодировки символов, даты и время и т. д. Все эти типы данных являются специализациями символьных данных.
Документы HTML должны начинаться с объявления типа документа (неофициально «doctype»). В браузерах doctype помогает определить режим рендеринга — в частности, следует ли использовать режим совместимости .
Первоначальной целью doctype было обеспечение возможности анализа и проверки HTML-документов инструментами SGML на основе определения типа документа (DTD). DTD, на который ссылается DOCTYPE, содержит машиночитаемую грамматику, определяющую разрешенное и запрещенное содержимое для документа, соответствующего такому DTD. Браузеры, с другой стороны, не реализуют HTML как приложение SGML и, как следствие, не считывают DTD.
HTML5 не определяет DTD; поэтому в HTML5 объявление doctype проще и короче: [82]
<!DOCTYPE html >
Пример док-типа HTML 4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "https://www.w3.org/TR/html4/strict.dtd" >
Это объявление ссылается на DTD для "строгой" версии HTML 4.01. Валидаторы на основе SGML считывают DTD, чтобы правильно проанализировать документ и выполнить проверку. В современных браузерах допустимый doctype активирует режим стандартов, а не режим quirks .
Кроме того, HTML 4.01 предоставляет DTD Transitional и Frameset, как объясняется ниже. Переходный тип является наиболее инклюзивным, включающим текущие теги, а также старые или «устаревшие» теги, при этом Strict DTD исключает устаревшие теги. Frameset имеет все теги, необходимые для создания фреймов на странице, вместе с тегами, включенными в переходный тип. [83]
Семантический HTML — это способ написания HTML, который подчеркивает значение закодированной информации, а не ее представление (внешний вид). HTML включал семантическую разметку с самого начала, [84] но также включал презентационную разметку, такую как теги , и . Существуют также семантически нейтральные теги div и span . С конца 1990-х годов, когда каскадные таблицы стилей начали работать в большинстве браузеров, веб-авторов призывали избегать использования презентационной разметки HTML с целью разделения контента и представления . [85]<font>
<i>
<center>
В обсуждении семантической паутины в 2001 году Тим Бернерс-Ли и другие привели примеры способов, с помощью которых интеллектуальные программные «агенты» смогут однажды автоматически сканировать веб и находить, фильтровать и сопоставлять ранее не связанные, опубликованные факты для пользы пользователей-людей. [86] Такие агенты не являются обычным явлением даже сейчас, но некоторые идеи Web 2.0 , мэшапов и веб-сайтов сравнения цен могут быть близки. Главное различие между этими гибридами веб-приложений и семантическими агентами Бернерса-Ли заключается в том, что текущая агрегация и гибридизация информации обычно разрабатываются веб-разработчиками , которые уже знают веб-местоположения и семантику API конкретных данных, которые они хотят смешать, сравнить и объединить.
Важным типом веб-агента, который автоматически сканирует и читает веб-страницы, не имея предварительного знания о том, что он может найти, является веб-краулер или паук поисковой системы. Эти программные агенты зависят от семантической ясности веб-страниц, которые они находят, поскольку они используют различные методы и алгоритмы для чтения и индексации миллионов веб-страниц в день и предоставляют веб-пользователям возможности поиска, без которых полезность Всемирной паутины была бы значительно снижена.
Для того чтобы поисковые роботы могли оценивать значимость фрагментов текста, которые они находят в документах HTML, а также для тех, кто создает мэшапы и другие гибриды, а также для более автоматизированных агентов по мере их разработки, семантические структуры, существующие в HTML, должны широко и единообразно применяться для выявления смысла опубликованного текста. [87]
Теги презентационной разметки устарели в текущих рекомендациях HTML и XHTML . Большинство презентационных функций из предыдущих версий HTML больше не допускаются, поскольку они приводят к ухудшению доступности, более высокой стоимости обслуживания сайта и большим размерам документов. [88]
Хороший семантический HTML также улучшает доступность веб-документов (см. также Руководство по доступности веб-контента ). Например, когда программа чтения с экрана или аудиобраузер могут правильно определить структуру документа, они не будут тратить время пользователя с нарушениями зрения, зачитывая повторяющуюся или нерелевантную информацию, если она была правильно размечена.
HTML-документы могут быть доставлены теми же способами, что и любой другой компьютерный файл. Однако чаще всего они доставляются либо по 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. [89] XHTML 1.1 также гласит, что документы XHTML 1.1 должны [90] быть помечены любым типом MIME. [91]
Большинство графических почтовых клиентов позволяют использовать подмножество HTML (часто плохо определенное) для предоставления форматирования и семантической разметки, недоступной для обычного текста . Это может включать типографскую информацию, такую как цветные заголовки, выделенный и цитируемый текст, встроенные изображения и диаграммы. Многие такие клиенты включают как редактор графического интерфейса для составления сообщений электронной почты HTML, так и механизм рендеринга для их отображения. Использование HTML в электронной почте критикуется некоторыми из-за проблем совместимости, потому что это может помочь замаскировать фишинговые атаки, из-за проблем с доступностью для слепых или слабовидящих людей, потому что это может сбить с толку спам- фильтры и потому что размер сообщения больше, чем у обычного текста.
Наиболее распространенным расширением имени файла для файлов, содержащих HTML, является .html. Распространенное сокращение этого — .htm, которое возникло из-за того, что некоторые ранние операционные системы и файловые системы, такие как DOS , и ограничения, накладываемые структурой данных FAT , ограничивали расширения файлов тремя буквами . [92]
HTML-приложение (HTA; расширение файла .hta) — это приложение Microsoft Windows , которое использует HTML и динамический HTML в браузере для предоставления графического интерфейса приложения. Обычный HTML-файл ограничен моделью безопасности веб -браузера , взаимодействует только с веб-серверами и манипулирует только объектами веб-страницы и файлами cookie сайта . HTA работает как полностью доверенное приложение и, следовательно, имеет больше привилегий, таких как создание/редактирование/удаление файлов и записей реестра Windows . Поскольку они работают вне модели безопасности браузера, HTA не могут быть выполнены через HTTP, а должны быть загружены (как и EXE- файл) и выполнены из локальной файловой системы.
С момента своего создания HTML и связанные с ним протоколы получили признание относительно быстро. Однако в первые годы существования языка не существовало четких стандартов. Хотя его создатели изначально задумывали HTML как семантический язык, лишенный деталей представления, [93] практическое использование втолкнуло в язык множество презентационных элементов и атрибутов, в основном под влиянием различных поставщиков браузеров. Последние стандарты, касающиеся HTML, отражают усилия по преодолению иногда хаотичного развития языка [94] и созданию рациональной основы для создания как содержательных, так и хорошо представленных документов. Чтобы вернуть HTML к его роли семантического языка, W3C разработал языки стилей, такие как CSS и XSL, чтобы взять на себя бремя представления. В связи с этим спецификация HTML медленно обуздала презентационные элементы.
Существуют две оси, различающие различные вариации HTML, как указано в настоящее время: HTML на основе SGML против HTML на основе XML (называемый XHTML) на одной оси и строгий против переходного (свободного) против набора фреймов на другой оси.
Одно из отличий в последних [ когда? ] спецификациях 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, может сбить с толку более раннее программное обеспечение, незнакомое с этим новым соглашением. Исправлением этого является включение пробела перед закрывающим тегом, например: . [95]<br />
<br />
Чтобы понять тонкие различия между HTML и XHTML, рассмотрим преобразование допустимого и правильно сформированного документа XHTML 1.0, соответствующего Приложению C (см. ниже), в допустимый документ HTML 4.01. Для выполнения этого преобразования требуются следующие шаги:
lang
атрибута, а не xml:lang
атрибута XHTML. XHTML использует встроенный атрибут функциональности определения языка XML.xmlns=URI
). HTML не имеет возможностей для пространств имен.<?xml version="1.0" encoding="utf-8"?>
).text/html
. Для HTML и XHTML это происходит из Content-Type
заголовка HTTP, отправленного сервером.<br />
<br />
Это основные изменения, необходимые для перевода документа из XHTML 1.0 в HTML 4.01. Для перевода из HTML в XHTML также потребуется добавить любые пропущенные открывающие или закрывающие теги. Независимо от того, кодируете ли вы в HTML или XHTML, может быть лучше всегда включать необязательные теги в HTML-документ, чем запоминать, какие теги можно пропустить.
Правильно сформированный документ XHTML соответствует всем требованиям синтаксиса XML. Действительный документ соответствует спецификации содержимого для XHTML, которая описывает структуру документа.
W3C рекомендует несколько соглашений для обеспечения легкой миграции между HTML и XHTML (см. Руководство по совместимости HTML). Следующие шаги могут быть применены только к документам XHTML 1.0:
xml:lang
и lang
для всех элементов, назначающих язык.<br />
<br />
, а не ).<div />
Тщательно следуя рекомендациям W3C по совместимости, пользовательский агент должен иметь возможность интерпретировать документ одинаково как HTML или XHTML. Для документов XHTML 1.0, которые были сделаны совместимыми таким образом, W3C разрешает обслуживать их либо как HTML (с типом text/html
MIME ), либо как XHTML (с типом application/xhtml+xml
или application/xml
MIME). При доставке в виде XHTML браузеры должны использовать XML-анализатор, который строго придерживается спецификаций XML для анализа содержимого документа.
HTML 4 определил три различные версии языка: Strict, Transitional (ранее называвшаяся Loose) и Frameset. Строгая версия предназначена для новых документов и считается лучшей практикой, в то время как версии Transitional и Frameset были разработаны для упрощения перехода документов, которые соответствовали старым спецификациям HTML или не соответствовали ни одной спецификации, к версии HTML 4. Версии Transitional и Frameset допускают презентационную разметку, которая опущена в строгой версии. Вместо этого поощряются каскадные таблицы стилей для улучшения представления документов HTML. Поскольку XHTML 1 определяет только синтаксис XML для языка, определенного HTML 4, те же различия применимы и к XHTML 1.
Переходная версия допускает следующие части словаря, которые не включены в строгую версию:
body
, blockquote
, form
, noscript
иnoframes
u
)(Устарело. Может сбить посетителя с толку гиперссылкой.)s
)center
(Устарело. Вместо этого используйте CSS.)font
(Устарело. Вместо этого используйте CSS.)basefont
(Устарело. Вместо этого используйте CSS.)background
(Устарело. Вместо этого используйте CSS.) и bgcolor
(Устарело. Вместо этого используйте CSS.) атрибуты для body
элемента (обязательный элемент согласно W3C.).align
(Устарело. Вместо этого используйте CSS.) атрибут для элементов div
, form
, абзаца ( p
) и заголовка ( h1
... h6
)align
(Устарело. Используйте вместо этого CSS.), noshade
(Устарело. Используйте вместо этого CSS.), size
(Устарело. Используйте вместо этого CSS.) и width
(Устарело. Используйте вместо этого CSS.) атрибуты hr
элементаalign
(Устарело. Вместо этого используйте CSS.), border
, vspace
и hspace
атрибуты для элементов img
и object
(внимание: object
элемент поддерживается только в Internet Explorer (из основных браузеров))align
(Устарело. Вместо этого используйте CSS.) Атрибут для элементов legend
иcaption
align
(Устарело. Вместо этого используйте CSS.) и bgcolor
(Устарело. Вместо этого используйте CSS.) для table
элементаnowrap
(Устарело), bgcolor
(Не рекомендуется. Вместо этого используйте CSS.), width
, height
на td
и th
элементахbgcolor
(Устарело. Вместо этого используйте CSS.) атрибут tr
элементаclear
(Устаревший) атрибут br
элементаcompact
атрибут на dl
, dir
и menu
элементыtype
(Устарело. Вместо этого используйте CSS.), compact
(Устарело. Вместо этого используйте CSS.) и start
(Устарело. Вместо этого используйте CSS.) атрибуты для элементов ol
иul
type
и value
атрибуты li
элементаwidth
атрибут pre
элементаmenu
(Устарело. Вместо этого используйте CSS.) список (замены нет, хотя рекомендуется использовать неупорядоченный список)dir
(Устарело. Вместо этого используйте CSS.) список (замены нет, хотя рекомендуется использовать неупорядоченный список)isindex
(Устарело.) (элемент требует поддержки на стороне сервера и обычно добавляется к документам на стороне сервера, form
а input
элементы могут использоваться в качестве замены)applet
(Устарело. object
Вместо этого используйте элемент.)language
(Устаревший) в элементе скрипта (избыточен с type
атрибутом).iframe
noframes
target
(Не рекомендуется использовать в элементах map
, link
и form
.) Атрибут для элементов a
, клиентской карты изображений ( map
) link
, form
иbase
Версия Frameset включает в себя все, что есть в версии Transitional, а также frameset
элемент (используется вместо body
) и frame
элемент .
В дополнение к указанным выше переходным различиям спецификации набора фреймов (будь то 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 был задуман как первый шаг в добавлении новых функций в спецификацию в подходе, основанном на стандартах.
HTML Living Standard, разработанный WHATWG, является официальной версией, в то время как W3C HTML5 больше не отделен от WHATWG.
Существуют некоторые редакторы WYSIWYG ( что видишь, то и получаешь ), в которых пользователь размещает все так, как оно должно выглядеть в документе HTML, используя графический интерфейс пользователя (GUI), часто похожий на текстовые процессоры . Редактор визуализирует документ, а не показывает код, поэтому авторам не требуются обширные знания HTML.
Модель редактирования WYSIWYG подвергалась критике [96] [97], в первую очередь из-за низкого качества генерируемого кода; есть голоса [ кто? ], выступающие за переход к модели WYSIWYM ( то, что вы видите, то и имеете в виду ).
Редакторы WYSIWYG остаются спорной темой из-за их предполагаемых недостатков, таких как:
<em>
SGML очень общий. HTML — это специфическое применение базового синтаксиса SGML, применяемое к гипертекстовым документам с простой структурой.
Язык разметки гипертекста HTML был разработан как простой непатентованный формат доставки для глобального гипертекста. HTML+ — это набор модульных расширений HTML, разработанный в ответ на растущее понимание потребностей поставщиков информации. Эти расширения включают обтекание текстом плавающих фигур, заполняемые формы, таблицы и математические уравнения.
Таким образом, этот документ определяет HTML 2.0 (чтобы отличить его от предыдущих неофициальных спецификаций). Будущие (в целом совместимые снизу вверх) версии HTML с новыми функциями будут выпущены с более высокими номерами версий.
Этот документ рекомендует HTML 5.0 после завершения.
: эта рабочая группа закрыта.
XHTML, которые следуют рекомендациям, изложенным в Приложении C, "Рекомендации по совместимости с HTML", могут быть помечены как Internet Media Type "text/html" [RFC2854], поскольку они совместимы с большинством браузеров HTML. Эти документы и любые другие документы, соответствующие этой спецификации, также могут быть помечены как Internet Media Type "application/xhtml+xml", как определено в [RFC3236].
3. СЛЕДУЕТ Это слово или прилагательное «РЕКОМЕНДУЕТСЯ» означает, что в определенных обстоятельствах могут существовать веские причины игнорировать определенный пункт, но перед выбором другого курса необходимо понимать и тщательно взвешивать все последствия.
XHTML 1.1 ДОЛЖНЫ быть помечены с помощью типа интернет-носителя text/html, как определено в [RFC2854], или application/xhtml+xml, как определено в [RFC3236].