Altova MapForce 2024 Professional Edition

Wenn Sie ein Mapping mit MapForce erstellen, ist das Ziel in den meisten Fällen, Werte aus einer Quelldatei zu lesen und Werte in eine Zieldatei zu schreiben. In manchen Fällen benötigen Sie jedoch nicht nur Zugriff auf die Node-Werte aus der Quelldatei, sondern auch auf die Node-Namen. Sie könnten z.B. ein Mapping benötigen, in dem die Element- oder Attributnamen (nicht die Werte) aus einer XML-Quelldatei gelesen und in Element- oder Attributwerte (nicht Namen) in einer XML-Zieldatei konvertiert werden.

 

Betrachten Sie das folgende Beispiel: Sie haben eine XML-Datei, die eine Liste von Produkten enthält. Jedes Produkt hat das folgende Format:

 

  <product>

    <id>1</id>

    <color>red</color>

    <size>10</size>

  </product>

 

Ihr Ziel ist es, Informationen über jedes Produkt in Namen-Wert-Paare zu konvertieren, z.B.:

 

  <product>
    <attribute name="id" value="1" />
    <attribute name="color" value="red" />
    <attribute name="size" value="10" />
</product>

 

In diesem Szenario benötigen Sie im Mapping Zugriff auf den Node-Namen. Beim dynamischen Zugriff auf Node-Namen können Sie Datenkonvertierungen wie die oben beschriebene durchführen.

 

Anmerkung:Sie können die Transformation auch mit Hilfe der Funktionen node-name und static-node-name aus der core-Bibliothek durchführen. In diesem Fall müssen Sie jedoch genau wissen, welche Element-Namen in der Quelldatei vorkommen und Sie müssen jedes einzelne Element manuell mit der Zielkomponente verbinden. Diese Funktionen genügen oft außerdem nicht, wenn Sie z.B. Nodes nach Namen filtern oder gruppieren müssen oder den Datentyp des Node im Mapping bearbeiten müssen.

 

Ein dynamischer Zugriff auf Node-Namen ist nicht nur beim Lesen von Node-Namen, sondern auch beim Schreiben von Node-Namen möglich. In einem Standard-Mapping sind die Namen von Attributen oder Elementen in einer Zieldatei immer noch vor Ausführung des Mappings bekannt; sie stammen aus dem Schema, das der Komponente zugrunde liegt. Bei dynamischen Node-Namen können Sie hingegen neue Attribute oder Elemente erstellen, deren Namen vor Ausführung des Mappings nicht bekannt sind. Der Name des Attributs oder Elements kommt in diesem Fall aus dem Mapping selbst, nämlich aus jeder beliebigen von MapForce unterstützten Quelldatei.

 

Damit ein dynamischer Zugriff auf die Child-Elemente oder -Attribute eines Node möglich ist, muss der Node tatsächlich Child-Elemente oder -Attribute haben und darf nicht der XML-Node sein.

 

Dynamische Node-Namen werden unterstützt, wenn Sie von oder auf die folgenden Komponententypen mappen:

 

XML

CSV/FLF*

 

* MapForce Professional oder Enterprise Edition erforderlich.

 

Anmerkung:Im Fall von CSV/FLF bedeutet dynamischer Zugriff, Zugriff auf "Felder" anstelle von "Nodes", da CSV/FLF-Strukturen keine "Nodes" haben.

 

 

Wenn es sich bei der Zielkomponente des Mappings um eine CSV- oder FLF- (fixed-length field)-Datei handelt, müssen die Felder in den Komponenteneinstellungen definiert werden (Und es ist nicht möglich, den Namen, die Reihenfolge oder die Anzahl der Zielfelder zu ändern). Im Gegensatz zu XML-Dateien ist das Format von Textdateien festgelegt, daher kann nur der tatsächliche Feldwert, nicht aber der Feldname, die Anzahl der Felder oder die Reihenfolge des Felds bearbeitet werden.

 

 

Dynamische Node-Namen werden unterstützt in jeder der folgenden Mapping-Sprachen unterstützt: Built-In*, XSLT2, XSLT 3.0, XQuery*, C#*, C++*, Java*.

 

* MapForce Professional oder Enterprise Edition erforderlich.

 

Informationen zur Funktionsweise von dynamischen Node-Namen finden Sie unter Zugriff auf Node-Namen. Ein Schritt-für-Schritt-Beispiel für ein solches Mapping finden Sie unter Beispiel: Mappen von Elementnamen auf Attributwerte.

© 2017-2023 Altova GmbH