Suche…


Erstellen einer Tabelle "Wörterbücher" mit YAML-Ankern als Zeilenbezeichner

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34

Problem

  • Der Entwickler möchte eine Tabellenstruktur in YAML ausdrücken, wobei auf jede Zeile ein kompakter Zeilenbezeichner verweist

Lösung

  • Verwenden Sie YAML-Anker, indem Sie jeder Zeile in der Tabelle eine Ankerkennung zuweisen
  • In YAML werden wiederverwendbare "Transclusionskennungen" Anker und Aliasnamen genannt
  • In YAML bestehen wiederverwendbare "Transclusionskennungen" aus alphanumerischen Token, denen ein kaufmännisches Und oder Sternchen vorangestellt ist

Begründung

  • YAML-Anker und Aliasnamen ermöglichen eine verstärkte Normalisierung der Daten
  • YAML Anker und Aliase erzwingen DRY (Wiederholen Sie sich nicht)
  • In diesem Beispiel kann eine Tabellenstruktur entworfen und beibehalten werden, die eng mit einer Datenbank übereinstimmt

Fallstricke

  • YAML-Anker müssen deklariert werden, bevor sie von Aliasnamen referenziert werden können
  • YAML-Anker müssen im gesamten Dokument eindeutig sein
  • Fehler bei der Angabe eindeutiger Anker verursacht einen Fehler in yaml.load()
  • Nicht alle YAML-Parser unterstützen zuverlässig Anker und Aliasnamen

Siehe auch

Stackoverflow YAML

Verwenden von YAML-Aliasen zum Querverweisen von Zeilen aus einer YAML-Tabelle

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        person:   *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        person:   *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        person:   *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problem

  • Der Entwickler möchte Zeilen mit Ankern aus einer Tabelle referenzieren und mit Zeilen mit Aliasnamen in einer anderen Tabelle verknüpfen

Lösung

  • Verwenden Sie YAML-Aliase, die vordefinierte Anker aus einer anderen Tabelle referenzieren
  • In YAML werden wiederverwendbare "Transclusionskennungen" Anker und Aliasnamen genannt
  • In YAML bestehen wiederverwendbare "Transclusionskennungen" aus alphanumerischen Token, denen ein kaufmännisches Und oder Sternchen vorangestellt ist

Begründung

  • YAML-Anker und Aliasnamen ermöglichen eine verstärkte Normalisierung der Daten
  • YAML Anker und Aliase erzwingen DRY (Wiederholen Sie sich nicht)
  • In diesem Beispiel kann eine Tabellenstruktur entworfen und beibehalten werden, die eng mit einer Datenbank übereinstimmt
  • In diesem Beispiel können Dateneingabe und Dateigrößen reduziert werden

Fallstricke

  • In diesem speziellen Beispiel erzeugt yaml.load() verschachtelte Wörterbücher
    • Dies wird als "Problem mit verschachtelten Wörterbüchern" bezeichnet.
    • Unter dem Personennamen-Wert-Paar ist der Wert für die Person ein Unterwörterbuch
    • Dies kann unerwünscht sein, da die Gleichmäßigkeit der Tabellenstruktur beeinträchtigt wird
  • Wenn Sie Aliase nicht korrekt angeben, werden fehlende Daten angezeigt
    • (Tippfehler erzeugen gebrochene Querverweise)
  • YAML unterstützt die Transklusion von Dateien nicht per Verweis, daher müssen alle Aliase und Anker in derselben Yaml-Datei vorhanden sein
  • Nicht alle YAML-Parser unterstützen zuverlässig Anker und Aliasnamen

Siehe auch

Stackoverflow YAML

Verwenden von YAML-Merge-Schlüsseln zum Querverweisen von Zeilen aus einer anderen YAML-Tabelle

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        <<: *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        <<: *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        <<: *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problem

  • Der Entwickler möchte Zeilen mit Ankern aus einer Tabelle referenzieren und mit Zeilen mit Aliasnamen in einer anderen Tabelle verknüpfen
  • Entwickler möchte vermeiden, das Problem "verschachtelte Wörterbücher" zu erstellen

Lösung

  • Verwenden Sie YAML-Aliase mit YAML-Merge-Schlüsseln
  • In YAML werden wiederverwendbare "Transclusionskennungen" Anker und Aliasnamen genannt
  • In YAML bestehen wiederverwendbare "Transclusionskennungen" aus alphanumerischen Token, denen ein kaufmännisches Und oder Sternchen vorangestellt ist

Begründung

  • YAML-Anker und Aliasnamen ermöglichen eine verstärkte Normalisierung der Daten
  • YAML Anker und Aliase erzwingen DRY (Wiederholen Sie sich nicht)
  • In diesem Beispiel kann eine Tabellenstruktur entworfen und beibehalten werden, die eng mit einer Datenbank übereinstimmt
  • In diesem Beispiel können Dateneingabe und Dateigrößen reduziert werden

Fallstricke

  • In diesem speziellen Beispiel erzeugt yaml.load() verschachtelte Wörterbücher
    • Unter dem Personennamen-Wert-Paar ist der Wert für die Person ein Unterwörterbuch
    • Dies kann unerwünscht sein, da die Gleichmäßigkeit der Tabellenstruktur beeinträchtigt wird
  • Wenn Sie Aliase nicht korrekt angeben, werden fehlende Daten angezeigt
    • (Tippfehler erzeugen gebrochene Querverweise)
  • YAML unterstützt die Transklusion von Dateien nicht per Verweis, daher müssen alle Aliase und Anker in derselben Yaml-Datei vorhanden sein
  • Nicht alle YAML-Parser unterstützen zuverlässig Anker und Aliasnamen

Siehe auch



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow