YAML — зручний для читання людиною формат серіалізації даних, концептуально близький до мов розмітки, але орієнтований на зручність введення-виведення типових структур даних багатьох мов програмування.
Назва YAML це рекурсивний акронім YAML Ain't Markup Language («YAML — не мова розмітки»). У назві відображена історія розвитку: на ранніх етапах мова називалася Yet Another Markup Language («Ще одна мова розмітки») і навіть розглядалася як конкурент XML, але пізніше була перейменована з метою акцентувати увагу на даних, а не на розбивці документів.
Особливості
YAML створений (Clark Evans), для реалізації таких вимог:
- YAML короткий і зрозумілий;
- YAML дуже виразний і розширний;
- YAML допускає простий потоковий інтерфейс;
- YAML використовує структури даних, характерні для мов програмування;
- YAML легко реалізується (можливо, занадто легко);
- YAML використовує цілісну модель даних. Немає винятків — немає безладу.
Синтаксис YAML мінімальний, особливо в порівнянні з XML синтаксисом. У специфікації вказують, що великий вплив справив стандарт RFC 822.
Використання
YAML в основному використовується як формат для файлів конфігурації. Застосовується для установки вебкаркасів Ruby on Rails і Symfony.
Приклад
У певному проекті потрібно зберігати конфігурацію, що описує відображення текстових команд на функції, за допомогою регулярних виразів. Можна подати цю структуру у вигляді простого тексту, подібного до конфігураційного файлу давньої UNIX-програми:
PRIVMSG newUri ^http://.* PRIVMSG deleteUri ^delete.* PRIVMSG randomUri ^random.*
Тоді витрати на розбивку мінімальні, але все стає дуже негнучким — значення не можуть містити пробіли, не можуть бути багаторядковими тощо. Підходить тільки в простих випадках.
У XML витрати на розбивку значніші:
<bindings> <binding> <ircEvent>PRIVMSG</ircEvent> <method>newUri</method> <regex>^http://.*</regex> </binding> <binding> <ircEvent>PRIVMSG</ircEvent> <method>deleteUri</method> <regex>^delete.*</regex> </binding> <binding> <ircEvent>PRIVMSG</ircEvent> <method>randomUri</method> <regex>^random.*</regex> </binding> </bindings>
Звичайно, можна зробити «дешевше» відображення з використанням атрибутів (і втратою гнучкості):
<event name = "PRIVMSG"> <method name = "newUri" regex = "^http://.*" /> <method name = "deleteUri" regex = "^delete.*" /> <method name = "newUri" regex = "^random.*" /> </event>
Тепер те ж саме на YAML:
event: PRIVMSG methods: - Name: newUri regexp: '^http://.*' - Name: deleteUri regexp: '^delete.*' - Name: randomUri regexp: '^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
Реалізації
Цей розділ потребує доповнення. (квітень 2015) |
Підтримка YAML існує в мовах програмування:
- JavaScript (здійснюється виведення YAML, але не розбір введення)
- Objective-C
- .NET Framework (сайт проекту [ 24 березня 2009 у Wayback Machine.])
- Perl
- PHP
- Python
- Ruby (YAML включений у стандартну бібліотеку починаючи з версії 1.8.)
- Java
- Haskell
- XML (поки що тільки чорновий варіант)
Див. також
Посилання
- YAML.ORG (англійською) . Архів оригіналу за 30 червня 2013. Процитовано 4 серпня 2008.
- YAML. CustisWiki. Заказные ИнформСистемы. Архів оригіналу за 10 лютого 2012. Процитовано 29 квітня 2006.
- на Java
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
YAML zruchnij dlya chitannya lyudinoyu format serializaciyi danih konceptualno blizkij do mov rozmitki ale oriyentovanij na zruchnist vvedennya vivedennya tipovih struktur danih bagatoh mov programuvannya Nazva YAML ce rekursivnij akronim YAML Ain t Markup Language YAML ne mova rozmitki U nazvi vidobrazhena istoriya rozvitku na rannih etapah mova nazivalasya Yet Another Markup Language She odna mova rozmitki i navit rozglyadalasya yak konkurent XML ale piznishe bula perejmenovana z metoyu akcentuvati uvagu na danih a ne na rozbivci dokumentiv OsoblivostiYAML stvorenij Clark Evans dlya realizaciyi takih vimog YAML korotkij i zrozumilij YAML duzhe viraznij i rozshirnij YAML dopuskaye prostij potokovij interfejs YAML vikoristovuye strukturi danih harakterni dlya mov programuvannya YAML legko realizuyetsya mozhlivo zanadto legko YAML vikoristovuye cilisnu model danih Nemaye vinyatkiv nemaye bezladu Sintaksis YAML minimalnij osoblivo v porivnyanni z XML sintaksisom U specifikaciyi vkazuyut sho velikij vpliv spraviv standart RFC 822 VikoristannyaYAML v osnovnomu vikoristovuyetsya yak format dlya fajliv konfiguraciyi Zastosovuyetsya dlya ustanovki vebkarkasiv Ruby on Rails i Symfony PrikladU pevnomu proekti potribno zberigati konfiguraciyu sho opisuye vidobrazhennya tekstovih komand na funkciyi za dopomogoyu regulyarnih viraziv Mozhna podati cyu strukturu u viglyadi prostogo tekstu podibnogo do konfiguracijnogo fajlu davnoyi UNIX programi PRIVMSG newUri http PRIVMSG deleteUri delete PRIVMSG randomUri random Todi vitrati na rozbivku minimalni ale vse staye duzhe negnuchkim znachennya ne mozhut mistiti probili ne mozhut buti bagatoryadkovimi tosho Pidhodit tilki v prostih vipadkah U XML vitrati na rozbivku znachnishi lt bindings gt lt binding gt lt ircEvent gt PRIVMSG lt ircEvent gt lt method gt newUri lt method gt lt regex gt http lt regex gt lt binding gt lt binding gt lt ircEvent gt PRIVMSG lt ircEvent gt lt method gt deleteUri lt method gt lt regex gt delete lt regex gt lt binding gt lt binding gt lt ircEvent gt PRIVMSG lt ircEvent gt lt method gt randomUri lt method gt lt regex gt random lt regex gt lt binding gt lt bindings gt Zvichajno mozhna zrobiti deshevshe vidobrazhennya z vikoristannyam atributiv i vtratoyu gnuchkosti lt event name PRIVMSG gt lt method name newUri regex http gt lt method name deleteUri regex delete gt lt method name newUri regex random gt lt event gt Teper te zh same na YAML event PRIVMSG methods Name newUri regexp http Name deleteUri regexp delete Name randomUri regexp random Govoryachi pro vidminnosti YAML vid XML vidznachimo takozh sho vkladeni XML elementi mozhut vikoristovuvatisya dlya vidobrazhennya dovilnih struktur a YAML blizhchij do vidobrazhennya tipovih modelej danih z Perl Python Java sho dozvolyaye opisuvati vilni poyednannya poslidovnostej zistavlen i skalyarnih tipiv ce blizhche do realnih struktur danih mov programuvannya i ne vimagaye riznih ugod pro DOM vidobrazhennya struktur danih na dokumenti i nazad yak potribno v XML Sintaksichni elementiPoslidovnosti Spisok filmiv poslidovnist u blochnomu formati Casablanca Spellbound Notorious Spisok pokupok poslidovnist u Odnoryadkovomu formati milk bread eggs juice Zistavlennya imeni ta znachennya Blochnij format name John Smith age 33 Odnoryadkovij format name John Smith age 33 Blochni literali Perevedennya ryadkiv zberigayutsya 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 Perevedennya ryadkiv znikayut gt Wrapped text will be folded into a single paragraph Blank lines denote paragraph breaks Poslidovnosti iz zistavlen Name John Smith age 33 Name Mary Smith age 27 Zistavlennya z poslidovnostej men John Smith Bill Jones women Mary Smith Susan WilliamsRealizaciyiCej rozdil potrebuye dopovnennya kviten 2015 Pidtrimka YAML isnuye v movah programuvannya JavaScript zdijsnyuyetsya vivedennya YAML ale ne rozbir vvedennya Objective C NET Framework sajt proektu 24 bereznya 2009 u Wayback Machine Perl PHP Python Ruby YAML vklyuchenij u standartnu biblioteku pochinayuchi z versiyi 1 8 Java Haskell XML poki sho tilki chornovij variant Div takozhJSON XML HamlPosilannyaYAML ORG anglijskoyu Arhiv originalu za 30 chervnya 2013 Procitovano 4 serpnya 2008 YAML CustisWiki Zakaznye InformSistemy Arhiv originalu za 10 lyutogo 2012 Procitovano 29 kvitnya 2006 na Java