<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=YAML</id>
	<title>YAML - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=YAML"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=YAML&amp;action=history"/>
	<updated>2026-05-27T20:28:37Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=YAML&amp;diff=350689&amp;oldid=prev</id>
		<title>imported&gt;LWChris: /* Design-Ziele */ Nicht das Konzept macht es einfacher zu lesen, sondern die &quot;schlanke&quot; Syntax, welche durch das Konzept ermöglicht wird.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=YAML&amp;diff=350689&amp;oldid=prev"/>
		<updated>2026-04-19T00:42:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Design-Ziele: &lt;/span&gt; Nicht das Konzept macht es einfacher zu lesen, sondern die &amp;quot;schlanke&amp;quot; Syntax, welche durch das Konzept ermöglicht wird.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|beschreibt das Datenformat. Zum CSS-Framework siehe [[YAML (Framework)]].}}&lt;br /&gt;
{{Infobox Dateiformat&lt;br /&gt;
| Name = &lt;br /&gt;
| Icon = &lt;br /&gt;
| Logo = [[Datei:YAML Logo.svg|rahmenlos]]&lt;br /&gt;
| Screenshot = &lt;br /&gt;
| Beschreibung = &lt;br /&gt;
| Dateiendung = .yml (veraltet),&amp;lt;ref&amp;gt;{{Internetquelle |url=https://yaml.org/faq.html |titel=Is there an official extension for YAML files? |werk=yaml.org |abruf=2021-01-15}}&amp;lt;/ref&amp;gt; .yaml&lt;br /&gt;
| MIME = application/yaml&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=9512 |Titel=YAML Media Type |Datum=2024-02 |Autor=Roberto Polli, Erik Wilde, Eemeli Aro}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| MIME-Anm = &lt;br /&gt;
| MagischeZahl = &lt;br /&gt;
| MagischeZahlNotation = &lt;br /&gt;
| MagischeZahlHex = &lt;br /&gt;
| Entwickler = &lt;br /&gt;
| Veröffentlicht = 2001-05-11&lt;br /&gt;
| LetzteVersion = 1.2.2&amp;lt;ref&amp;gt;{{Internetquelle |url=https://yaml.org/spec/1.2.2/ |titel=YAML Ain’t Markup Language (YAML™) Version 1.2.2 |werk=yaml.org |abruf=2022-03-28}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| LetzteVersionDatum = 2021-10-01&lt;br /&gt;
| Art = Datenaustausch&lt;br /&gt;
| Container für = &lt;br /&gt;
| Enthalten in = &lt;br /&gt;
| Erweitert von = &lt;br /&gt;
| Erweitert zu = &lt;br /&gt;
| Standard = &lt;br /&gt;
| Website = [https://yaml.org/ yaml.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;YAML&amp;#039;&amp;#039;&amp;#039; [{{IPA|ˈjæməl}}] ist ein textbasiertes [[Dateiformat]] zur [[Serialisierung|Datenserialisierung]], das außerdem für [[Konfigurationsdatei]]en verbreitet ist. Die Idee zu YAML stammt von Clark Evans von 2001&amp;lt;ref&amp;gt;{{Internetquelle |autor=Clark C . Evans |url=https://groups.yahoo.com/neo/groups/sml-dev/conversations/topics/4710 |titel=YAML Draft 0.1 |datum=2001-05-11 |abruf=2019-06-22 |kommentar=Newsgroup, jetzt auf Yahoo Groups}}&amp;lt;/ref&amp;gt;, die Spezifikation wurde von ihm selbst, Brian Ingerson und Oren Ben-Kiki erstellt. YAML ist an [[Extensible Markup Language|XML]] &amp;#039;&amp;#039;(da ursprünglich als [[vereinfachte Auszeichnungssprache]] gedacht)&amp;#039;&amp;#039; und an die Datenstrukturen in den Sprachen [[Perl (Programmiersprache)|Perl]], [[Python (Programmiersprache)|Python]] und [[C (Programmiersprache)|C]] sowie dem in &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;2822&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=2822 |Titel=Internet Message Format |Datum=2001-04}}&amp;lt;/ref&amp;gt; vorgestellten E-Mail-Format angelehnt. &lt;br /&gt;
&lt;br /&gt;
YAML ist ein [[rekursives Akronym]] für „YAML Ain’t Markup Language“ (ursprünglich „Yet Another Markup Language“).&lt;br /&gt;
&lt;br /&gt;
== Design-Ziele ==&lt;br /&gt;
Die grundsätzliche Annahme von YAML ist, dass jede beliebige [[Datenstruktur]] als geschachtelte Struktur von [[Skalare Variable|Skalaren]], [[Array (Datentyp)|Arrays]] und [[Zuordnungstabelle]]n dargestellt werden kann. Durch dieses Konzept benötigt die [[Syntax]] von YAML seltener strukturgebende Elemente wie umschließende Klammern, [[Tag (Informatik)|Tags]] oder Anführungszeichen, und ist dadurch wiederum leichter von Menschen zu lesen und zu schreiben als beispielsweise XML oder [[JSON]]. Außerdem vereinfacht das Konzept die Weiterverarbeitung der Daten, da die meisten [[Programmiersprache|Sprachen]] [[Datentyp]]en für diese drei Konstrukte bereits integriert haben.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Hinweis:&lt;br /&gt;
* Das Zeichen &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; leitet einzeilige Kommentare ein, &amp;lt;code&amp;gt;---&amp;lt;/code&amp;gt; markiert den Beginn eines neuen Abschnitts.&lt;br /&gt;
* Ein Kommentar in der gleichen Zeile wie &amp;lt;code&amp;gt;---&amp;lt;/code&amp;gt; kann zwar Probleme beim Einlesen der YAML-Datei hervorrufen – aus Übersichtsgründen ist er im Beispiel jedoch trotzdem in der gleichen Zeile.&lt;br /&gt;
&lt;br /&gt;
Listen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
--- # im Block-Format ein paar Filme von M. Curtiz und A. Hitchcock aus den 1940er Jahren&lt;br /&gt;
- Berüchtigt (Notorious)&lt;br /&gt;
- Casablanca&lt;br /&gt;
- Ich kämpfe um dich (Spellbound)&lt;br /&gt;
- Solange ein Herz schlägt (Mildred Pierce)&lt;br /&gt;
--- # Inline-Format einer Einkaufsliste&lt;br /&gt;
[Haferflocken, Bananen, Nüsse]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assoziative Listen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
--- # Block&lt;br /&gt;
name: John Smith&lt;br /&gt;
age: 33&lt;br /&gt;
--- # Inline&lt;br /&gt;
{name: John Smith, age: 33}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Block-Ausdrücke mit [[Senkrechter Strich|senkrechtem Strich]] bewirken, dass Zeilenumbrüche beibehalten werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
--- |&lt;br /&gt;
  There was a young lady of Wright&lt;br /&gt;
  Who travelled much faster than light.&lt;br /&gt;
      She departed one day&lt;br /&gt;
      In a relative way&lt;br /&gt;
  And returned in the previous night.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quelle &amp;lt;ref&amp;gt;Ein Limerick aus dem Buch &amp;#039;&amp;#039;Eine kurze Geschichte der Zeit&amp;#039;&amp;#039; von [[Stephen Hawking]] zum Thema Relativitätstheorie&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Block-Ausdrücke mit Größer-als-Zeichen bewirken, dass einzelne Zeilenumbrüche in Leerzeichen geändert werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
--- &amp;gt;&lt;br /&gt;
  Umbrochener Text&lt;br /&gt;
  wird zu einem&lt;br /&gt;
  einzigen Absatz&lt;br /&gt;
  gefaltet.&lt;br /&gt;
&lt;br /&gt;
  Leerzeilen bezeichnen&lt;br /&gt;
  dagegen Absatzumbrüche.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Liste von assoziativen Listen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
- {name: John Smith, age: 33}&lt;br /&gt;
- name: Mary Smith&lt;br /&gt;
  age: 27&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assoziative Liste von Listen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
men: [John Smith, Bill Jones]&lt;br /&gt;
women:&lt;br /&gt;
  - Mary Smith&lt;br /&gt;
  - Susan Williams&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kritik ==&lt;br /&gt;
Insbesondere nach der weiten Verbreitung von YAML in Konfigurationen für [[Cloud Computing|Cloud]]-verwandte Systeme, beispielsweise [[Kubernetes]] und [[Microsoft Azure]], hat das Format einige Kritik erhalten.&amp;lt;ref&amp;gt;[https://noyaml.com/ noyaml.com]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell &amp;#039;&amp;#039;The yaml document from hell&amp;#039;&amp;#039;.] ruudvanasseldonk.com&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die angestrebte Vereinfachung der JSON-Syntax wird nach Meinung verschiedener Kritiker nicht erreicht. Die YAML-Spezifikation ist wesentlich länger als die Spezifikationen für [[JavaScript Object Notation|JSON]], [[TOML]] oder selbst die als umfangreich geltende [[Extensible Markup Language|XML]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.arp242.net/yaml-config.html#its-pretty-complex |titel=YAML: probably not so great after all |abruf=2022-07-01}}&amp;lt;/ref&amp;gt; YAML weist beispielsweise eine Vielzahl an Datentypen, einschließlich Datums- und Zeitformaten auf, die fast alle ohne Anführungszeichen geschrieben werden können. Da Strings nicht in Anführungszeichen geschrieben werden müssen, führt das zu komplexen Regeln bei der Typisierung von Werten, deren Ergebnisse überraschend sein können:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
time: 04:30 # Uhrzeit als Ganzzahl: 16200&lt;br /&gt;
# d. h. Port-Weiterleitung in Containern muss für korrektes Ergebnis evtl. in Anführungszeichen stehen:&lt;br /&gt;
port-forwarding-bad: 24:24 # falsch, Uhrzeit&lt;br /&gt;
port-forwarding-good: 80:80 # korrekt, String&lt;br /&gt;
&lt;br /&gt;
# Es gibt 22 Varianten für boolesches Wahr und Falsch:&lt;br /&gt;
- Don Corleone: Do you have faith in my judgment? # String&lt;br /&gt;
- Clemenza: Yes # Boolescher Wert Wahr (true)&lt;br /&gt;
- Don Corleone: Do I have your loyalty? # String&lt;br /&gt;
&lt;br /&gt;
# Gleitkommazahlen werden immer als solche erfasst, falls möglich&lt;br /&gt;
python: 3.5.3 # String&lt;br /&gt;
postgres: 9.3 # Gleitkommazahl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Hinzu kommen Schwierigkeiten wie mindestens neun Varianten für mehrzeilige Texte und die bereits erwähnten 22 Varianten für boolesche Werte, die es in der veralteten Version 1.1 gab und aus Variationen der Wörter &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot;, &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; bestehen.&amp;lt;ref&amp;gt;[https://yaml.org/type/bool.html yaml.org]&amp;lt;/ref&amp;gt; Alle diese Schwierigkeiten lassen sich jedoch umgehen, indem man Strings immer in Anführungszeichen schreibt.&lt;br /&gt;
&lt;br /&gt;
Tolerantes Parsing, welches Fehler weitestgehend vermeiden möchte (vergleiche [[JavaScript]]), kann zu unerwarteten Resultaten führen. Beispielsweise sind abgeschnittene YAML-Dokumente, die bei unvollständiger Dateispeicherung oder einem Netzwerkfehler auftreten können, meist noch gültig.&lt;br /&gt;
&lt;br /&gt;
YAML ist standardmäßig unsicher und erlaubt beim Einlesen die Ausführung beliebigen Programmcodes in einer Vielzahl von Implementierungen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://github.com/yaml/pyyaml |titel=PyYAML yaml.load(input) Deprecation |werk=yaml/pyyaml |hrsg=github |sprache=en |abruf=2022-07-01}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://lgtm.com/blog/swagger_snakeyaml_CVE-2017-1000207_CVE-2017-1000208 |titel=Arbitrary code execution via Swagger YAML parser (CVE-2017-1000207 and CVE-2017-1000208) |werk=LGTM Blog |datum=2018-06-28 |offline=1 |archiv-url=https://web.archive.org/web/20180628021903/https://lgtm.com/blog/swagger_snakeyaml_CVE-2017-1000207_CVE-2017-1000208 |archiv-datum=2018-06-28 |archiv-bot=2023-02-18 03:39:51 InternetArchiveBot |abruf=2022-07-01}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.php.net/manual/en/function.yaml-parse.php#refsect1-function.yaml-parse-notes |titel=yaml_parse |werk=Manual |hrsg=PHP |abruf=2022-07-01}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://ruby-doc.org/stdlib-2.4.0/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security |titel=Module: YAML (Ruby 2.4.0) |abruf=2022-07-01}}&amp;lt;/ref&amp;gt; Obwohl die meisten Implementierungen eine sichere Alternative anbieten und teilweise die unsichere Einlesefunktion als veraltet markiert haben, stellen die unsicheren Funktionen den Standard dar.&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
YAML-Implementierungen existieren unter anderem in den Programmiersprachen [[C (Programmiersprache)|C]], [[C++]], [[C-Sharp|C#]], [[JavaScript]], [[ActionScript]], [[Perl (Programmiersprache)|Perl]], [[PHP]], [[Python (Programmiersprache)|Python]], [[Java (Programmiersprache)|Java]], [[R (Programmiersprache)|R]],&amp;lt;ref&amp;gt;{{Internetquelle |url=http://biostat.mc.vanderbilt.edu/wiki/Main/YamlR |titel=R YAML package |hrsg=Vanderbilt University, Department of Biostatistics |datum=2012-01-20 |sprache=en |abruf=2018-01-26 |offline=ja }}&amp;lt;/ref&amp;gt; [[Ruby (Programmiersprache)|Ruby]], [[Rust (Programmiersprache)|Rust]]&amp;lt;ref&amp;gt;{{Internetquelle |autor=David Tolnay |url=https://docs.rs/serde_yaml/ |titel=Crate serde_yaml |sprache=en |abruf=2020-07-01}}&amp;lt;/ref&amp;gt; sowie für die [[.NET (Oberbegriff)|.NET-Plattformen]].&lt;br /&gt;
&lt;br /&gt;
== Ähnliche Techniken ==&lt;br /&gt;
&lt;br /&gt;
Zu ähnlichen Formaten für Konfigurationsdateien siehe [[Konfigurationsdatei#Dateiformate]].&lt;br /&gt;
&lt;br /&gt;
Mit [[JavaScript Object Notation|JSON]] existiert eine ähnliche Technik, die noch mehr am [[Objektmodell]] ([[Document Object Model|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.&amp;lt;ref&amp;gt;[https://www.yaml.org/spec/1.2/spec.html YAML Ain’t Markup Language (YAML) Version 1.2]&amp;lt;/ref&amp;gt; Aus der [[Clojure]]-Welt stammt das [[Extensible Data Notation|EDN]]-Format, welches eine an JSON angelehnte, erweiterbare Syntax verwendet.&lt;br /&gt;
&lt;br /&gt;
Auch für die grafische Notationssprache [[Unified Modeling Language|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 [[Meta Object Facility|MOF]], sodass HUTN jedes UML-Diagramm als leicht lesbaren Text darstellen kann. Die leichte Lesbarkeit unterscheidet HUTN vom [[XML Metadata Interchange|XMI]]-Format, das für den Datenaustausch zwischen UML-Applikationen vorgesehen ist.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://yaml.org/ Offizielle Website]&lt;br /&gt;
** [https://yaml.org/spec/ YAML-Spezifikation] (englisch)&lt;br /&gt;
* [https://www.nt.ntnu.no/users/haugwarb/Programming/YAML/YAML_for_ruby.html YAML-Kochbuch für Ruby] (englisch)&lt;br /&gt;
* [https://codebeautify.org/yaml-validator YAML-Validator] YAML Lint (englisch)&lt;br /&gt;
* [https://onthegotools.com/yamltools/yaml-linter YAML Linter &amp;amp; Validator] Quickly validate and clean YAML files. (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenserialisierungformat]]&lt;br /&gt;
[[Kategorie:Beschreibungssprache]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;br /&gt;
[[Kategorie:Konfiguration (Computer)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;LWChris</name></author>
	</entry>
</feed>