Mapping - Datenblätter und Pfade
Wir haben also ausgehend vom Quellbaum zwei entscheidende Gestaltungsmittel.
Datenblätter
Das erste Gestaltungsmittel ist implizit und schlicht durch die Datenblätter selbst gegeben. Die Zielstruktur wird einmal pro Datenblatt des Quellbaums durchlaufen. Das bestimmt auf oberster Ebene die Struktur der Zieldaten. Jeder (Teil-)Quellbaum eines Datenblatts auf der Eingangsseite erzeugt also immer ein Datenblatt mit einem (Teil-)Zielbaum auf der Ausgangsseite.
Noch etwas abstrakter betrachtet, ordnen die Datenblätter auf oberster Ebene sich wiederholende Strukturen der Eingangsdaten ein. Wie das getan wird, bestimmen die jeweiligen Parser-Regeln und wie Sie Ihre Quellstruktur aufgebaut haben. Ein einfaches Beispiel haben Sie bereits gesehen.
Pfade
Das zweite Gestaltungsmittel wird innerhalb der Datenblätter der Zielseite verwendet.
Beim Erzeugen des Quellbaums aus der Quellstruktur und den Eingangsdaten, kann ein Knoten der Quellstruktur in einem Datenblatt mehrfach erzeugt werden.
Wie wir oben bereits erwähnt haben, erzeugt jeder (Teil-)Quellbaum eines Datenblatts auf der Eingangsseite immer genau ein Datenblatt mit einem (Teil-)Zielbaum auf der Ausgangsseite. Allerdings werden hierbei Wiederholstrukturen (also mehrfach auftretende Knoten) innerhalb des Quellbaums nicht direkt in den Zielbaum übertragen! Per Default wird immer nur der erste Knoten übertragen!
Sie müssen eine Wiederholung eines Knotens im Zielbaum explizit veranlassen, indem Sie diesem Knoten in der Zielstruktur einen Pfad geben. Sie können dazu für den Zielstrukturknoten die Eigenschaft "Pfad" setzen. Konkret setzen Sie den Pfad eines Knotens der Zielstruktur auf einen Knoten der Quellstruktur. Danach wird der Knoten im Zielbaum genau so oft wiederholt, wie der Knoten im Quellbaum, auf den der Pfad gesetzt ist.
Beispiel
Das hört sich erst mal ein wenig kompliziert an, ist im Grunde aber sehr einfach. Sehen wir uns dazu die leicht modifizierte Quellstruktur (und fast identische Zielstruktur) des vorherigen Beispiels an und dazu leicht angepasste Eingangsdaten.
ADR;Max;Mustermann;Hauptstraße 1
TEL;00498157488364
TEL;00491723374222
ADR;Heike;Holler;Baumweg 3
TEL;00498157483221
Wenn alles funktioniert, wie wir uns das vorstellen, dann bekommen wir dieselbe Anzahl an Datenblättern wie im ersten Beispiel, aber wir sollten im ersten Datenblatt zwei Knoten Telefonnummer_in bekommen.
Sehen wir uns das Ergebnis eines Mapping-Tests mit obigen Eingangsdaten an.
Wie Sie sehen, klappt es soweit in der Quellstruktur, aber in der Zielstruktur bekommen wir nur einen Knoten Telefonnummer_out. Und der Grund hierfür ist, wie Sie sicher schon ahnen, dass wir keinen Pfad gesetzt haben vom Knoten Telefonnummer_out auf den Knoten Telefonnummer_in.
Das tun wir nun in der Eigenschaft "Pfad" des Zielstruktur-Knotens "Telefonnummer_out". Geben Sie dort den Wert "Telefonnummer_in" ein.
Wir betrachten im Mapping-Test erneut das Ergebnis und sehen, dass wir nun haben, was wir wollten. Der zweifach wiederholte Knoten Telefonnummer_in aus dem Quellbaum veranlasst nun das zweifache Wiederholen des Knotens Telefonnummer_out im Zielbaum.
Zusammenfassung
Damit haben Sie also zwei Mittel, um Wiederholstrukturen der Eingangsdaten auf dem Weg zu Ihren Ausgangsdaten zu strukturieren. Zuerst das Aufspalten in Datenblätter während des Parsens und dann das Setzen von Pfaden, um innerhalb eines Datenblatts wiederholte Daten darzustellen (z. B. ein mehrfach auftretender Knoten X wie im Diagramm). Im konkreten Beispiel haben wir also erst unserer Eingangsdaten aufgespaltet in Adressen (eine Adresse pro Datenblatt). Das evtl. mehrfache Auftreten des Telefonnummer-Knotens in einem Datenblatt des Eingangsbaums übertragen wir mit einem Pfad in den Zielbaum.
Der nächste Schritt ist nun das Füllen eines Datenblatts des Zielbaums.