Языки разметки документов

В системах обработки текстов в документ включается дополнительная информация, называемая разметкой и выполняющая следующие функции:

- выделение логических элементов данного документа;

- задание функций обработки выделенных элементов.

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

Альтернативный способ разметки заключается в выделении части текста без указания способа обработки выделения. Затем другие команды назначают фрагментам способ обработки. Такая разметка называется описательной (дескриптивной). Она включает метки (tags, тэги) начала и окончания элемента текста и указывает, как интерпретировать данный фрагмент.

Изменяя набор процедур, соответствующий описательной разметке, можно изменить внешнее представление одного и того же документа. Развитие идей описательной разметки привело к определению разметки как формального языка. Это позволяет проверить правильность разметки и минимизировать ее объем за счет подстановки умолчаний.

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

Описательная разметка также облегчает задачу переформатирования документа при необходимости, поскольку описание формата не связано с содержанием. Например, курсив может использоваться либо для выделения текста, либо отметки специфических терминов, либо для других целей. Однако если слова просто выделены (дескриптивно или процедурно) как курсив, в этой двусмысленности нельзя полностью разобраться. Если же эти два случая были по-разному размечены в самом начале, каждый из них может быть переформатирован независимо от других. Родовидовая (generic markup) разметка – другое наименование для описательной разметки.

Практически элементы различных классов разметок обычно сосуществуют в любой конкретной системе. Например, HTML содержит как элементы разметки, которые являются процедурными (b для полужирного шрифта), так и другие, которые являются описательными («blockquote», или «href», – признак). HTML также включает элемент PRE, который ограничивает область текста, которая будет расположена точно так, как напечатано.

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

Большой интерес вызывают и документы неиерархических структур, отдельные разделы которых часто пересекаются. Они не могут быть полностью закодированы с использованием только системы разметки с древовидной структурой. Существуют системы моделирования документов, которые поддерживают такие структуры, – MECS, TEI Guidelines, LMNL, и CLIX.

Наиболее известны языки разметки, такие как: DocBook, MathML, SVG, Open eBook, XBRL и др. В основном они предназначены для представления различных текстовых документов, но специализированные языки могут использоваться во многих других областях. Безусловно, наиболее хорошо известен язык разметки HTML (язык разметки гипертекста), одна из основ WWW (Всемирной паутины).