Тег, те́ги (иногда тэг, англ. tag — именованная метка, читается /tæg/; более правильное название — дескриптор). В SGML (HTML, WML, AmigaGuide, языках семейства XML) — элемент языка разметки гипертекста. Текст, содержащийся между начальным и конечным тегом, отображается и размещается в соответствии со свойствами, указанными в начальном теге.
Например, текст Википедии, заключённый между начальным тегом и конечным тегом (от англ. small — маленький), отображается с меньшим размером, чем основной текст: Это маленький текст, а текст между тегами и отображается с большим размером: А это — большой.
Синтаксис тегов
Обычно используются парные теги — открывающий, или начальный, и закрывающий, или конечный. Возможно также применение одиночного тега. Например, тег отступа абзаца может оформлять абзац между тегами
и
, а может в одиночной форме до следующего первого попавшегося тега
.
Тег с пустым текстом:
вставляет разрыв текста без сохранения отступов, можно также использовать специальную форму записи тега — .
Набор и рекомендуемые интерпретации тегов определены организацией W3C.
В SGML можно назначать другие символы для обрамления тега (например, фигурные скобки), но в некоторых подмножествах этого языка (например, HTML и XML) такая возможность отсутствует.
Кроме того, существуют разные системы языков-подмножеств с меньшими возможностями. Например, на веб-форумах и досках объявлений используется язык разметки BBCode, теги которого ограничиваются символами квадратных скобок: [ ].
Например, [url="http://ru.wikipedia.org"]Русская Википедия[/url] — ссылка на языке BBCode, указывающая на страницу русской Википедии.
Теги и элементы
Весь текст, заключённый между начальным и конечным тегом, включая и сами эти теги, называется элементом. Сам же текст между тегами — содержанием элемента. Содержание элемента может включать в себя любой текст, в том числе и другие элементы.
Атрибуты
У тега могут быть свойства, называемые атрибутами, дающие дополнительные возможности форматирования текста. Они записываются в виде сочетания: имя атрибута-значения, причём текстовые значения заключаются в кавычки.
Например, можно выделить фрагмент текста определённым шрифтом, используя тег и указав в этом теге название шрифта и желаемый размер: оформляемый текст .
Тип элемента документа
Имя тега определяет тип элемента. В HTML имя тега определяет лишь правило разметки, так, имя тега «i» (например Курсивный текст) определяет, что между тегами расположен текст, который следует отображать в браузере в курсивном начертании. XML представляет собой более гибкий стандарт. Имена тегов в нём не регламентируются жёстко: пользователи могут вводить и использовать для своих нужд новые теги (см. XML). Например, мы сами для себя можем определить, что элементом с именем тега «person» мы определяем тип этого XML элемента, как фамилия имя и отчество. И скажем, год рождения, как часть информации по данному человеку:
XML: Иванов Иван Иванович 1984 Можно даже задать дополнительно в таблицах CSS, что все теги будут определённого цвета. HTML:
Иванов Иван Иванович, 1984
Тут уже нет возможности сформировать элемент документа для анализа текста, но оформить можно.
Таким образом, HTML представляет собой неструктурированный текст, а XML — документ с иерархической структурой, что даёт возможность обработки документа: трансформацию данных, поиск нужных элементов документа и т. д.
Структура элемента
В SGML и основанных на нём языках (HTML версий 2—4.01, языки семейства XML и т. д.) элементы должны быть строго вложенными друг в друга, «перехлёст» элементов недопустим:
неправильно: правильно: Имя Фамилия
Распространённое заблуждение, что SGML и HTML разрешают «перехлёст» элементов, основано на нарушающем стандарты[8] поведении старых версий браузеров, пытавшихся «исправлять» ошибки разметки по собственным алгоритмам.
Однако SGML (и HTML) допускают применение ряда сокращенных синтаксических конструкций, в том числе необязательные (опциональные) закрывающие и даже открывающие теги (автоматически достраиваемые при разборе документа на основе указанной схемы документа и текущего контекста). В XML, напротив, все теги должны быть открыты и закрыты явным образом, что значительно упрощает алгоритм его разбора и снижает требования к аппаратному обеспечению для него.