Hauptmenü öffnen

YAML

vereinfachte Auszeichnungssprache zur Datenserialisierung

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[2] von Clark Evans, die Spezifikation wurde von ihm selbst, Brian Ingerson und Oren Ben-Kiki erstellt.

YAML
Dateiendung: .yml, .yaml
MIME-Type: nicht registriert
Erstveröffentlichung: 11. Mai 2001
Aktuelle Version: 1.2[1] (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-ZieleBearbeiten

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.

BeispieleBearbeiten

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:

--- # Favorite movies, block format
- Casablanca
- Spellbound
- Notorious
--- # Shopping list, inline format
[oats, bananas, nuts]

Assoziative Listen:

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

Block-Ausdrücke, in denen Zeilenumbrüche beibehalten werden:

--- |
  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

Block-Ausdrücke, in denen einzelne Zeilenumbrüche in Leerzeichen geändert werden:

--- >
  Wrapped text
  will be folded
  into a single
  paragraph

  Blank lines denote
  paragraph breaks

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

ImplementierungenBearbeiten

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

Ähnliche TechnikenBearbeiten

Ähnliche Formate für Konfigurationsdateien sind INI und TOML.

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.[4] Die meisten Parser, die auf der Website von YAML genannt sind, unterstützen jedoch nur YAML ≤ 1.1 und daher nicht alle JSON-Dokumente (Stand: 20. November 2017).

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.

WeblinksBearbeiten

EinzelnachweiseBearbeiten

  1. YAML Ain’t Markup Language (YAML™) Version 1.2. Abgerufen am 22. Juni 2019.
  2. Clark C . Evans: YAML Draft 0.1. 11. Mai 2001, abgerufen am 22. Juni 2019 (Newsgroup, jetzt auf Yahoo Groups).
  3. R YAML package. In: Department of Biostatistics. Vanderbilt University, 20. Januar 2012, abgerufen am 26. Januar 2018 (englisch).
  4. YAML Ain’t Markup Language (YAML) Version 1.2