Суббота, 18.05.2024
VadimOlga.at.ua
Меню сайта
Категории раздела
HTML [9]
HTML
Языки разметки [44]
Языки разметки
PHP [14]
PHP
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Главная » 2016 » Октябрь » 2 » YAML
10:13
YAML
YAML (рекурсивный акроним YAML Ain't Markup Language — «YAML — Не язык разметки») — «дружественный» формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования.

В трактовке названия отражена история развития: на ранних этапах YAML расшифровывался как Yet Another Markup Language («Ещё один язык разметки») и даже позиционировался как конкурент XML, но позже был переименован с целью[источник не указан 468 дней] акцентировать внимание на данных, а не на разметке документов.

Цели создания


Согласно целям озвученным Кларком Эвансом (англ. Clark Evans), YAML 1.0 призван:


быть легко понятным человеку;

поддерживать структуры данных, родные для языков программирования;

быть переносимым между языками программирования;

использовать цельную модель данных для поддержки обычного инструментария;

поддерживать потоковую обработку;

быть выразительным и расширяемым;

быть лёгким в реализации и использовании;

К текущей редакции YAML (1.2) в эти цели были внесены некоторые изменения:


пункты 2 и 3 поменялись местами

пункт 5 был заменен на «YAML поддерживает обработку в один проход»

Легкость для чтения и записи


Синтаксис YAML минималистичен, особенно по сравнению с XML синтаксисом. В спецификации указывают, что большое влияние оказал стандарт RFC 822

Использование


YAML в основном используется как формат для файлов конфигурации. Применяется для настройки веб-каркасов Ruby on Rails, Dancer, Symfony, GAE framework, Google App Engine и Dart. Также является основным языком описания классов, ресурсов и манифестов для пакетов приложений OpenStack Murano Project.

Сравнение с XML


Для сравнения, в XML-представлении, данная конфигурация может быть представлена следующим образом:



PRIVMSG
newUri
^http://.*


PRIVMSG
deleteUri
^delete.*


PRIVMSG
randomUri
^random.*



Альтернативный вариант, использующий атрибуты:







Говоря об отличиях YAML от XML, также следует отметить, что вложенные XML-элементы могут использоваться для отображения произвольных структур, а YAML более близок к отображению типичных моделей данных из Perl, Python, Java, позволяя описывать свободные сочетания последовательностей, сопоставлений и скалярных типов — то есть ближе к реальным структурам данных языков программирования, и не требует различных соглашений про DOM-отображения структур данных на документы и обратно, как требуется в XML.

Синтаксические элементы


Последовательности

--- # Список фильмов: последовательность в блочном формате
- 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:


потоки YAML используют печатаемые Unicode-символы, как UTF-8, так и UTF-16

отступы из пробелов (символы табуляции не допускаются) используются для обозначения структуры

комментарии начинаются с символа “решетка” ( # ), могут начинаться в любом месте строки и продолжаются до конца строки

списки обозначаются начальным дефисом ( - ) с одним членом списка на строку, либо члены списка заключаются в квадратные скобки ( [ ] ) и разделяются запятой и пробелом ( , )

ассоциативные массивы представлены двоеточием с пробелом ( : ) в виде ключ: значение, по одной паре ключ-значение на строку, либо в виде пар, заключённых в фигурные скобки и разделенных запятой и пробелом ( , )

ключ в ассоциативном массиве может иметь в качестве префикса вопросительный знак ( ? ), что позволяет указать сложный ключ, например представленный в виде списка

строки записываются без кавычек, однако могут быть заключены в одиночные или двойные кавычки

внутри двойных кавычек могут быть использованы экранированные символы в C-стиле, начинающиеся с обратного слэша ( \ )
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"}]


явное задание типа оформляется путём '!![указание типа]'. Пример, !!str 100 после парсинга выдаст значение "100".
значения типа Дата/Время задаются в формате YYYY-MM-DD или YYYY-MM-DD HH:MM:SS. Если необходимо задать дату, как строку, нужно заключать её в кавычки ("2012-12-21")
Категория: Языки разметки | Просмотров: 352 | Добавил: Baron | Теги: YAML | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт
Поиск
Календарь
«  Октябрь 2016  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • База знаний uCoz
  • VadimOlga.at.ua © 2024