Язык разметки гипертекста или HTML — это стандартный язык разметки для документов, предназначенных для отображения в веб-браузере . Он определяет содержание и структуру веб-контента . Этому часто помогают такие технологии, как каскадные таблицы стилей (CSS) и языки сценариев, такие как JavaScript .
Веб-браузеры получают документы HTML с веб-сервера или из локального хранилища и преобразуют их в мультимедийные веб-страницы. HTML семантически описывает структуру веб-страницы и изначально включал в себя элементы ее внешнего вида.
HTML-элементы — это строительные блоки HTML-страниц. С помощью конструкций HTML изображения и другие объекты, такие как интерактивные формы, могут быть встроены в отображаемую страницу. HTML предоставляет средства для создания структурированных документов путем обозначения структурной семантики текста, например заголовков, абзацев, списков, ссылок , кавычек и других элементов. HTML-элементы обозначаются тегами , записанными с использованием угловых скобок . Теги, такие как и, непосредственно добавляют контент на страницу. Другие теги, такие как и, окружают и предоставляют информацию о тексте документа и могут включать теги подэлементов. Браузеры не отображают теги HTML, а используют их для интерпретации содержимого страницы.<img>
<input>
<p>
</p>
В HTML можно встраивать программы, написанные на языке сценариев, например JavaScript , что влияет на поведение и содержимое веб-страниц. Включение CSS определяет внешний вид и расположение контента. Консорциум Всемирной паутины (W3C), бывший разработчик HTML и нынешний разработчик стандартов CSS, с 1997 года поощряет использование CSS вместо явного презентационного HTML. [2] Форма HTML, известная как HTML5 , используется для отображать видео и аудио, в основном с помощью элемента вместе с JavaScript.[update]<canvas>
В 1980 году физик Тим Бернерс-Ли , подрядчик ЦЕРН , предложил и создал прототип INQUIRE — системы, позволяющей исследователям ЦЕРН использовать и обмениваться документами. В 1989 году Бернерс-Ли написал записку, в которой предлагал создать гипертекстовую систему на базе Интернета . [3] Бернерс-Ли определил HTML и написал браузер и серверное программное обеспечение в конце 1990 года. В том же году Бернерс-Ли и инженер систем обработки данных ЦЕРН Роберт Кайо совместно работали над совместным запросом на финансирование, но проект не был официально принят ЦЕРН. В своих личных заметках 1990 года Бернерс-Ли перечислил «некоторые из многих областей, в которых используется гипертекст»; энциклопедия — это первая запись. [4]
Первым общедоступным описанием HTML был документ под названием «HTML Tags», [5] впервые упомянутый в Интернете Тимом Бернерсом-Ли в конце 1991 года. [6] [7] Он описывает 18 элементов, составляющих первоначальный, относительно простой дизайн. HTML. За исключением тега гиперссылки, на них сильно повлиял SGMLguid , собственный формат документации на основе стандартного обобщенного языка разметки (SGML) в CERN. Одиннадцать из этих элементов все еще существуют в HTML 4. [8]
HTML — это язык разметки , который веб-браузеры используют для интерпретации и компоновки текста, изображений и других материалов в видимые или слышимые веб-страницы. Характеристики по умолчанию для каждого элемента разметки HTML определяются в браузере, и эти характеристики могут быть изменены или улучшены путем дополнительного использования CSS разработчиком веб-страницы . Многие текстовые элементы упоминаются в техническом отчете ISO 1988 года TR 9537 « Методы использования SGML» , в котором описываются особенности ранних языков форматирования текста, таких как тот, который использовался командой RUNOFF , разработанной в начале 1960-х годов для CTSS (совместимого разделения времени). Система) операционная система. Эти команды форматирования произошли от команд, используемых наборщиками для форматирования документов вручную. Однако концепция обобщенной разметки 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 поддерживаются Консорциумом World Wide Web (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 />
<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/" > Ссылка на Википедию ! _ _ </ а >
Существует много возможных способов, которыми пользователь может вводить данные, например:
< 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 отображает слово « Википедия » как гиперссылку. Чтобы отобразить изображение как гиперссылку, элемент вставляется в качестве содержимого в элемент. Like — пустой элемент с атрибутами, но без содержимого или закрывающего тега. .<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/HTML/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> , как говорят во Франции . </ р >
Элемент сокращения , abbr
можно использовать для демонстрации некоторых из этих атрибутов:
< abbr id = "anId" class = "жаргон" style = "color:purple;" title = «Язык разметки гипертекста» > HTML </ abbr >
Этот пример отображается в формате HTML ; в большинстве браузеров при наведении курсора на сокращение должен отображаться текст заголовка «Язык гипертекстовой разметки».
Большинство элементов используют атрибут, связанный с языком, dir
для указания направления текста, например, «rtl» для текста с письмом справа налево, например, на арабском , персидском или иврите . [78]
Начиная с версии 4.0, HTML определяет набор из 252 ссылок на символьные сущности и набор из 1 114 050 ссылок на числовые символы , которые позволяют записывать отдельные символы с помощью простой разметки, а не буквально. Буквальный символ и его аналог в разметке считаются эквивалентными и отображаются одинаково.
Возможность « экранировать » символы таким способом позволяет интерпретировать символы <
и &
(когда они записаны как <
и &
соответственно) как символьные данные, а не как разметку. Например, литерал <
обычно указывает начало тега и &
обычно указывает начало ссылки на символьный объект или ссылку на числовой символ; написание его как &
или позволяет включить его в содержимое элемента или в значение атрибута &
. Символ двойной кавычки ( ), если он не используется для кавычки значения атрибута, также должен быть экранирован, как или или, когда он появляется внутри самого значения атрибута. Аналогично, символ одинарной кавычки ( ), если он не используется для кавычки значения атрибута, также должен быть экранирован как или (или как в документах HTML5 или XHTML [79] [80] ), когда он появляется внутри самого значения атрибута. Если авторы документов упускают из виду необходимость экранирования таких символов, некоторые браузеры могут проявить снисходительность и попытаться использовать контекст, чтобы угадать их намерения. Результатом по-прежнему остается недействительная разметка, что делает документ менее доступным для других браузеров и других пользовательских агентов , которые могут попытаться проанализировать документ, например, для целей поиска и индексирования .&
&
"
"
"
"
'
'
'
'
Экранирование также позволяет отображать в содержимом элемента и атрибута символы, которые сложно набрать или которые недоступны в кодировке документа. Например, символ с острым ударением e
( é
), символ, который обычно встречается только на клавиатурах Западной Европы и Южной Америки, можно записать в любом документе HTML как ссылку на объект é
или как числовые ссылки é
или é
с использованием символов, доступных на всех клавиатурах и поддерживаются во всех кодировках символов. Кодировки символов Юникода, такие как UTF-8 , совместимы со всеми современными браузерами и обеспечивают прямой доступ практически ко всем символам мировых систем письма. [81]
HTML определяет несколько типов данных для содержимого элемента, таких как данные сценария и данные таблицы стилей, а также множество типов для значений атрибутов, включая идентификаторы, имена, URI , числа, единицы длины, языки, дескрипторы мультимедиа, цвета, кодировки символов, даты. и время и так далее. Все эти типы данных являются специализациями символьных данных.
HTML-документы должны начинаться с объявления типа документа (неформально «тип документа»). В браузерах тип документа помогает определить режим рендеринга, в частности, использовать ли режим совместимости .
Первоначальная цель doctype заключалась в том, чтобы обеспечить анализ и проверку HTML-документов с помощью инструментов SGML на основе определения типа документа (DTD). DTD, на который ссылается DOCTYPE, содержит машиночитаемую грамматику, определяющую разрешенное и запрещенное содержимое документа, соответствующего такому DTD. С другой стороны, браузеры не реализуют HTML как приложение SGML и, как следствие, не читают DTD.
HTML5 не определяет DTD; поэтому в HTML5 объявление типа документа проще и короче: [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, чтобы правильно проанализировать документ и выполнить проверку. В современных браузерах действительный тип документа активирует стандартный режим, а не режим совместимости .
Кроме того, HTML 4.01 предоставляет DTD Transitional и Frameset, как описано ниже. Переходный тип является наиболее всеобъемлющим и включает в себя текущие теги, а также старые или «устаревшие» теги, при этом Strict DTD исключает устаревшие теги. Набор фреймов содержит все теги, необходимые для создания фреймов на странице, а также теги, включенные в переходный тип. [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-документом, может влиять на первоначальную интерпретацию документа. Ожидается, что документ, отправленный с типом XHTML MIME, будет правильно сформированным XML; синтаксические ошибки могут привести к тому, что браузер не сможет его отобразить. Тот же документ, отправленный с типом HTML MIME, может быть успешно отображен, поскольку некоторые браузеры более снисходительны к 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 это происходит из HTTP- Content-Type
заголовка, отправленного сервером.<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></div>
<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. Версия Strict предназначена для новых документов и считается передовой практикой, в то время как версии Transitional и Frameset были разработаны для облегчения перехода документов, которые соответствовали старым спецификациям HTML или не соответствовали какой-либо спецификации, в версию HTML 4. Версии Transitional и Frameset допускают презентационную разметку, которая отсутствует в версии Strict. Вместо этого рекомендуется использовать каскадные таблицы стилей для улучшения представления 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
on td
и th
elementsbgcolor
(Устарело. Вместо этого используйте CSS.) Атрибут tr
элементаclear
(Устаревший) атрибут br
элементаcompact
атрибут on dl
и dir
элементыmenu
type
(Устарело. Вместо этого используйте CSS.), compact
(Устарело. Вместо этого используйте CSS.) и start
(Устарело. Вместо этого используйте CSS.) Атрибуты ol
и ul
элементы.type
и value
атрибуты li
элементаwidth
атрибут pre
элементаmenu
(Устарело. Вместо этого используйте CSS.) list (не рекомендуется использовать неупорядоченный список)dir
(Устарело. Вместо этого используйте CSS.) list (без замены, хотя рекомендуется использовать неупорядоченный список)isindex
(Устарело.) (элемент требует поддержки на стороне сервера и обычно добавляется в документы на стороне сервера, form
а input
элементы могут использоваться в качестве замены)applet
(Устарело. object
Вместо этого используйте этот элемент.)language
(Устаревший) элемента сценария (избыточен для type
атрибута).iframe
noframes
target
(Устарело в элементах и map
. ) Атрибут , image-map ( ), и elements на стороне клиентаlink
form
a
map
link
form
base
Версия Frameset включает в себя все, что есть в переходной версии, а также элемент 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, разработанный WHATWG, является официальной версией, а HTML5 W3C больше не является отдельным от 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», могут быть помечены типом интернет-носителей «text/html» [RFC2854], поскольку они совместимы с большинством HTML-браузеров. Эти документы и любые другие документы, соответствующие этой спецификации, также могут быть помечены типом интернет-носителя «application/xhtml+xml», как определено в [RFC3236].
3. СЛЕДУЕТ Это слово или прилагательное «РЕКОМЕНДУЕТСЯ» означать, что в определенных обстоятельствах могут существовать веские причины игнорировать конкретный пункт, но все последствия должны быть поняты и тщательно взвешены, прежде чем выбирать другой курс.
Документы XHTML 1.1 ДОЛЖНЫ быть помечены типом интернет-медиа text/html, как определено в [RFC2854], или application/xhtml+xml, как определено в [RFC3236].