**YAML** (ראשי תיבות רקורסיביים של **YAML Ain't Markup Language** - קרי "YAML אינה שפת סימון"; נהגה: יָאמֵל) הוא פורמט סריאליזציה טקסטואלי שנועד להיות קריא בקלות לבן אנוש (human readable), המשמש בדרך כלל לקובצי תצורה (קונפיגורציה) וביישומים בהם מאוחסן או מועבר מידע. הפורמט משמש ביישומים דומים לאלו של XML, אך התחביר (syntax) שלו מינימלי. קינון (nesting) מתבצע באמצעות הזחה, בדומה לפייתון, והגדרת רשימה (list) ומפה (map) מתבצעות בצורה קצרה יותר לעומת XML באמצעות `[...]`  ו-`{...}`  בהתאמה, בדומה ל-JSON, ש-YAML מהווה למעשה הרחבה שלה (כל קובץ JSON הוא גם קובץ YAML תקין).

התקן תומך בהגדרת טיפוסי נתונים מותאמים, אך מעבר לכך YAML תומך בקידוד סקלרים (כמו מחרוזות, מספרים שלמים ומספרי נקודה צפה), רשימות ומפות. הגדרת ערכים בקובץ YAML (בצורת key-value) מתבצעת באמצעות נקודתיים (:), צורת הגדרה שמבוססת על פורמט header-ים בדואר אלקטרוני כפי שמוגדר ב-RFC 0822‎ (תקן ARPA), והמפריד `---` המשמש לתיחום בין directives מקורו בתקן הדואר האלקטרוני MIME (‏RFC 2046). הגדרת רצפי מילוט (escape sequences) מתבצע בצורה דומה ל-C, והגדרת מחרוזות בעלות מספר שורות נעשה באמצעות רווחים בהשראת HTML.

תמיכה מובנית בכתיבה ובקריאה של קובצי YAML קיימת בשפות תכנות רבות. כמה עורכי טקסט כמו Emacs, וסביבות פיתוח (IDE), כוללים יכולות המאפשרות עריכה פשוטה של מסמכי YAML, למשל קיבוץ של מבנים מקוננים או התראה אוטומטית על שגיאות תחביר.

סיומת הקובץ המומלצת למסמכי YAML היא .yaml‎ (מאז 2006).

היסטוריה
--------

התקן הוצע לראשונה בשנת 2001 על ידי קלארק אוונס, שתכנן אותה יחד עם אינגי דוט נט ואורן בן-קיקי. בתחילה הוגדר כי ראשי התיבות YAML משמען Yet Another Markup Language (עוד שפת סימון), אך לאחר מכן שונו ראשי התיבות ל-YAML Ain't Markup Language (‏YAML אינה שפת סימון) - החל מאפריל 2002.

דוגמאות לתחביר בסיסי
--------------------

YAML מאפשרת להגדיר רשימות ומפות במספר שורות, או בשורה בודדת / בתוך שורה (inline).

הגדרה של פריטים ברשימה במספר שורות נעשית באמצעות מקף ורווח לפני כל פריט:

```
--- # סרטים אהובים
- Casablanca
- North by Northwest
- The Man Who Wasn't There

```

בהגדרה של רשימה בשורה אחת הפריטים מופרדים בפסיק וברווח, עם סוגריים מרובעים לסימון תחילת וסוף הרשימה (בדומה ל-JSON):

```
--- # רשימת קניות
[milk, pumpkin pie, eggs, juice]

```

הגדרת מיפוי key-value נעשית באמצעות תחביר של נקודתיים (:) המפרידות בין רכיבי המיפוי. בהגדרה במספר שורות נעשה שימוש בהזחה, ובהגדרה בשורה אחת פריטי המיפוי מופרדים בפסיק וברווח, עם סוגריים מסולסלים לסימון תחילת וסוף המפה (בדומה ל-JSON):

```
--- # הגדרת מיפוי במספר שורות בהזחה
 name: John Smith
 age: 33
--- # הגדרת מיפוי בתוך השורה
{name: John Smith, age: 33}

```

בהגדרת מחרוזת אין צורך להוסיף סימני מירכאות. ישנן מספר דרכים להגדרת מחרוזות בעלות מספר שורות. כשמסמנים את תחילת המחרוזת באמצעות התו | נשמרים תווי ירידת השורה, וכשנעשה שימוש בתו < לסימון תחילת המחרוזת − פירוש המחרוזת יתעלם מירידות השורה ויתייחס אליהן כרווחים.

המחרוזת הבאה תכלול את תווי ירידת השורה:

```
data: |
 There once was a tall man from Ealing
 Who got on a bus to Darjeeling
 It said on the door
 "Please don't sit on the floor"
 So he carefully sat on the ceiling

```

המחרוזת הבאה תתעלם מתווי ירידת השורה - מלבד המקרה של השורה הריקה (שם תהיה ירידת שורה):

```
data: >
 Wrapped text
 will be folded
 into a single
 paragraph

 Blank lines denote
 paragraph breaks

```

קישורים חיצוניים
----------------

* 

* אתר האינטרנט הרשמי של YAML (באנגלית)
* YAML, ברשת החברתית טוויטר

ביאורים
-------

1. ↑  חלקים במסמך, ניתן לראות זאת כשני מסמכים שונים המוגדרים באותו קובץ
2. ↑  רצף תווים בעל משמעות שונה מהתווים כפשוטם, למשל רצף של כמה תווים שבא לייצג תו אחר שאינו printable.
3. ↑  ב-HTML הגדרת מחרוזת בעלת מספר שורות מתבצעת על ידי הזחה באמצעות טאבים. ב-YAML יש להשתמש ב-folded style לשם כך, כלומר להתחיל את המחרוזת בסימן < וכל שורה תתחיל בסימן רווח, או להתחיל את המחרוזת בסימן | באופן שמשמר תווי ירידת שורה.
4. ↑  גם Sublime באמצעות התוסף Pretty YAML
5. ↑  למשל Eclipse באמצעות מספר תוספים או NetBeans ל-Ruby ו-Ruby on Rails, ראו כאן

הערות שוליים
------------

1. ↑  "Yet Another Markup Language (YAML) 1.0 / Working Draft". 10 דצמ' 2001. `{{cite web}}`:  (עזרה)
2. ↑  "YAML Ain't Markup Language (YAML) Version 1.2". *YAML.org*. נבדק ב-2020-01-08.
3. ↑  "The Official YAML Web Site". *yaml.org*.
4. ↑  "YAML Ain't Markup Language". *yaml.org*.
5. ↑  "YAML Ain't Markup Language". *web.archive.org*. 24 בספטמבר 2006. `{{cite web}}`:  (עזרה)
6. ↑  Evans, Clark (11 במאי 2001). "YAML Draft 0.1". Yahoo! Tech groups: sml-dev. נבדק ב-2019-03-21. `{{cite web}}`:  (עזרה)
7. ↑  "YAML Ain't Markup Language: About". *YAML.org*. נבדק ב-2019-05-29.
8. ↑  "Yet Another Markup Language (YAML) 1.0". *YAML.org*. נבדק ב-2019-05-29.
9. ↑  היסטוריית specifications, באתר yaml.org