YAML
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 | |
---|---|
Dateiendung: | .yml (veraltet)[1], .yaml |
MIME-Type: | nicht registriert |
Erstveröffentlichung: | 11. Mai 2001 |
Aktuelle Version: | 1.2[2] (Stand: 1. Oktober 2009) |
Art: | Datenaustausch |
Website: | yaml.org |
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
- Offizielle Website
- YAML-Spezifikation (englisch)
- YAML-Kochbuch für Ruby (englisch)
- YAML-Validator YAML Lint (englisch)
Einzelnachweise
- Is there an official extension for YAML files? Abgerufen am 15. Januar 2021.
- YAML Ain’t Markup Language (YAML™) Version 1.2. Abgerufen am 22. Juni 2019.
- Clark C . Evans: YAML Draft 0.1. 11. Mai 2001, abgerufen am 22. Juni 2019 (Newsgroup, jetzt auf Yahoo Groups).
- Ein Limerick aus dem Buch Eine kurze Geschichte der Zeit von Stephen Hawking zum Thema Relativitätstheorie
- R YAML package. In: Department of Biostatistics. Vanderbilt University, 20. Januar 2012, abgerufen am 26. Januar 2018 (englisch).
- David Tolnay: Crate serde_yaml. Abgerufen am 1. Juli 2020 (englisch).
- YAML Ain’t Markup Language (YAML) Version 1.2