Если YAML не является языком разметки, что это? - PullRequest
50 голосов
/ 06 августа 2011

Я не вижу, что делает YAML менее разборчивым языком, чем XML. Целью языка разметки является определение структуры документа, и YAML делает именно это. (YAML означает, что Yaml не является языком разметки.)

Вместо YAML следует понимать: Еще один язык разметки .

Ответы [ 5 ]

105 голосов
/ 21 сентября 2013

Вот реальная история ...:)

Кларк, Орен и я начали работать над YAML в апреле 2001 года. Орен и Кларк были частью списка рассылки SML, который пытался упростить XML.Я только что написал язык сериализации данных для Perl под названием Data :: Denter.Кларк связался со мной, чтобы рассказать об идее, которую они назвали YAML, которая выглядела как синтаксис Data :: Denter.Кларк уже приобрел yaml.org.

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

http://yaml.org/spec/ начинается с:

YAML ™ (рифмуется с «верблюдом») - это дружественный к человеку язык для сериализации на основе Unicode, разработанный на основе общих структур данных гибких языков программирования.

Я бы не сказаллучше сам ...:

43 голосов
/ 06 августа 2011

Итак, язык разметки предполагает базовый текст, обычно читаемый человеком, а затем специальные индикаторы или «разметку», которые направляют обработку. Идея исходит от редактора, который взял бы печатную версию чьей-либо рукописи и «пометил ее», чтобы показать, куда должны идти новые строки, правки и т. Д.

Таким образом, SGML является метаязыком для объявления языков разметки, а HTML является языком разметки. В 1996-7, когда появился XML, он был продан в качестве упрощенного метаязыка SGML для создания языков разметки. В XML (и SGML) у вас есть элементы, чтобы «пометить» часть текста, а затем атрибуты, которые изменяют маркировку. Со временем XML использовался не только для разметки документов, но люди использовали его для сериализации данных, даже если он никогда не был предназначен для таких целей. Конечно, это была большая проблема, которую нужно было решить.

YAML и JSON появились на сцене и сосредоточились на сериализации данных , а не на разметке документов. На этих языках просто нет основного текста документа.
Следовательно, YAML не является языком разметки и является довольно точным отличием от XML.

2 голосов
/ 06 августа 2011

Вот цитата из страницы о YAML :

Полагаю, самый первый вопрос у читателей должен звучать так: «Почему имя YAML?»Существует целый ряд инструментов, которые имеют аккуратно принятые сокращения «YA *», что означает «еще один XXX».В гонке вооружений с открытым исходным кодом YAML отказывается от подразумеваемой аббревиатуры, вместо этого остановившись на рекурсивном «YAML Ain't Markup Language».Однако в этом есть определенный смысл: YAML делает то, что делают языки разметки, но без какой-либо разметки.

Имя было выбрано потому, что оно требует гораздо меньше разметки, чем другие традиционныеязыки, такие как XML.Он выделяет его как ориентированный на данные, а не на разметку.

2 голосов
/ 06 августа 2011

XML унаследовал часть "ML" своего имени от HTML и SGML, которые являются языками "разметки" в том смысле, что они описывают поток простого текста вместе с разметкой такими инструкциями, как "этот кусоктекста должен быть выделен жирным шрифтом "или" этот фрагмент текста является заголовком ".То есть эти конкретные части текста помечены жирным шрифтом или заголовком.

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

YAML не является языком разметки, поскольку его модель данных содержит только древовидную структуру, без понятияосновного линейного текста, к которому относится древовидная структура.Там нет ничего для разметки или, иначе говоря, данные , представленные потоком YAML, не являются разметкой.Напротив, данные , представленные XML-тегом , представляют собой разметку или, по крайней мере, согласно некоторым точкам зрения.(В обоих случаях представление указанных данных содержит некоторую разметку, такую ​​как двоеточия и отступы в YAML или '=' и кавычки в XML, но это не главное).

0 голосов
/ 06 августа 2011

Я не вижу, что делает YAML менее разметочным языком, чем XML.

Есть несколько преимуществ использования YAML вместо XML.Прежде всего, он более читабелен.В отличие от структуры данных XML, мы должны определить и дать имя тега для каждого элемента данных.Разработчики чувствуют себя громоздкими в отношении XML-кода, а пользователям довольно сложно понять XML-документы.На самом деле, XML предназначен для связи между машинами, а не для связи пользователей с машиной.Поскольку YAML хорошо читается человеком, вы можете использовать его для чтения / изменения источника данных и использовать его для связи с компьютерной программой.

Вот пример, показывающий, как различаются их структуры.

XML Examples:
<busNo>101
    <busStop>ABC
           <busFee>5.4</busFee>
    </busStop>
    <busStop>CUHK
           <busFee>5.4</busFee>
    </busStop>
    <busStop>HKU
           <busFee>5.4</busFee>
    </busStop>
    <busStop>XYZ
           <busFee>5.4</busFee>
    </busStop>
</busNo>

YAML Examples:
--- #bus no
101  : [ABC:5.4, HKU:5.4, CUHK:5.4, XYZ:5.4]

Лучший пример использования YAML - это файл конфигурации программы.Конечно, вы можете проанализировать свой собственный формат файла конфигурации в XML и передать его в свою программу.Но вместо этого вы можете использовать YAML.Кроме того, у вас может быть более быстрая разработка, особенно в веб-разработке.YAML разработан с использованием языков сценариев, таких как Python, Perl, Ruby.etc.YAML предназначен для простого перевода в структуры, которые являются общими для различных языков, указанных выше.

В заключение, YAML предназначен для чтения человеком, который делает язык разметки меньше, чем XML.

...