Язык разметки — это система кодирования текста , которая определяет структуру и форматирование документа, а также, потенциально, отношения между его частями. [1] Разметка может управлять отображением документа или обогащать его содержимое для упрощения автоматизированной обработки.
Язык разметки — это набор правил, определяющих, какую информацию разметки можно включить в документ и как она сочетается с содержимым документа таким образом, чтобы облегчить его использование людьми и компьютерными программами. Идея и терминология произошли от «разметки» бумажных рукописей (например, с инструкциями редакторов по исправлению), традиционно написанной красной ручкой или синим карандашом на рукописях авторов. [2]
Более старые языки разметки, которые обычно фокусируются на типографике и представлении, включают в себя Troff , TeX и LaTeX . Scribe и большинство современных языков разметки, таких как XML , идентифицируют компоненты документа (например, заголовки, абзацы и таблицы), ожидая, что технология, такая как таблицы стилей , будет использоваться для применения форматирования или другой обработки. [ необходима цитата ]
Некоторые языки разметки, такие как широко используемый HTML , имеют предопределенную семантику представления , что означает, что их спецификации предписывают некоторые аспекты того, как представлять структурированные данные на определенных носителях. HTML, как DocBook , Open eBook , JATS и многие другие, основаны на метаязыках разметки SGML и XML . То есть, SGML и XML позволяют разработчикам указывать определенные схемы , которые определяют, какие элементы, атрибуты и другие функции разрешены и где. [ необходима цитата ]
Ключевой характеристикой большинства языков разметки является то, что они позволяют смешивать разметку с содержимым документа, таким как текст и изображения. Например, если несколько слов в предложении необходимо подчеркнуть или обозначить как имя собственное, определяемый термин или другой специальный элемент, разметка может быть вставлена между символами предложения.
Разметка существительного произошла от традиционной издательской практики, называемой « разметкой» рукописи [ 3] , которая подразумевает добавление рукописных аннотаций в форме обычных символических инструкций для типографа — на полях и в тексте статьи или печатной рукописи.
На протяжении столетий эта задача выполнялась в основном опытными типографами, известными как «разметчики» [4] или «маркировщики» [5], которые размечали текст, чтобы указать, какой шрифт , стиль и размер следует применить к каждой части, а затем передавали рукопись другим для ручного или машинного набора .
Разметку также обычно применяли редакторы, корректоры , издатели и графические дизайнеры, а также авторы документов, каждый из которых мог также отмечать и другие вещи, такие как исправления, изменения и т. д.
Существуют три основные общие категории электронной разметки, сформулированные в работах Кумбса, Ренира и ДеРоуза (1987) [6] и Брея (2003) [7] .
<cite>
тег HTML, который используется для маркировки цитаты. Описательная разметка — иногда называемая логической разметкой или концептуальной разметкой — побуждает авторов писать таким образом, чтобы описывать материал концептуально, а не визуально. [8]Существует значительное размывание границ между типами разметки. В современных системах обработки текстов презентационная разметка часто сохраняется в системах, ориентированных на описательную разметку, таких как XML , а затем обрабатывается процедурно реализациями . Программирование в системах процедурной разметки, таких как TeX , может использоваться для создания систем разметки более высокого уровня, которые являются более описательными по своей природе, таких как LaTeX .
В последние годы было разработано несколько языков разметки, главной целью которых была простота использования, и без участия организаций по стандартизации, с целью позволить авторам создавать форматированный текст через веб-браузеры , например, в вики и на веб-форумах . Иногда их называют облегченными языками разметки . Примерами таких языков являются Markdown , BBCode и язык разметки, используемый Википедией .
Первая известная публичная презентация языков разметки в компьютерной обработке текста была сделана Уильямом В. Танниклиффом на конференции в 1967 году, хотя он предпочитал называть это обобщенным кодированием. Это можно рассматривать как ответ на появление таких программ, как RUNOFF , каждая из которых использовала свои собственные контрольные обозначения, часто специфичные для целевого устройства набора. В 1970-х годах Танниклифф руководил разработкой стандарта GenCode для издательской отрасли и позже был первым председателем комитета Международной организации по стандартизации , который создал SGML , первый стандартный описательный язык разметки. Дизайнер книг Стэнли Райс опубликовал предположения в том же духе в 1970 году. [9]
Брайан Рид в своей диссертации 1980 года в Университете Карнеги-Меллона разработал теорию и рабочую реализацию описательной разметки в реальном использовании. Однако сегодня чаще всего «отцом» языков разметки считают исследователя из IBM Чарльза Гольдфарба . Гольдфарб придумал основную идею, работая над примитивной системой управления документами, предназначенной для юридических фирм, в 1969 году и помог изобрести IBM GML позднее в том же году. Впервые GML был публично раскрыт в 1973 году.
В 1975 году Голдфарб переехал из Кембриджа, штат Массачусетс, в Кремниевую долину и стал планировщиком продуктов в исследовательском центре IBM Almaden . Там он убедил руководителей IBM в 1978 году развернуть GML в коммерческих целях как часть продукта IBM Document Composition Facility, и в течение нескольких лет он стал широко использоваться в бизнесе.
SGML, основанный как на GML, так и на GenCode, был проектом ISO , над которым Гольдфарб работал с 1974 года. [10] В конечном итоге Гольдфарб стал председателем комитета SGML. SGML был впервые выпущен ISO как стандарт ISO 8879 в октябре 1986 года.
Некоторые ранние примеры языков компьютерной разметки, доступных за пределами издательской индустрии, можно найти в наборных инструментах в системах Unix, таких как troff и nroff . В этих системах команды форматирования вставлялись в текст документа, чтобы наборное программное обеспечение могло форматировать текст в соответствии со спецификациями редактора. Это был итеративный процесс проб и ошибок , чтобы правильно напечатать документ. [11] Доступность издательского программного обеспечения WYSIWYG («что видишь, то и получаешь») вытеснила большую часть использования этих языков среди случайных пользователей, хотя серьезная издательская работа по-прежнему использует разметку для указания невизуальной структуры текстов, и редакторы WYSIWYG теперь обычно сохраняют документы в формате на основе языка разметки.
Другим крупным издательским стандартом является TeX , созданный и усовершенствованный Дональдом Кнутом в 1970-х и 1980-х годах. TeX был сосредоточен на детальной компоновке текста и описаний шрифтов для набора математических книг. Это потребовало от Кнута потратить значительное время на изучение искусства набора . TeX в основном используется в академической среде , где он является фактическим стандартом во многих научных дисциплинах. Пакет макросов TeX, известный как LaTeX, предоставляет описательную систему разметки поверх TeX и широко используется как в научном сообществе, так и в издательской индустрии.
Первым языком, который четко различал структуру и представление, был Scribe , разработанный Брайаном Ридом и описанный в его докторской диссертации в 1980 году. [12] Scribe был революционным во многих отношениях, представив идею стилей, отделенных от размеченного документа, и грамматику , которая контролировала использование описательных элементов. Scribe повлиял на разработку Generalized Markup Language (позже SGML), [13] и является прямым предком HTML и LaTeX . [14]
В начале 1980-х годов идея о том, что разметка должна фокусироваться на структурных аспектах документа и оставлять визуальное представление этой структуры интерпретатору, привела к созданию SGML . Язык был разработан комитетом под председательством Голдфарба. Он вобрал в себя идеи из многих различных источников, включая проект Танниклиффа GenCode. Шарон Адлер, Андерс Берглунд и Джеймс А. Марке также были ключевыми членами комитета SGML.
SGML определил синтаксис для включения разметки в документы, а также один для отдельного описания того, какие теги были разрешены и где (Определение типа документа ( DTD ), позже известное как схема ). Это позволило авторам создавать и использовать любую разметку, которую они хотели, выбирая теги, которые имели для них наибольший смысл и были названы на их собственных естественных языках, а также допуская автоматическую проверку. Таким образом, SGML по сути является метаязыком , и многие конкретные языки разметки являются производными от него. С конца 80-х годов большинство существенных новых языков разметки были основаны на системе SGML, включая, например, TEI и DocBook . SGML был обнародован в качестве международного стандарта Международной организацией по стандартизации , ISO 8879, в 1986 году. [15]
SGML нашел широкое признание и применение в областях с очень масштабными требованиями к документации. Однако многие посчитали его громоздким и сложным для изучения — побочный эффект его дизайна, пытающегося сделать слишком много и слишком гибкого. Например, SGML сделал конечные теги (или начальные теги, или даже оба) необязательными в определенных контекстах, поскольку его разработчики считали, что разметка будет выполняться вручную перегруженным работой персоналом поддержки, который был бы признателен за экономию нажатий клавиш [ требуется цитата ] .
В 1989 году компьютерный ученый сэр Тим Бернерс-Ли написал меморандум, предлагающий гипертекстовую систему на основе Интернета , [16] затем определил HTML и написал браузер и серверное программное обеспечение в конце 1990 года. Первым общедоступным описанием HTML был документ под названием «HTML Tags», впервые упомянутый в Интернете Бернерсом-Ли в конце 1991 года. [17] [18] Он описывает 18 элементов, составляющих первоначальный, относительно простой дизайн HTML. За исключением тега гиперссылки, они были сильно вдохновлены SGMLguid , внутренним форматом документации на основе SGML в ЦЕРНе , и очень похожи на пример схемы в стандарте SGML. Одиннадцать из этих элементов все еще существуют в HTML 4. [19]
Бернерс-Ли считал HTML приложением SGML. Целевая группа по инжинирингу Интернета (IETF) формально определила его как таковое с публикацией в середине 1993 года первого предложения по спецификации HTML: «Язык гипертекстовой разметки (HTML)» Internet-Draft, заархивированный 3 января 2017 г. на Wayback Machine Бернерсом-Ли и Дэном Коннолли , который включал Определение типа документа SGML для определения грамматики. [20] Многие из текстовых элементов HTML можно найти в техническом отчете ISO 1988 г. TR 9537 Методы использования SGML , который, в свою очередь, охватывает функции ранних языков форматирования текста, таких как тот, который использовался командой RUNOFF, разработанной в начале 1960-х годов для операционной системы CTSS (Compatible Time-Sharing System). Эти команды форматирования были получены из тех, которые использовались наборщиками для ручного форматирования документов. Стивен ДеРоуз [21] утверждает, что использование HTML описательной разметки (и влияние SGML в частности) было основным фактором успеха Интернета из-за гибкости и расширяемости, которые оно обеспечивало. HTML стал основным языком разметки для создания веб-страниц и другой информации, которая может отображаться в веб-браузере, и, вероятно, является наиболее используемым языком разметки в мире сегодня.
XML (Extensible Markup Language) — это очень широко используемый язык метаразметки. XML был разработан Консорциумом Всемирной паутины в комитете, созданном и возглавляемом Джоном Босаком . Основной целью XML было упрощение SGML путем сосредоточения на конкретной проблеме — документах в Интернете. [22] XML остается метаязыком, как и SGML, позволяя пользователям создавать любые необходимые теги (отсюда и «расширяемый»), а затем описывать эти теги и их разрешенные использования.
Принятие XML было облегчено, поскольку каждый XML-документ может быть написан таким образом, что он также является документом SGML, и существующие пользователи и программное обеспечение SGML могут довольно легко перейти на XML. Однако XML устранил многие из более сложных функций SGML, чтобы упростить среды реализации, такие как документы и публикации. Он, казалось, нашел золотую середину между простотой и гибкостью, а также поддерживал очень надежные инструменты определения и проверки схем и был быстро принят для многих других целей. XML в настоящее время широко используется для передачи данных между приложениями, для сериализации данных программ, для протоколов связи с оборудованием, векторной графики и многих других целей, а также документов.
С января 2000 года и до выхода HTML 5 все рекомендации W3C для HTML основывались на XML с использованием аббревиатуры XHTML ( Extensible Hyper Text Markup Language ). Спецификация языка требует, чтобы веб-документы XHTML были правильно сформированными документами XML . Это позволяет создавать более строгие и надежные документы, избегая многих синтаксических ошибок, которые исторически приводили к несовместимому поведению браузеров, при этом по - прежнему используя компоненты документа, знакомые с HTML.
Одним из самых заметных различий между HTML и XHTML является правило, согласно которому все теги должны быть закрыты : пустые теги HTML, такие как , <br>
должны быть либо закрыты обычным конечным тегом, либо заменены специальной формой: <br />
(пробел перед ' /
' в конечном теге необязателен, но часто используется, поскольку он позволяет некоторым веб-браузерам до XML и анализаторам SGML принимать тег). Другое отличие заключается в том, что все значения атрибутов в тегах должны быть заключены в кавычки. Оба эти различия обычно критикуются как многословные, но также хвалятся, поскольку они значительно облегчают обнаружение, локализацию и исправление ошибок. Наконец, все имена тегов и атрибутов в пространстве имен XHTML должны быть строчными, чтобы быть допустимыми. HTML, с другой стороны, нечувствителен к регистру.
Сейчас существует множество приложений на основе XML, включая Resource Description Framework как RDF/XML , XForms , DocBook , SOAP и Web Ontology Language (OWL). Частичный список этих приложений см. в разделе Список языков разметки XML .
Общей чертой многих языков разметки является то, что они смешивают текст документа с инструкциями разметки в одном потоке данных или файле. Это не обязательно; можно изолировать разметку от текстового содержимого, используя указатели, смещения, идентификаторы или другие методы для координации этих двух. Такая «разметка с отступом» типична для внутренних представлений, которые программы используют для работы с размеченными документами. Однако встроенная или «встроенная» разметка гораздо более распространена в других местах. Вот, например, небольшой фрагмент текста, размеченный в HTML:
<!DOCTYPE html>< html > < голова > < meta charset = "utf-8" > < title > Моя тестовая страница </ title > </head> < тело > < h1 > Mozilla — это круто </ h1 > < img src = "images/firefox-icon.png" alt = "Логотип Firefox: пылающая лиса, окружающая Землю." > < p > В Mozilla мы представляем собой глобальное сообщество </ p > < ul > <!-- изменено на список в руководстве --> < li > технологи </ li > < li > мыслители </ li > < li > строители </ li > </ ул > < p > работая вместе, чтобы сохранить Интернет живым и доступным, чтобы люди во всем мире могли быть информированными участниками и создателями Сети. Мы считаем, что этот акт человеческого сотрудничества через открытую платформу имеет важное значение для индивидуального роста и нашего коллективного будущего. </ p > < p > Прочитайте < a href = "https://www.mozilla.org/en-US/about/manifesto/" > Манифест Mozilla </ a > , чтобы узнать еще больше о ценностях и принципах, которые определяют реализацию нашей миссии. </ p > </ тело ></html>
Коды, заключенные в угловые скобки, <like this>
являются инструкциями разметки (известными как теги), в то время как текст между этими инструкциями является фактическим текстом документа. Коды h1
, p
и em
являются примерами семантической разметки, поскольку они описывают предполагаемую цель или значение текста, который они включают. В частности, h1
означает «это заголовок первого уровня», p
означает «это абзац» и em
означает «это выделенное слово или фраза». Программа, интерпретирующая такую структурную разметку, может применять свои собственные правила или стили для представления различных фрагментов текста, используя различные гарнитуры, жирность, размер шрифта, отступы, цвет или другие стили по желанию. Например, такой тег, как «h1» (уровень заголовка 1), может быть представлен в статье крупным жирным шрифтом без засечек или может быть подчеркнут в моноширинном (стиле пишущей машинки) документе — или он может просто не изменить представление вообще.
Напротив, i
тег в HTML 4 является примером презентационной разметки, которая обычно используется для указания конкретной характеристики текста без указания причины такого появления. В этом случае i
элемент диктует использование курсивного шрифта. Однако в HTML 5 этот элемент был перепрофилирован с более семантическим использованием: для обозначения диапазона текста в альтернативном голосе или настроении или иным образом смещен относительно обычной прозы способом, указывающим на другое качество текста
. Например, уместно использовать i
элемент для указания таксономического обозначения или фразы на другом языке. [23] Изменение было внесено для того, чтобы облегчить переход от HTML 4 к HTML 5 как можно более плавно, чтобы устаревшие варианты использования презентационных элементов сохранили наиболее вероятную предполагаемую семантику.
Text Encoding Initiative ( TEI) опубликовала обширные руководящие принципы [24] по кодированию текстов, представляющих интерес для гуманитарных и социальных наук, разработанные в течение многих лет международного сотрудничества. Эти руководящие принципы используются в проектах по кодированию исторических документов, работ отдельных ученых, периодов, жанров и т. д.
Хотя идея языка разметки возникла из текстовых документов, языки разметки все чаще используются в представлении других типов информации, включая плейлисты , векторную графику , веб-сервисы , синдикацию контента и пользовательские интерфейсы . Большинство из них — это XML-приложения, поскольку XML — это четко определенный и расширяемый язык. [ по мнению кого? ]
Использование XML также привело к возможности объединения нескольких языков разметки в один профиль, например XHTML+SMIL и XHTML+MathML+SVG . [25]
Некоторые рецензенты предпочитают следовать старой школе и использовать красную ручку на распечатанных документах.
SGML очень общий. HTML — это конкретное применение базового синтаксиса SGML, применяемое к гипертекстовым документам с простой структурой.