YAML — зручний для читання людиною формат серіалізації даних, концептуально близький до мов розмітки, але орієнтований на зручність введення-виведення типових структур даних багатьох мов програмування.
Назва YAML це рекурсивний акронім YAML Ain't Markup Language («YAML — не мова розмітки»). У назві відображена історія розвитку: на ранніх етапах мова називалася Yet Another Markup Language («Ще одна мова розмітки») і навіть розглядалася як конкурент XML, але пізніше була перейменована з метою акцентувати увагу на даних, а не на розбивці документів.
YAML використовує структури даних, характерні для мов програмування;
YAML легко реалізується (можливо, занадто легко);
YAML використовує цілісну модель даних. Немає винятків — немає безладу.
Синтаксис YAML мінімальний, особливо в порівнянні з XML синтаксисом. У специфікації вказують, що великий вплив справив стандарт RFC 822.
Використання
YAML в основному використовується як формат для файлів конфігурації. Застосовується для установки вебкаркасів Ruby on Rails і Symfony.
Приклад
У певному проекті потрібно зберігати конфігурацію, що описує відображення текстових команд на функції, за допомогою регулярних виразів. Можна подати цю структуру у вигляді простого тексту, подібного до конфігураційного файлу давньої UNIX-програми:
Тоді витрати на розбивку мінімальні, але все стає дуже негнучким — значення не можуть містити пробіли, не можуть бути багаторядковими тощо. Підходить тільки в простих випадках.
Говорячи про відмінності YAML від XML, відзначимо також, що вкладені XML елементи можуть використовуватися для відображення довільних структур, а YAML ближчий до відображення типових моделей даних з Perl, Python, Java, що дозволяє описувати вільні поєднання послідовностей, зіставлень і скалярних типів — це ближче до реальних структур даних мов програмування, і не вимагає різних угод про DOM-відображення структур даних на документи і назад, як потрібно в XML.
Синтаксичні елементи
Послідовності
---# Список фільмів: послідовність у блочному форматі -Casablanca-Spellbound-Notorious---# Список покупок: послідовність у Однорядковому форматі [milk,bread,eggs,juice]
---|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 Smithage:27
Зіставлення з послідовностей
men:[John Smith,Bill Jones]women:-Mary Smith-Susan Williams