====== YAML (YAML Ain't Markup Language) ======
**YAML** je lidsky čitelný standard pro serializaci dat. Je navržen tak, aby byl snadno čitelný pro lidi a zároveň jednoduchý na zpracování pro stroje. V dnešním IT světě se stal de facto standardem pro konfigurační soubory, zejména v oblasti **DevOps** a **Cloud computingu**.
Název je rekurzivní zkratka, která zdůrazňuje, že YAML není značkovací jazyk (jako XML nebo HTML), ale zaměřuje se čistě na data.
===== Základní syntaxe a pravidla =====
YAML má několik striktních pravidel, která musíte dodržovat:
* **Odsazování (Indentation):** K definování struktury se používají výhradně **mezery**, nikoliv tabulátory. Počet mezer musí být konzistentní (obvykle 2 nebo 4).
* **Case sensitivity:** Rozlišují se malá a velká písmena.
* **Kódování:** Soubory musí být v kódování UTF-8.
* **Přípona:** Obvykle ''.yaml'' nebo ''.yml''.
===== Datové struktury v YAML =====
==== 1. Klíč a hodnota (Maps/Dictionaries) ====
Základní stavební kámen. Odděluje se dvojtečkou s mezerou.
verze: 3.8
nazev: "Moje Aplikace"
aktivni: true
==== 2. Seznamy (Lists/Sequences) ====
Prvky seznamu začínají pomlčkou následovanou mezerou.
servery:
- web01
- web02
- db01
==== 3. Vnořené objekty ====
Struktura se vytváří odsazením.
databaze:
host: localhost
port: 5432
uzivatel: admin
===== Pokročilé techniky =====
==== Víceřádkové řetězce ====
YAML umožňuje elegantně zapisovat dlouhé texty (např. skripty nebo certifikáty):
* **Znak | (Literal):** Zachovává konce řádků.
* **Znak > (Folded):** Nahradí konce řádků mezerou (vytvoří jeden dlouhý odstavec).
==== Komentáře ====
Na rozdíl od JSON podporuje YAML komentáře pomocí znaku **#**.
# Toto je konfigurace pro produkci
env: prod
==== Více dokumentů v jednom souboru ====
Můžete oddělit několik logických dokumentů pomocí tří pomlček (---). To se hojně využívá v Kubernetes manifestech.
===== Srovnání: YAML vs JSON vs XML =====
^ Vlastnost ^ YAML ^ JSON ^ XML ^
| **Čitelnost** | Výborná | Dobrá | Horší |
| **Komentáře** | Ano | Ne | Ano |
| **Struktura** | Odsazení | Závorky {}, [] | Tagy |
| **Typování** | Automatické | Striktní | Textové |
===== Časté chyby =====
* **Tabulátory:** Použití tabulátoru místo mezer je nejčastější příčinou chyby "mapping values are not allowed here".
* **Chybějící mezera:** Dvojtečka musí být následována mezerou (''klíč:hodnota'' je špatně, ''klíč: hodnota'' je správně).
* **Špatné odsazení:** Pokud prvek seznamu nezačíná na správné úrovni, změní se celá sémantika dokumentu.
> **Tip:** Pro kontrolu správnosti syntaxe se doporučuje používat nástroje zvané **YAML Linters** nebo online validátory. V editoru VS Code je užitečné rozšíření "Red Hat YAML".
[[it_encyklopedie:programovani_a_data|Zpět na Data]]