Außerkraftsetzen des Mapping-Kontexts

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Erstellen von Mappings > Mapping-Regeln und -Strategien >

Außerkraftsetzen des Mapping-Kontexts

Um in einigen Mappings das gewünschte Mapping-Ergebnis zu erzielen, muss eventuell der Mapping-Kontext außer Kraft gesetzt werden. Einige Komponenten bieten zu diesem Zweck ein optionales parent-context-Datenelement in ihrer Struktur, mit Hilfe dessen Sie den Mapping-Kontext gegebenenfalls beeinflussen können. Beispiele für solche Komponenten sind Aggregierungsfunktionen, Variablen und Join-Komponenten.

fn-count

Eine Aggregierungsfunktion mit optionalem parent-context

Um zu veranschaulichen, warum der Mapping-Kontext von Bedeutung ist, wollen wir eine XML-Datei zum Mapping hinzufügen, die verschachtelte Nodes mit mehreren Ebenen enthält. Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei: <Dokumente>\Altova\MapForce2019\MapForceExamples\Altova_Hierarchical.xml.

mf_parent-context

Altova_Hierarchical.xml

Beachten Sie, dass der übergeordnete Office-Node in der obigen XML-Datei mehrere Department-Nodes enthält und dass jeder Department-Node mehrere Person-Nodes enthält. Wenn Sie die eigentliche XML-Datei in einem XML-Editor öffnen, sehen Sie folgende Aufteilung von Personen nach Niederlassung (Office) und Abteilung (Department)::

 

Office

Department

Personenzahl

Nanonull, Inc.

Administration

3

Marketing

2

Engineering

6

IT & Technical Support

4

Nanonull Partners, Inc.

Administration

2

Marketing

1

IT & Technical Support

3

 

Angenommen, in Ihrem Mapping sollen alle Personen in allen Abteilungen gezählt werden. Sie können dazu die Funktion count aus den core | aggregate-Funktionen hinzufügen und die Daten folgendermaßen mappen:

mf_parent-context1

Wenn Sie in dieser Phase eine Vorschau des Mappings anzeigen, ist die Ausgabe 21, was der Gesamtanzahl aller Personen in allen Abteilungen entspricht. Beachten Sie, dass die count-Funktion einen optionalen parent-context Input enthält, der bisher nicht verbunden wurde. Folglich ist der Parent-Kontext der count-Funktion der Standard-Root-Node der Quellkomponente (welcher in diesem Fall das Datenelement Altova ist). Das bedeutet, dass alle Personen aus allen Abteilungen für diese count-Funktion berücksichtigt werden. So funktioniert der Mapping-Kontext standardmäßig, wie in Mapping-Regeln und -Strategien beschrieben, und dies ist für die meisten Mapping-Szenarien ausreichend.

 

Der Mapping-Standardkontext kann jedoch, falls nötig, außer Kraft gesetzt werden. Fügen Sie zu diesem Zweck, wie unten gezeigt, eine Verbindung vom Node Office zum parent-context-Input hinzu.

mf_parent-context2

Indem Sie das Mapping, wie oben gezeigt, ändern, legen Sie fest, dass über Personendatensätze im Kontext jeder Niederlassung (office) iteriert werden soll. Wenn Sie daher jetzt eine Vorschau auf das Mapping anzeigen, ist die Ausgabe 15*. Dies entspricht genau der Anzahl der Personen in der ersten Niederlassung, "Nanonull, Inc.", da die Personen-Nodes diesmal zwei Mal (einmal für jede Niederlassung) gezählt wurden. Die Anzahl der Personen in jeder Niederlassung war 15 bzw. 6. Es wurde jedoch nur das erste Ergebnis zurückgegeben (da die Funktion keine Wertesequenz, sondern nur einen einfachen Wert zurückgeben kann).

 

* Angenommen, die Zielsprache des Mappings ist eine andere als XSLT 1.0.

 

Sie können das Mapping weiter ändern und den Mapping-Kontext in Department ändern, wie unten gezeigt. Dieses Mal würden die Personendatensätze im Kontext der einzelnen Abteilungen (Department) gezählt (d.h. 7 Mal, was der Gesamtanzahl der Abteilungen entspricht). Wieder werden nur die ersten Ergebnisse zurückgegeben, daher ist die Mapping-Ausgabe 3, was der Anzahl der Personen in der ersten Abteilung der ersten Niederlassung entspricht.

mf_parent-context3

Dieses Mapping bewirkt noch nicht viel. Ziel war es nur zu zeigen, wie der parent-context-Input die Ausgabe des Mappings beeinflusst. Bedenken Sie, dass Sie den parent-context auch in anderen Mappings, wie z.B. solchen, die Variablen oder Join-Komponenten enthalten, außer Kraft setzen können. Siehe auch Beispiel: Unterteilen von Datensätzen in Gruppen und Untergruppen.


© 2019 Altova GmbH