YAML ist die Abkürzung für „yet another markup language“ oder „YAML ain't markup language“, wobei letzteres ein rekursives Akronym ist, das verwendet wird, um zu betonen, dass YAML für Daten und nicht für Dokumente gedacht ist. YAML ist eine Sprache zur Serialisierung von Daten, die zum Schreiben von Konfigurationsdateien für die Bereitstellung von Infrastruktur verwendet wird. Zur Bereitstellung einer Docker-Anwendung in Kubernetes würde beispielsweise für die Konfiguration der Instanz eine YAML-Datei verwendet werden. YAML ist für Menschen gut lesbar. Daher ist es einfach, eine Datei zu erstellen und während einer Bereitstellung die Anweisungen in dieser Datei zu lesen.
Wenn Sie sich noch nicht mit YAML beschäftigt haben, werden Sie schnell feststellen, dass Sie nach einer Möglichkeit suchen, wie Sie Ihre Strings auf mehrere Zeilen aufteilen können. Dies ist übrigens die im Internet am häufigsten gestellte Frage zu YAML. In diesem Artikel werden die beiden wichtigsten Konzepte zu mehrzeiligen Strings bei YAML erläutert und einige andere häufig gestellte Fragen beantwortet.
YAML und Leerzeichen: Wissenswertes
In YAML-Dateien werden zwar Leerzeichen und Zeilenumbrüche verwendet, der Inhalt wird jedoch beim Erfassen in einer bestimmten Ressource serialisiert. Entwickler, die eine YAML-Datei erstellen, können den Text mithilfe von Einrückungen und Abständen übersichtlicher formatieren. Bei YAML werden Leerzeichen ähnlich wie in anderen Sprachen behandelt, d. h., es können so viele Leerzeichen verwendet werden, wie zur Formatierung einer Datei benötigt werden.
Zeilenumbrüche bei mehrzeiligen YAML-Strings
Es kann vorkommen, dass beim Erfassen von YAML-Dateien Zeilenumbrüche in einem mehrzeiligen String erhalten bleiben sollen. Nehmen wir den folgenden Pseudocode als Beispiel:
key:
item1
item2
item3
Am Ende jeder Zeile (z. B. item1, item2 und item3) steht ein Zeilenumbruch. Wenn Sie die YAML-Syntax unverändert lassen, sieht der String wie folgt aus:
item1 item2 item3
Da bei diesem String-Format ein langer String ohne Zeilenumbruchformatierung erstellt wird, wäre es sinnvoll, die Zeilenumbrüche beizubehalten. Zeilenumbrüche können mit dem Literal-Operator beibehalten werden. Der Literal-Operator wird durch das Pipe-Zeichen („|“) dargestellt. Wenn Zeilenumbrüche beibehalten bleiben sollen, muss die YAML-Syntax wie folgt geändert werden:
key: |
item1
item2
item3
Beachten Sie das Pipe-Zeichen nach der Anweisung „key“. Beim Einlesen der YAML-Datei durch die Anwendung wird diese in den folgenden String konvertiert:
item1\nitem2\nitem3
Das Zeichen „\n“ steht für eine neue Zeile. Bei der Ausgabe dieses Strings an eine Anwendung wird jedes item mit einem angehängten Zeilenumbruch angezeigt, sodass die Formatierung in den YAML-Anweisungen erhalten bleibt.
Mehrzeilige YAML-Blöcke versus lange Strings
Bei langen Strings müssen zum Lesen einer YAML-Datei mehrzeilige Blöcke verwendet werden. Wenn beispielsweise in einer YAML-Datei ein Absatz mit 250 Wörtern enthalten ist, müssen die Sätze in mehrzeilige Blöcke aufgeteilt werden. Die Zeilenumbrüche sollten nur am Ende eines Absatzes beibehalten werden. Eine YAML-Datei kann so formatiert werden, dass bei langen Strings mehrere Zeilen verwendet werden und dass der String so serialisiert wird, dass an jedes item anstelle eines Zeilenumbruchs ein Leerzeichen angehängt wird.
Wenn anstelle eines Zeilenumbruchs ein Leerzeichen verwendet werden soll, wird der Folded-Operator („>“) verwendet:
key: >
item1
item2
item3
Wird der Folded-Operator verwendet, wird bei YAML beim Erstellen des Strings ein Leerzeichen eingefügt. Der String sieht wie folgt aus:
item1 item2 item3\n
FAQs zu mehrzeiligen Strings bei YAML
Wie wird in YAML ein Zeilenumbruch eingefügt?
Mit dem Literal-Operator („|“) werden sämtliche Zeilenumbrüche in einem YAML-String beibehalten. Ein Zeilenumbruch wird wie bei jedem anderen Dokument mit der Eingabetaste erstellt. Im folgenden Beispiel bleibt der Zeilenumbruch in einem YAML-String erhalten:
key: |
item1
item2
item3
Dürfen in einem YAML-String Leerzeilen enthalten sein?
Ja, ein als Textblock dargestellter String darf auch Leerzeilen enthalten. Mit dem Keep-Operator („|+“) bleiben alle Leerzeilen sowie der Zeilenumbruch erhalten. Der folgende YAML-String ist ein Beispiel für einen mehrzeiligen String mit zwei Leerzeilen am Ende des Blocks:
key: |+
item1
item2
item3
Ein YAML-Parser zeigt auf Basis der obigen Syntax den folgenden String an:
item1\nitem2\nitem3\n\n
Spielen Leerzeichen bei YAML eine Rolle?
Ein mit der Tabulatortaste eingefügtes Leerzeichen ist in YAML ein unzulässiges Zeichen. Daher müssen für Einrückungen normale Leerzeichen verwendet werden. Tabulatoren können in Strings in Anführungszeichen verwendet werden, jedoch nicht zur Formatierung einer YAML-Datei. Dabei ist ein einheitlicher Einzug mit Leerzeichen für die Übersichtlichkeit von Daten wichtig.
Sind in YAML Leerzeichen erlaubt?
Ja, in einer YAML-Datei können normale Leerzeichen verwendet werden. Für Einrückungen sollten Leerzeichen, nicht jedoch das Tabulatorzeichen verwendet werden. Tabulatorzeichen können bei der Analyse einer YAML-Datei Fehler verursachen.