Открыть сервис

Язык разметки

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

История возникновения

Идея разметки текста восходит к типографскому делу, где издатели использовали рукописные пометки (корректурные знаки) для указания гарнитуры шрифта, начертания, отступов и других параметров. С появлением электронных вычислительных машин возникла необходимость в формализованном способе описания структуры документа, который был бы понятен как человеку, так и машине.

Ранние системы

Одним из первых языков разметки считается SGML (Standard Generalized Markup Language, стандартный обобщённый язык разметки), разработанный в 1960–1970-х годах Чарльзом Голдфарбом, Эдвардом Мошером и Раймондом Лори. SGML был принят в качестве международного стандарта ISO 8879 в 1986 году. Он предоставлял метаязык для создания других языков разметки, но отличался высокой сложностью и громоздкостью.

Параллельно развивались специализированные системы. В 1960-х годах в рамках проекта RUNOFF (программа форматирования текста для операционной системы CTSS) появились первые команды разметки, которые впоследствии эволюционировали в язык troff (Unix). В 1978 году Дональд Кнут создал систему TeX, предназначенную для научной и математической вёрстки; она до сих пор остаётся стандартом в академической среде.

Взрыв популярности в 1990-е

Ключевым моментом стало появление HTML (HyperText Markup Language, язык разметки гипертекста), разработанного Тимом Бернерсом-Ли в 1991–1993 годах для создания веб-страниц. HTML базировался на подмножестве SGML, но был значительно проще. С ростом Всемирной паутины HTML стал самым распространённым языком разметки в мире. В 1998 году консорциум W3C опубликовал спецификацию XML (eXtensible Markup Language, расширяемый язык разметки) — упрощённый диалект SGML, предназначенный для обмена данными.

Классификация языков разметки

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

Процедурная и описательная разметка

  • Процедурная (или императивная) разметка указывает, как должен быть обработан текст. Примеры: TeX, troff, PostScript (язык описания страниц). В таких языках команды задают конкретные действия (например, «увеличить шрифт на 2 пункта»).
  • Описательная (или декларативная) разметка описывает, чем является элемент текста. Примеры: HTML, XML, Markdown. Теги указывают на тип содержимого (заголовок, абзац, список), а не на его внешний вид. Форматирование определяется отдельно — через таблицы стилей (CSS) или шаблоны.

Языки общего и специального назначения

  • Общего назначения: SGML, XML, HTML, Markdown. Применимы для широкого круга задач — от веб-страниц до технической документации.
  • Специального назначения: TeX (научная вёрстка), MathML (математические формулы), SVG (векторная графика), KML (геоданные для Google Earth), DocBook (техническая документация).

По формату хранения

  • Текстовые (человекочитаемые): HTML, XML, Markdown, YAML, JSON (хотя JSON часто относят к форматам обмена данными, он также является языком разметки).
  • Бинарные (машиночитаемые): PDF, DOCX, ODF (форматы офисных пакетов) — содержат разметку, закодированную в двоичном виде, что затрудняет редактирование вручную.

Основные языки разметки и их особенности

HTML

HTML (HyperText Markup Language) — стандартный язык разметки документов во Всемирной паутине. Версия HTML5 (2014) является текущей. Основные элементы:

  • Теги: <html>, <head>, <body>, <h1><h6>, <p>, <a>, <img>, <div>, <span>.
  • Атрибуты: class, id, href, src, style.
  • Семантические теги: <header>, <nav>, <article>, <section>, <footer> — улучшают структуру и доступность.

HTML не является языком программирования; он описывает структуру веб-страницы. Внешний вид задаётся с помощью CSS (Cascading Style Sheets, каскадные таблицы стилей), а поведение — с помощью JavaScript.

XML

XML (eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных. Ключевые принципы:

  • Строгая иерархия: каждый открывающий тег должен иметь закрывающий.
  • Чувствительность к регистру.
  • Возможность создания собственных тегов (например, <book>, <author>, <price>).
  • Используется в форматах RSS, Atom, SOAP, SVG, XHTML, а также в конфигурационных файлах многих приложений.

Markdown

Markdown — облегчённый язык разметки, созданный Джоном Грубером и Аароном Шварцем в 2004 году. Предназначен для написания текста в простом, читаемом виде, который затем легко преобразуется в HTML. Основные элементы:

  • Заголовки: # (уровень 1), ## (уровень 2) и т. д.
  • Выделение: курсив, жирный.
  • Списки: - или * для маркированных, 1. для нумерованных.
  • Ссылки: [текст](url).
  • Изображения: ![альт](url).
  • Код: код (в обратных кавычках) или блоки с тройными кавычками.

Markdown широко используется в системах управления версиями (GitHub, GitLab), в вики-движках, блогах, мессенджерах (Telegram, Discord) и при создании документации.

TeX и LaTeX

TeX — система компьютерной вёрстки, разработанная Дональдом Кнутом. LaTeX — набор макросов поверх TeX, созданный Лесли Лэмпортом в 1980-х годах. Особенности:

  • Ориентация на научные и технические тексты.
  • Автоматическая нумерация разделов, формул, таблиц, рисунков.
  • Поддержка сложных математических выражений (через пакет amsmath).
  • Разделение содержания и оформления: пользователь пишет логическую структуру (например, \section{Введение}), а стиль оформления задаётся в преамбуле.

YAML

YAML (YAML Ain’t Markup Language) — язык разметки, ориентированный на данные. Используется для конфигурационных файлов (Ansible, Docker Compose, Kubernetes). Отличия:

  • Основан на отступах (пробелах), а не на тегах.
  • Поддерживает скаляры (строки, числа), списки и словари.
  • Чувствителен к отступам, табуляция не допускается.

Применение языков разметки

Языки разметки применяются практически во всех областях, связанных с обработкой текста и данных:

  • Веб-разработка: HTML (структура страниц), XML (обмен данными), Markdown (документация и комментарии).
  • Издательское дело и типография: TeX/LaTeX (книги, статьи, диссертации), XML (форматы ePub, DocBook).
  • Программирование и DevOps: YAML (конфигурации), JSON (API), XML (файлы проектов, конфигурации).
  • Научные исследования: LaTeX (публикации), MathML (формулы), SVG (графика).
  • Геоинформационные системы: KML (метки на картах), GML (географические данные).
  • Офисные приложения: DOCX, ODT (форматы Microsoft Word и LibreOffice) — внутренне используют XML.

Критика и ограничения

Несмотря на широкое распространение, языки разметки имеют ряд недостатков:

  • Избыточность: XML-документы могут быть в несколько раз больше по размеру, чем исходные данные, из-за повторяющихся тегов.
  • Сложность синтаксиса: SGML и XML требуют строгого соблюдения правил, что затрудняет ручное редактирование.
  • Смешение содержания и оформления: в HTML до версии 4.0 активно использовались теги форматирования (<font>, <center>), что нарушало принцип разделения структуры и стиля. В HTML5 это решено через семантические теги и CSS.
  • Отсутствие единого стандарта для облегчённых языков: существует множество диалектов Markdown (CommonMark, GitHub Flavored Markdown, MultiMarkdown), что приводит к несовместимости.

Интересные факты

  • Первый в мире веб-сайт, созданный Тимом Бернерсом-Ли в 1991 году, был написан на HTML и содержал всего несколько строк разметки.
  • Язык разметки BBCode (Bulletin Board Code) широко использовался на форумах начала 2000-х годов (например, phpBB) и до сих пор применяется в некоторых системах.
  • Существует язык разметки Creole (2007), разработанный как универсальный стандарт для вики-движков.
  • В 2023 году был опубликован проект HTML6 (черновик), который предполагает дальнейшее расширение семантических возможностей и интеграцию с веб-компонентами.

Источники

  • W3C. HTML5 Specification. — 2014.
  • ISO 8879:1986. Information processing — Text and office systems — Standard Generalized Markup Language (SGML).
  • Knuth D. E. The TeXbook. — Addison-Wesley, 1986.
  • Lamport L. LaTeX: A Document Preparation System. — Addison-Wesley, 1994.
  • Gruber J. Markdown: Syntax. — 2004.
  • YAML Specification 1.2. — 2009.
  • Bray T., Paoli J., Sperberg-McQueen C. M. Extensible Markup Language (XML) 1.0. — W3C, 1998.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →