YAML

YAML
YAML Logo.svg
Dateiendung:.yml (veraltet)[1], .yaml
MIME-Type:nicht registriert
Erstveröffentlichung:11. Mai 2001
Aktuelle Version:1.2.2[2] (Stand: 1. Oktober 2021)
Art:Datenaustausch
Website:yaml.org


YAML [ˈjæməl] ist eine vereinfachte Auszeichnungssprache (englisch markup language) zur Datenserialisierung, angelehnt an XML (ursprünglich) und an die Datenstrukturen in den Sprachen Perl, Python und C sowie dem in RFC 2822 vorgestellten E-Mail-Format. Die Idee zu YAML stammt 2001[3] von Clark Evans, die Spezifikation wurde von ihm selbst, Brian Ingerson und Oren Ben-Kiki erstellt.

YAML ist ein rekursives Akronym für „YAML Ain’t Markup Language“ (ursprünglich „Yet Another Markup Language“).

Design-Ziele

Die grundsätzliche Annahme von YAML ist, dass sich jede beliebige Datenstruktur nur mit assoziativen Listen, Listen (Arrays) und Einzelwerten (Skalaren) darstellen lässt. Durch dieses einfache Konzept ist YAML wesentlich leichter von Menschen zu lesen und zu schreiben als beispielsweise XML, außerdem vereinfacht es die Weiterverarbeitung der Daten, da die meisten Sprachen solche Konstrukte bereits integriert haben.

Beispiele

Hinweis:

  • Das Zeichen # leitet einzeilige Kommentare ein, --- markiert den Beginn eines neuen Abschnitts.
  • Ein Kommentar in der gleichen Zeile wie --- kann zwar Probleme beim Einlesen der YAML-Datei hervorrufen – aus Übersichtsgründen ist er im Beispiel jedoch trotzdem in der gleichen Zeile.

Listen:

--- # im Block Format ein paar Filme von M. Curtiz und A. Hitchcock aus den 1940er Jahren
- Berüchtigt (Notorious)
- Casablanca
- Ich kämpfe um dich (Spellbound)
- Solange ein Herz schlägt (Mildred Pierce)
--- # Inline Format einer Einkaufsliste
[Haferflocken, Bananen, Nüsse]

Assoziative Listen:

--- # Block
name: John Smith
age: 33
--- # Inline
{name: John Smith, age: 33}

Block-Ausdrücke mit senkrechtem Strich bewirken, dass Zeilenumbrüche beibehalten werden:

--- |
  There was a young lady of Wright
  Who travelled much faster than light.
      She departed one day
      In a relative way
  And returned in the previous night.

Quelle [4]

Block-Ausdrücke mit Größer-als-Zeichen bewirken, dass einzelne Zeilenumbrüche in Leerzeichen geändert werden:

--- >
  Umgebrochener Text
  wird zu einem
  einzigen Absatz
  gefaltet.

  Leerzeilen bezeichnen 
  dagegen Absatzumbrüche.

Liste von assoziativen Listen:

- {name: John Smith, age: 33}
- name: Mary Smith
  age: 27

Assoziative Liste von Listen:

men: [John Smith, Bill Jones]
women:
  - Mary Smith
  - Susan Williams

Implementierungen

YAML-Implementierungen existieren unter anderem in den Programmiersprachen C, C++, C#, JavaScript, ActionScript, Perl, PHP, Python, Java, R[5], Ruby, Rust[6] sowie für die .NET-Plattform.

Ähnliche Techniken

Zu ähnlichen Formaten für Konfigurationsdateien siehe Konfigurationsdatei#Dateiformate.

Mit JSON existiert eine ähnliche Technik, die noch mehr am Objektmodell (DOM) orientiert ist und aus der Programmiersprache JavaScript stammt. JSON ist eine echte Untermenge von YAML: Jedes JSON-Dokument ist in Version 1.2 von YAML ein valides YAML-Dokument.[7] Aus der Clojure-Welt stammt das EDN-Format, welches eine an JSON angelehnte, erweiterbare Syntax verwendet.

Auch für die grafische Notationssprache UML (Version 2) existiert eine textbasierte Alternative, die auf leichte Lesbarkeit für Menschen hin ausgelegt ist – die Human-Usable Textual Notation (HUTN). Das Metamodell von UML und HUTN ist jeweils MOF, sodass HUTN jedes UML-Diagramm als leicht lesbaren Text darstellen kann. Die leichte Lesbarkeit unterscheidet HUTN vom XMI-Format, das für den Datenaustausch zwischen UML-Applikationen vorgesehen ist.

Weblinks

Einzelnachweise

  1. Is there an official extension for YAML files? Abgerufen am 15. Januar 2021.
  2. YAML Ain’t Markup Language (YAML™) Version 1.2.2. Abgerufen am 28. März 2022.
  3. Clark C . Evans: YAML Draft 0.1. 11. Mai 2001, abgerufen am 22. Juni 2019 (Newsgroup, jetzt auf Yahoo Groups).
  4. Ein Limerick aus dem Buch Eine kurze Geschichte der Zeit von Stephen Hawking zum Thema Relativitätstheorie
  5. R YAML package. In: Department of Biostatistics. Vanderbilt University, 20. Januar 2012, abgerufen am 26. Januar 2018 (englisch).
  6. David Tolnay: Crate serde_yaml. Abgerufen am 1. Juli 2020 (englisch).
  7. YAML Ain’t Markup Language (YAML) Version 1.2

Auf dieser Seite verwendete Medien

YAML Logo.svg
YAML data-serialization language Logo