Suchen

Definition „YAML Ain't Markup Language“ Was ist YAML?

| Autor / Redakteur: LineFeed / Stephan Augsten

Markup Languages wie YAML oder HTML geben Daten eine Struktur. YAML dient aber wie JSON vor allem der Datenspeicherung in menschenlesbarer Form. Von XML unterscheidet sich YAML durch den leichtgewichtigen Ansatz ohne SGML-Kompatibilität.

Firmen zum Thema

Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind.
Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind.
(© yaml.org)

Ursprünglich stand YAML für „Yet Another Markup Language“, bereits seit 2002 verbirgt sich dahinter allerdings das rekursive Akronym „YAML Ain't Markup Language“. Somit definiert sich YAML als eine Auszeichnungssprache, die keine ist, was letztlich auf die Zielsetzung hinweist.

YAML will ein Format für die Serialisierung von Daten zur Verfügung stellen. Der aus dem Druckwesen stammende Begriff „Markup“ impliziert ein Format für eine sichtbare Textauszeichnung, wie es beispielsweise HTML bietet. Auch bei anderen Vertretern der Gattung überlappen sich beide Anwendungsgebiete.

Es existieren durchaus Lösungen, die gezielt beide Bereiche abdecken. So kann beispielsweise XML prinzipiell sowohl HTML als auch YAML ersetzen. Das Hauptargument für YAML ist die Schlankheit der Lösung, die auch Beschränkungen aufhebt, die sich bei XML aus dem breitgefächerten Anwendungsspektrum respektive dem Ziel ergeben, die Kompatibilität zu SGML zu erhalten. Der Hauptkonkurrent von YAML ist allerdings nicht XML sondern JSON.

YAML oder JSON?

Die „JavaScript Object Notation“, kurz JSON, ist ein Format für die Serialisierung von Daten, das aus dem Umfeld von Web-Applikationen stammt. Beide Formate bieten daher sehr ähnliche Funktionalitäten. YAML ist seit der Version 1.2 ein Superset von JSON, kann also das andere Format in allen Applikationen direkt ersetzen.

Der Hauptunterschied liegt in der Zielsetzung. Während mittels YAML formatierte Daten nicht nur für Maschinen, sondern auch für Menschen möglichst gut lesbar sein sollen, legt JSON den größten Wert auf die Einfachheit der Anwendung.

Wie funktioniert YAML?

YAML wandelt Daten aus einer programminternen Form so um, dass sie sich als Textdatei abspeichern lassen. Damit das auch für komplexe Datentypen wie zwei- oder mehrdimensionale Arrays möglich ist, werden die Elemente nacheinander ausgegeben, daher der Name Serialisierung.

Dabei macht YAML die hierarchische Struktur wie die Programmiersprache Python durch Einrückung mit Leerzeichen sichtbar, verwendet aber auch eckige und geschweifte Klammern. YAML erlaubt dabei keine Tabulatoren, weil deren Interpretation nicht eindeutig ist und von verschiedenen Programmen unterschiedlich gehandhabt wird.

Welchem Zweck dient YAML?

Die Serialisierung von Daten lässt sich einerseits nutzen, um einen Programmzustand über mehrere Programmläufe zu erhalten. In dieser Weise wird YAML häufig für die Speicherung der Laufzeitkonfiguration in Konfigurationsdateien verwendet. Die zweite Hauptanwendung ist die Übertragung von Daten zwischen Computersystemen, die über ein Netzwerk miteinander verbunden sind.

Welche Daten kann YAML verarbeiten?

Nativ unterstützt YAML einen Satz von Datentypen, den auch die Programmiersprache Perl verwendet, als da wären:

  • Skalare: Zahlen, Zeichenketten
  • Listen: eindimensionale Arrays, wobei mehrdimensionale möglich sind, da Listenelemente ebenfalls Listen sein können
  • assoziative Arrays: auch Hashtabellen oder Dictionaries genannt

Damit lassen sich bereits alle Grunddatentypen abbilden, die in den verschiedenen Programmiersprachen zu finden sind. Zusätzlich unterstützt YAML noch benutzerdefinierte Datentypen.

Mehrere Datensätze gemeinsam übertragen

Mit einer Syntax, die der bei E-Mail gebräuchlichen MIME-Spezifikation (RFC 2045) entlehnt ist, ermöglicht YAML, mehrere Datensätze zusammenzufassen. Das ist weniger für die Speicherung in einer Datei gedacht, obwohl es auch dabei nützlich sein kann, sondern mehr für die Übertragung als Datenstrom im Netz.

(ID:45018835)