Вводная секция нуждается в переработке. |
YAML | |
---|---|
Расширение |
.yaml или .yml |
MIME-тип | application/x-yaml |
Разработчик | Clark Evans[d] |
Опубликован | 11 мая 2001 |
Последний выпуск | 1.2 (Third Edition) (2009-10-01 ) |
Тип формата | Обмен данными |
Расширен из | XML, Perl и JSON |
Открытый формат? | Да |
Сайт | yaml.org (англ.) |
YAML (акроним англ. «Yet Another Markup Language» — «Ещё один язык разметки», позже — рекурсивный акроним англ. «YAML Ain't Markup Language» — «YAML — не язык разметки») — «дружественный» формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования.
В трактовке названия отражена история развития: на ранних этапах YAML расшифровывался как Yet Another Markup Language («Ещё один язык разметки») и даже позиционировался как конкурент XML, но позже был переименован с целью[источник не указан 1354 дня] акцентировать внимание на данных, а не на разметке документов.
Согласно целям, озвученным Кларком Эвансом (англ. Clark Evans), YAML 1.0 призван :
К текущей редакции YAML (1.2) в эти цели были внесены некоторые изменения :
Синтаксис YAML минималистичен, особенно по сравнению с XML-синтаксисом. В спецификации указывают, что большое влияние оказал стандарт RFC 822.
YAML в основном используется как формат для файлов конфигурации Ruby on Rails, Dancer, Symfony, GAE framework, Google App Engine и Dart. Также является основным языком описания классов, ресурсов и манифестов для пакетов приложений OpenStack Murano Project [источник не указан 1354 дня] и Swagger.io.
В некотором проекте нужно хранить конфигурацию, описывающую отображение (англ. bindings) IRC-команд на функции, с помощью регулярных выражений.
Вот исходная конфигурация, представленная в виде таблицы:
ircEvent | method | regexp |
---|---|---|
PRIVMSG | newUri | "^http://.*" |
PRIVMSG | deleteUri | "^delete.*" |
PRIVMSG | randomUri | "^random.*" |
В YAML эта конфигурация может быть представлена следующим образом:
bindings:
- ircEvent: PRIVMSG
method: newUri
regexp: '^http://.*'
- ircEvent: PRIVMSG
method: deleteUri
regexp: '^delete.*'
- ircEvent: PRIVMSG
method: randomUri
regexp: '^random.*'
Для сравнения, в XML-представлении данная конфигурация может быть представлена следующим образом:
<bindings>
<binding>
<ircEvent>PRIVMSG</ircEvent>
<method>newUri</method>
<regexp>^http://.*</regexp>
</binding>
<binding>
<ircEvent>PRIVMSG</ircEvent>
<method>deleteUri</method>
<regexp>^delete.*</regexp>
</binding>
<binding>
<ircEvent>PRIVMSG</ircEvent>
<method>randomUri</method>
<regexp>^random.*</regexp>
</binding>
</bindings>
Альтернативный вариант, использующий атрибуты:
<bindings>
<binding ircEvent="PRIVMSG" method="newUri" regexp="^http://.*" />
<binding ircEvent="PRIVMSG" method="deleteUri" regexp="^delete.*" />
<binding ircEvent="PRIVMSG" method="randomUri" regexp="^random.*" />
</bindings>
Говоря об отличиях YAML от XML, также следует отметить, что вложенные XML-элементы могут использоваться для отображения произвольных структур, а YAML более близок к отображению типичных моделей данных из Ruby, Perl, Python, Java, позволяя описывать свободные сочетания последовательностей, сопоставлений и скалярных типов — то есть ближе к реальным структурам данных языков программирования, и не требует различных соглашений про DOM-отображения структур данных на документы и обратно, как требуется в XML.
Ниже приведены образцы различных компонентов разметки. Следует заметить, что наличие варианта записи в однострочном формате делает JSON допустимым подмножеством YAML.
--- # Список фильмов: последовательность в блочном формате - Casablanca - Spellbound - Notorious --- # Список покупок: последовательность в однострочном формате [milk, bread, eggs, juice]
--- # Блочный формат name: John Smith age: 33 --- # Однострочный формат {name: John Smith, age: 33}
--- | There was a young fellow of Warwick Who had reason for feeling euphoric For he could, by election Have triune erection Ionic, Corinthian, and Doric
--- > Wrapped text will be folded into a single paragraph Blank lines denote paragraph breaks
- {name: John Smith, age: 33} - name: Mary Smith age: 27
men: [John Smith, Bill Jones] women: - Mary Smith - Susan Williams
Небольшой список основных элементов YAML:
aliases: #последовательность настроек - &myAlias1 datakey: dataval 1 moredata: morevals 1 - &myAlias2 datakey: dataval 2 moredata: morevals 2 config: - *myAlias1 # *myAlias1 после парсинга будет заменен на [{"datakey": "dataval 1", "moredata": "morevals 1"}]
Поддержка YAML существует в языках программирования:
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .