Beispiel: Erstellen von Hierarchien anhand von CSV- und FLF-Dateien
Sie finden dieses Beispiel im Ordner <Dokumente>\Altova\MapForce2025\MapForceExamples\ unter Tut-headerDetail.mfd. In diesem Beispiel wurde eine CSV-Datei (Orders.csv) mit dem folgenden Format verwendet:
•Field 1: H definiert einen Header-Datensatz und D einen Detail-Datensatz.
•Field 2: Ein gemeinsamer Schlüssel sowohl für Header- als auch Detail-Datensätze.
•Jeder Header- oder Detail-Datensatz befindet sich in einer eigenen Zeile.
Nachfolgend sehen Sie den Inhalt der Datei Orders.csv.
Ziel dieses Mapping ist:
•die Flat File CSV-Datei auf eine hierarchische XML-Datei zu mappen
•die mit einem H gekennzeichneten Header-Datensätze zu filtern
•die entsprechenden Detail-Datensätze, die mit einem D gekennzeichnet sind, mit den einzelnen Header-Datensätzen zu verknüpfen.
tut-headerDetail.mfd
Damit dies möglich ist, müssen die Header- und Detail-Datensätze ein gemeinsames Feld haben. In diesem Fall handelt es sich beim gemeinsamen Feld/Schlüssel um das zweite Feld in der CSV-Datei, nämlich OrderNo. In der CSV-Datei enthalten sowohl der erste Header-Datensatz als auch die folgenden beiden Detail-Datensätze den gemeinsamen Wert 111.
Die Datei Orders.csv wurde zweimal eingefügt, um das Mapping intuitiver zu machen.
Die Schema-Datei Tut-headerDetail.xsd hat eine hierarchische Struktur: "Order" ist das Root-Element, das das Child-Element "Header" enthält, das wiederum das Child-Element "Detail" enthält.
Die erste Orders.csv-Datei liefert die Header-Datensätze (und alle gemappten Felder) für das Header-Datenelement in der Schema-Zieldatei. Mit Hilfe der filter-Komponente werden alle Datensätze mit Ausnahme derer, die mit H beginnen herausgefiltert. Das Rows-Datenelement liefert die gefilterten Datensätze für das Header-Datenelement in der Schema-Datei.
Die zweite Orders.csv-Datei liefert die Detail-Datensätze (und alle gemappten Felder), indem die Detail-Datensätze, die mit dem OrderNo-Schlüssel des Header-Datensatzes übereinstimmen, herausgefiltert werden. Dies geschieht folgendermaßen:
•Das OrderNo-Feld des Header-Datensatzes wird mit Hilfe der equal-Funktion (der Prioritätskontext wird aus Gründen der Effizienz für den Parameter a festgelegt) mit demselben Feld der Details-Datensätze verglichen.
• Die Logical-and-Funktion wird verwendet, um nur diejenigen Detail-Datensätze weiterzugeben, die dasselbe OrderNo-Feld enthalten, wie der Header-Datensatz.
Über den on-true-Parameter der Filter-Komponente liefert das Datenelement Rows diese gefilterten Datensätze an die Datenelemente "Header" und "Detail" in der Schema-Datei.
Wenn Sie auf die Schaltfläche "Ausgabe" klicken, wird die unten gezeigte XML-Datei erzeugt. Jeder Header-Datensatz enthält die dazugehörigen Daten sowie alle damit verknüpften Detail-Datensätze mit derselben Bestellnummer (OderNo).
Werfen wir kurz einen Blick auf eine andere Beispieldatei, in der eine etwas andere CSV-Datei verwendet wird. Die Datei befindet sich unter dem Namen Head-detail-inline.mfd im Ordner <Dokumente>\Altova\MapForce2025\MapForceExamples\. Dies sind die Unterschiede:
•Es ist hier keine Datensatzkennung (H, or D) vorhanden
•Es gibt jedoch weiterhin ein gemeinsames Schlüsselfeld für den Header- und die Detail-Datensätze (Head-key, Detail-key...), nämlich das erste Feld in der CSV-Datei. Das Feld wird auf OrderNo im Zielschema gemappt.
•"Header" und alle entsprechenden "Detail"-Felder befinden sich alle in derselben Zeile.
Das Mapping wurde folgendermaßen erstellt:
•Die Schlüsselfelder werden auf die entsprechenden OrderNo-Datenelemente im Zielschema gemappt.
• Das Datenelement "Detail" in der Schema-Zieldatei wurde dupliziert und wird als Detail (2) angezeigt, damit Sie den zweiten Satz von Detail-Datensätzen auf das richtige Datenelement mappen können.
•Als Ergebnis dieses Mappings erhalten Sie in etwa dieselbe XML-Datei, wie im ersten Beispiel.
Head-detail-inline.mfd