Язык разметки - Markup language

Пример RecipeBook, простого языка на основе XML для создания рецептов. Разметку можно преобразовать в HTML, PDF и Расширенный текстовый формат используя язык программирования или же XSL.

В компьютерной обработке текста язык разметки это система для аннотирование а документ таким образом синтаксически различимый из текста,[1] Это означает, что когда документ обрабатывается для отображения, язык разметки не отображается, а используется только для форматирования текста.[2] Идея и терминология развились из «разметки» бумаги. рукописи (то есть инструкции редакторов по редактированию), которые традиционно пишутся красной ручкой или синий карандаш по рукописям авторов.[3] Такая «разметка» обычно включает в себя как исправления содержимого (например, орфографию, пунктуацию или перемещение содержимого), так и типографические инструкции, например, сделать заголовок более крупным или жирным.

В цифровые СМИ, этот "текст инструкции синим карандашом" был заменен на теги которые в идеале указывают, какие части документа находятся, а не детали того, как они могут быть показаны на каком-либо дисплее. Это позволяет авторам избегать избыточного (и, возможно, непоследовательного) форматирования каждого экземпляра одного и того же объекта. Он также избегает указания шрифтов и размеров, которые могут не относиться к многим пользователям (например, с дисплеями разного размера, с ослабленным зрением и программным обеспечением для чтения с экрана).

Ранние системы разметки обычно включали инструкции по набору, так как Troff, TeX и Латекс делать пока Писец и большинство современных систем разметки называют компоненты, а затем обрабатывают эти имена для применения форматирования или другой обработки, как в случае XML.

Некоторые языки разметки, такие как широко используемые HTML, предварительно определили семантика представления - это означает, что их спецификация предписывает некоторые аспекты того, как представлять структурированные данные на определенных СМИ. HTML, например DocBook, Открыть электронную книгу, JATS и бесчисленное множество других, это конкретное приложение метаязыков разметки SGML и XML. То есть SGML и XML позволяют пользователям указывать конкретные схемы, которые определяют, какие элементы, атрибуты и другие функции разрешены и где.

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

Этимология

Существительное разметка происходит из традиционной издательской практики, называемой "разметка" а рукопись,[4] который включает добавление рукописных аннотаций в виде условных символических принтер Инструкции - на полях и в тексте статьи или печатной рукописи. Это жаргон, используемый в кодировании доказательство. На протяжении веков эта задача выполнялась в основном опытными типографами, известными как «разметчики».[5] или "d-маркеры"[6] кто разметил текст, чтобы указать, что шрифт, стиль и размер следует применить к каждой части, а затем передать рукопись другим для наборный вручную или машиной. Разметка также обычно применялась редакторами, корректорами, издателями и графическими дизайнерами, а также авторами документов, каждый из которых также мог отмечать другие вещи, такие как исправления, изменения и т. Д.

Типы языка разметки

Существует три основных категории электронной разметки, сформулированные в Coombs, et al. (1987),[7] и Брей (2003).[8]

Презентационная разметка
Тип разметки, используемый в традиционных системах обработки текстов: двоичные коды, встроенные в текст документа, которые создают WYSIWYG ("что ты видишь, то и получаешь") эффект. Такая разметка обычно скрыта от пользователей-людей, даже от авторов и редакторов. Собственно говоря, такие системы используют процедурную и / или описательную разметку внизу, но преобразуют ее в" настоящее "для пользователя как геометрическое расположение шрифтов.
Процедурная разметка
Разметка встроена в текст и содержит инструкции для программ по обработке текста. Хорошо известные примеры включают Troff, TeX, и PostScript. Ожидается, что процессор будет просматривать текст от начала до конца, следуя инструкциям, которые встречаются. Текст с такой разметкой часто редактируется так, чтобы разметка была видна и непосредственно редактировалась автором. Популярные системы процедурной разметки обычно включают программные конструкции и макросы или подпрограммы обычно определяются так, что сложные наборы инструкций могут быть вызваны простым именем (и, возможно, несколькими параметрами). Это намного быстрее, менее подвержено ошибкам и удобно в обслуживании, чем повторение тех же или подобных инструкций во многих местах.
Описательная разметка
Разметка специально используется для обозначения частей документа, что они есть, а не того, как их следует обрабатывать. Хорошо известные системы, которые предоставляют множество таких этикеток, включают: Латекс, HTML, и XML. Цель состоит в том, чтобы отделить структура документа из какой-либо конкретной обработки или его представления. Такую разметку часто называют «семантической». Примером описательной разметки может служить HTML <cite> тег, который используется для обозначения цитаты. Описательная разметка - иногда ее называют логическая разметка или же концептуальная разметка - поощряет авторов писать таким образом, чтобы описывать материал концептуально, а не визуально.[9]

Границы между типами разметки сильно размыты. В современных системах обработки текста презентационная разметка часто сохраняется в системах, ориентированных на описательную разметку, таких как XML, а затем обрабатывается процедурно реализациями. Программирование в системах процедурной разметки, таких как TeX, может использоваться для создания систем разметки более высокого уровня, которые носят более описательный характер, например Латекс.

В последние годы был разработан ряд небольших и в значительной степени нестандартизированных языков разметки, позволяющих авторам создавать форматированный текст через веб-браузеры, например те, которые используются в вики и на веб-форумах. Иногда их называют облегченные языки разметки. Markdown и язык разметки, используемый Википедия примеры таких разметка вики.

История языков разметки

GenCode

Первая широко известная публичная презентация языков разметки в компьютерной обработке текста была сделана Уильям У. Танниклифф на конференции 1967 года, хотя он предпочитал называть это общее кодирование. Это можно рассматривать как ответ на появление таких программ, как СТОК что каждый использовал свои собственные контрольные обозначения, часто специфичные для целевого устройства набора. В 1970-х Танниклифф руководил разработкой стандарта GenCode для издательской индустрии, а позже стал первым председателем Международная организация по стандартизации комитет, который создал SGML, первый стандартный описательный язык разметки. Книжный дизайнер Стэнли Райс опубликовал подобные предположения в 1970 году.[10]

Брайан Рид, в его диссертации 1980 г. Университет Карнеги Меллон, разработал теорию и рабочую реализацию описательной разметки в реальных условиях. Тем не мение, IBM Исследователь Чарльз Гольдфарб сегодня чаще рассматривается как «отец» языков разметки. Гольдфарб понял основную идею, работая над примитивной системой управления документами, предназначенной для юридических фирм в 1969 году, и помог изобрести IBM GML позже в том же году. Впервые GML был обнародован в 1973 году.

В 1975 году Гольдфарб переехал из Кембридж, Массачусетс к Силиконовая долина и стал планировщиком продуктов в Исследовательский центр IBM в Альмадене. Там он убедил руководителей IBM коммерчески развернуть GML в 1978 году как часть продукта IBM Document Composition Facility, и в течение нескольких лет он широко использовался в бизнесе.

SGML, основанный как на GML, так и на GenCode, был проектом ISO, над которым Гольдфарб работал с 1974 года.[11] В конце концов Гольдфарб стал председателем комитета SGML. SGML был впервые выпущен ISO в качестве стандарта ISO 8879 в октябре 1986 года.

troff и nroff

Некоторые ранние примеры языков компьютерной разметки, доступные за пределами издательской индустрии, можно найти в инструментах набора на Unix такие системы как Troff и nroff. В этих системах команды форматирования вставлялись в текст документа, чтобы программное обеспечение для набора могло форматировать текст в соответствии со спецификациями редактора. Это было методом проб и ошибок итеративный процесс для правильной печати документа.[12] Наличие WYSIWYG («то, что вы видите, то и получаете») программное обеспечение для публикации вытеснило широкое использование этих языков обычными пользователями, хотя серьезная издательская работа по-прежнему использует разметку для определения невизуальной структуры текстов, а редакторы WYSIWYG теперь обычно сохраняют документы в разметке -языковой формат.

TeX для формул

Другой важный стандарт публикации - TeX, созданный и доработанный Дональд Кнут в 1970-х и 80-х годах. TeX сконцентрирован на детальном макете текста и описаниях шрифтов для набора математических книг. Это потребовало от Кнута потратить много времени на изучение искусства наборный. TeX в основном используется в академия, где это де-факто стандарт во многих научных дисциплинах. Пакет макросов TeX, известный как Латекс обеспечивает описательную систему разметки поверх TeX и широко используется как в научном сообществе, так и в издательской индустрии.[13]

Писец, GML и SGML

Первым языком, который провел четкое различие между структурой и представлением, был Писец, разработан Брайан Рид и описан в его докторской диссертации в 1980 году.[14] Scribe был революционным во многих отношениях, не в последнюю очередь потому, что он ввел идею стилей, отделенных от размеченного документа, и грамматика контроль использования описательных элементов. Писец повлиял на развитие Обобщенный язык разметки (позже SGML),[15] и является прямым предком HTML и Латекс.[16]

В начале 1980-х годов идея о том, что разметка должна фокусироваться на структурных аспектах документа и оставлять визуальное представление этой структуры интерпретатору, привела к созданию SGML. Язык был разработан комитетом под председательством Гольдфарба. В него вошли идеи из множества различных источников, включая проект Танниклиффа GenCode. Шэрон Адлер, Андерс Берглунд и Джеймс А. Марке также были ключевыми членами комитета SGML.

SGML определил синтаксис для включения разметки в документы, а также синтаксис для отдельного описания Какие теги были разрешены, и куда (Определение типа документа (DTD ), позже известный как схема ). Это позволяло авторам создавать и использовать любую разметку по своему усмотрению, выбирая теги, которые имели для них наибольший смысл и были названы на их собственных естественных языках, а также позволяла автоматическую проверку. Таким образом, SGML является собственно метаязык, и многие конкретные языки разметки являются производными от него. С конца 80-х годов наиболее существенные новые языки разметки были основаны на системе SGML, включая, например, TEI и DocBook. SGML был провозглашен международным стандартом Международная организация по стандартизации, ISO 8879, в 1986 г.[17]

SGML нашел широкое признание и использование в областях с очень крупномасштабными требованиями к документации. Тем не менее, многие сочли его громоздким и трудным для изучения - побочный эффект его дизайна, который пытается сделать слишком много и быть слишком гибким. Например, SGML сделал конечные теги (или начальные теги, или даже и то, и другое) необязательными в определенных контекстах, потому что его разработчики думали, что разметка будет выполняться вручную перегруженными работой сотрудниками службы поддержки, которые будут признательны за сохранение нажатий клавиш[нужна цитата ].

HTML

В 1989 году компьютерный ученый Сэр Тим Бернерс-Ли написал служебную записку с предложением Интернет -основан гипертекст система,[18] затем определил HTML и написал браузер и серверное программное обеспечение в последней половине 1990 года. Первым общедоступным описанием HTML был документ под названием «HTML-теги», впервые упомянутый в Интернете Бернерсом-Ли в конце 1991 года.[19][20] Он описывает 18 элементов, составляющих исходный, относительно простой дизайн HTML. За исключением тега гиперссылки, на них сильно повлияли SGMLguid, собственный SGML основанный на формате документации в CERN и очень похожий на образец схемы в стандарте SGML. Одиннадцать из этих элементов все еще существуют в HTML 4.[21]

Бернерс-Ли считал HTML приложением SGML. В Инженерная группа Интернета (IETF) формально определила его как таковое с публикацией в середине 1993 года первого предложения по спецификации HTML: Интернет-проект "Язык гипертекстовой разметки (HTML)" Бернерс-Ли и Дэн Коннолли, который включает SGML Определение типа документа определить грамматику.[22] Многие текстовые элементы HTML можно найти в техническом отчете ISO 1988 г. TR 9537. Методы использования SGML, который, в свою очередь, охватывает особенности ранних языков форматирования текста, таких как язык, используемый Команда RUNOFF разработан в начале 1960-х годов для CTSS (Совместимая система разделения времени) операционная система. Эти команды форматирования были взяты из команд, используемых наборщиками для ручного форматирования документов. Стивен ДеРоуз[23] утверждает, что использование в HTML описательной разметки (и, в частности, влияние SGML) было основным фактором успеха Интернета из-за гибкости и расширяемости, которые он обеспечивал. HTML стал основным языком разметки для создания веб-страниц и другой информации, которая может отображаться в веб-браузере, и, вероятно, сегодня это наиболее часто используемый язык разметки в мире.

XML

XML (Extensible Markup Language) - это очень широко используемый язык мета-разметки. XML был разработан Консорциум World Wide Web в комитете, созданном и возглавляемом Джон Босак. Основная цель XML - упростить SGML, сосредоточив внимание на конкретной проблеме - документах в Интернете.[24] XML остается метаязыком, как SGML, позволяя пользователям создавать любые необходимые теги (следовательно, «расширяемые»), а затем описывать эти теги и их разрешенное использование.

Принятию XML помогло то, что каждый XML-документ может быть написан таким образом, что он также является документом SGML, а существующие пользователи SGML и программное обеспечение могут довольно легко переключиться на XML. Однако XML устранил многие из более сложных функций SGML, чтобы упростить среды реализации, такие как документы и публикации. Казалось, что это золотая середина между простотой и гибкостью, а также поддержка очень надежных инструментов определения схемы и проверки, и была быстро принята для многих других целей. XML сейчас широко используется для общения данные между приложениями, для сериализации программных данных, для протоколов аппаратной связи, векторной графики и многих других применений, а также документов.

XHTML

С января 2000 г. все Рекомендации W3C для HTML были основаны на XML, а не на SGML, с использованием сокращения XHTML (EИксрастяжимый ЧАСyperТдоб MArkup Lязык). Спецификация языка требует, чтобы веб-документы XHTML были правильно сформированный XML-документы. Это позволяет создавать более строгие и надежные документы при использовании тегов, знакомых по HTML.

Одно из наиболее заметных различий между HTML и XHTML - это правило: все теги должны быть закрыты: пустые HTML-теги, такие как <br> либо должно быть закрыто с обычным закрывающим тегом или замененным специальной формой: <br /> (пробел перед '/'в конце тега является необязательным, но часто используется, поскольку позволяет некоторым веб-браузерам до XML и синтаксическим анализаторам SGML принимать тег). Другое дело, что все атрибут значения в тегах должны быть заключены в кавычки. Наконец, все имена тегов и атрибутов в пространстве имен XHTML должны быть в нижнем регистре, чтобы быть действительными. HTML, с другой стороны, нечувствителен к регистру.

Другие приложения на основе XML

Сейчас существует множество приложений на основе XML, включая Структура описания ресурсов в качестве RDF / XML, XForms, DocBook, МЫЛО, а Язык веб-онтологий (СОВА). Для неполного списка их см. Список языков разметки XML.

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

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

<h1>Anatidae</h1><п>Семья <я>Anatidae</я> включает уток, гусей и лебедей, но <Эм>нет</Эм> близкородственные крикуны.</п>

Коды в угловых скобках <like this> представляют собой инструкции разметки (известные как теги), а текст между этими инструкциями - это фактический текст документа. Коды h1, п, и Эм являются примерами семантический разметка в том смысле, что они описывают предназначение или значение текста, который они включают. Конкретно, h1 означает "это заголовок первого уровня", п означает «это абзац», и Эм означает «это выделенное слово или фраза». Программа, интерпретирующая такую ​​структурную разметку, может применять свои собственные правила или стили для представления различных фрагментов текста, используя различные гарнитуры, жирность, размер шрифта, отступ, цвет или другие стили, по желанию. Например, тег, такой как "h1" "(уровень заголовка 1) может быть представлен в статье крупным жирным шрифтом без засечек, или он может быть подчеркнут в моноширинном документе (в стиле пишущей машинки) - или это может просто не изменить представление.

Напротив, я тег в HTML 4 является примером презентационный разметка, которая обычно используется для указания конкретной характеристики текста без указания причины такого появления. В этом случае я определяет использование курсива. Однако в HTML 5, этот элемент был изменен с более семантическим использованием: для обозначения фрагмент текста с другим голосом или настроением или иным образом смещенным от обычной прозы, что указывает на другое качество текста. Например, уместно использовать я элемент для обозначения таксономического обозначения или фразы на другом языке.[25] Это изменение было сделано для того, чтобы максимально упростить переход от HTML 4 к HTML 5, чтобы устаревшие варианты использования презентационных элементов сохранили наиболее вероятную предполагаемую семантику.

В Инициатива кодирования текста (TEI) опубликовала обширное руководство[26] о том, как кодировать тексты, представляющие интерес в области гуманитарных и социальных наук, разработанные за годы международной совместной работы. Эти руководящие принципы используются проектами, кодирующими исторические документы, работы определенных ученых, периодов или жанров и т. Д.

Альтернативные способы использования

Хотя идея языка разметки возникла в текстовых документах, все чаще используются языки разметки при представлении других типов информации, включая плейлисты, векторная графика, веб-сервисы, распространение контента, и пользовательские интерфейсы. Большинство из них являются приложениями XML, поскольку XML - это четко определенный и расширяемый язык.

Использование XML также привело к возможности объединения нескольких языков разметки в один профиль, например XHTML + SMIL и XHTML + MathML + SVG.[27]

Смотрите также

Рекомендации

  1. ^ "язык разметки". Словарь Merriam-Webster.
  2. ^ «Язык разметки § Объяснение». Глоссарий данных Science Europe.
  3. ^ Сихерт, Карл; Ботт, Эд (2013). Microsoft Office Inside Out: издание 2013 г.. Pearson Education. п. 305. ISBN  978-0735669062. ... Некоторые обозреватели предпочитают следовать старой школе, используя красную ручку при печати ....
  4. ^ ЧЭНЬ, СиньИн (2011). «Центральные узлы китайских синтаксических сетей». Китайский научный бюллетень. 56 (10): 735–740. Дои:10.1360/972010-2369. ISSN  0023-074X.
  5. ^ Аллан Вудс, Современное газетное производство (Нью-Йорк: Harper & Row, 1963), 85; Стюарт Харрал, Прибыльные связи с общественностью для газет (Анн-Арбор: Дж. В. Эдвардс, 1957), 76; и Кьярелла против Соединенных Штатов, 445 НАС. 222 (1980).
  6. ^ Из записных книжек H.J.H & D.H.A о композиции, Kingsport Press Inc., без даты (1960-е годы).
  7. ^ Кумбс, Джеймс Х .; Renear, Allen H .; ДеРоуз, Стивен Дж. (Ноябрь 1987 г.). «Системы разметки и будущее обработки научных текстов». Коммуникации ACM. 30 (11): 933–947. CiteSeerX  10.1.1.515.5618. Дои:10.1145/32206.32209. S2CID  59941802.
  8. ^ Брей, Тим (9 апреля 2003 г.). «О семантике и разметке, систематике разметки». www.tbray.org/ongoing. Получено 9 июля 2015.
  9. ^ Майкл Даунс.«TEX и LATEX 2e»
  10. ^ Райс, Стэнли. «Редакционные текстовые структуры (с некоторыми отношениями к информационным структурам и элементам управления форматом в компьютеризированной композиции)». Американский национальный институт стандартов, 17 марта 1970 г.
  11. ^ «Интервью 2009 года с создателем SGML Чарльзом Ф. Гольдфарбом». Журнал доктора Добба. Получено 2010-07-18.[постоянная мертвая ссылка ]
  12. ^ Дэниел Гилли. Коротко о Unix: Глава 12. Nroff и Troff. Книги О'Рейли, 1992. ISBN  1-56592-001-5
  13. ^ "Окончательное, нетехническое введение в LaTeX, профессиональный набор текста и научные публикации". Математическое хранилище. 2015-09-05. Получено 2019-07-18.
  14. ^ Рид, Брайан. «Писец: язык спецификации документов и его компилятор». Кандидат наук. диссертация, Университет Карнеги-Меллона, Питтсбург, Пенсильвания. Также доступен как технический отчет CMU-CS-81-100.
  15. ^ "бумаги". xml.coverpages.org. Получено 2019-07-18.
  16. ^ HTML является частным экземпляром SGML, тогда как LaTeX разработан с учетом философии Scribe, разделяющей контент и дизайн.
  17. ^ 14:00-17:00. «ISO 8879: 1986». ISO. Получено 2019-07-18.CS1 maint: числовые имена: список авторов (связь)
  18. ^ Тим Бернерс-Ли, "Управление информацией: предложение". ЦЕРН (март 1989 г., май 1990 г.). W3.org
  19. ^ «Теги, используемые в HTML». Консорциум World Wide Web. 3 ноября 1992 г.. Получено 16 ноября, 2008.
  20. ^ «Первое упоминание HTML-тегов в списке рассылки www-talk». Консорциум World Wide Web. 29 октября 1991 г.. Получено 8 апреля, 2007.
  21. ^ «Указатель элементов в HTML 4». Консорциум World Wide Web. 24 декабря 1999 г.. Получено 8 апреля, 2007.
  22. ^ Тим Бернерс-Ли (9 декабря 1991 г.). "Re: документы SGML / HTML, X Browser (заархивированная запись списка рассылки www-talk)". Получено 16 июня, 2007. SGML очень общий. HTML - это конкретное приложение базового синтаксиса SGML, применяемое к гипертекстовым документам с простой структурой.
  23. ^ ДеРоуз, Стивен Дж. «Книга часто задаваемых вопросов SGML». Бостон: Kluwer Academic Publishers, 1997. ISBN  0-7923-9943-9
  24. ^ «Расширяемый язык разметки (XML)». W3.org. Получено 2014-06-28.
  25. ^ Хиксон, Ян. «Уровень жизни HTML». WHATWG - HTML. Получено 13 сентября 2020.
  26. ^ «Рекомендации TEI по кодированию и обмену электронными текстами». Tei-c.org. Архивировано из оригинал на 2014-07-03. Получено 2014-06-28.
  27. ^ Профиль XHTML + MathML + SVG ". W3C, 9 августа 2002 г., Проверено 17 марта 2007 г.

внешняя ссылка