Altova MapForce 2024 Enterprise Edition

In diesem Abschnitt wird erläutert, wie MapForce NULL-Werte in Quell- und Zielkomponenten behandelt. Um das Attribut xsi:nil="true" in Ihrer XML-Datei verwenden zu können, müssen Sie in Ihrer Schema-Datei für das/die relevante(n) Element(e) das Attribut nillable="true" definieren. Nähere Informationen über die Attribute nillable und xsi:nil finden Sie in der W3C-Spezifikation. Beachten Sie, dass das Attribut xsi:nil im Mapping-Fenster in der Struktur einer Komponente nicht sichtbar ist.

 

In den folgenden Unterabschnitten werden einige mögliche Szenarien beim Mappen von NULL-Werten beschrieben.

 

NULL-Werte in XML-Komponenten

In diesem Unterabschnitt werden einige mögliche Szenarien beim Mappen von Elementen mit einem xsi:nil="true"-Attribut beschrieben.

 

Nur das Quellelement hat xsi:nil="true"/Sowohl Quell- als auch Zielelementen haben xsi:nil="true"

Für dieses Szenario gelten die folgenden Bedingungen:

 

Die Verbindung ist zielorientiert.

Das Quellelement hat ein xsi:nil="true"-Attribut. Das dazugehörige Zielelement hat dieses Attribut nicht.

Alternativ dazu können sowohl Quell- als auch Zielelemente xsi:nil="true"-Attribute haben.

Die nillable="true"-Attribute müssen im Quell- und im Zielschema definiert sein.

Quell- und Zielelement haben den Typ simpleType.

 

In diesem Fall erhält das Zielelement in der Ausgabedatei das Attribut xsi:nil="true" , wie in der Beispiel-Ausgabedatei unten gezeigt (gelb markiert).

 

<book id="7">

 <author>Edgar Allan Poe</author>

 <title>The Murders in the Rue Morgue</title>

 <category xsi:nil="true"/>

 <year>1841</year>

 <OrderID id="213"/>

</book>

 

Anmerkung:Wenn das Attribut nillable="true" im Zielschema nicht definiert ist, bleibt das entsprechende Zielelement in der Ausgabe leer.

 

Nur das Zielelement hat xsi:nil="true"

Für dieses Szenario gelten die folgenden Bedingungen:

 

Die Verbindung ist zielorientiert.

Das Quellelement hat kein xsi:nil="true"-Attribut.

Das dazugehörige Zielelement hat ein xsi:nil="true"-Attribut.

Quell- und Zielelement können den Typ simpleType oder complexType haben.

 

In diesem Fall überschreibt das Quellelement das Zielelement, das das Attribut xsi:nil="true" enthält. Unten sehen Sie ein Beispiel für eine Ausgabedatei. Das Element <genre> enthält im Zielelement das Attribut xsi:nil="true". Dieses Element wurde zur Mapping-Laufzeit jedoch überschrieben. Daher hat das Element <genre> (gelb markiert) in der Ausgabe Fiction.

 

<publication>

 <id>1</id>

 <author>Mark Twain</author>

 <title>The Adventures of Tom Sawyer</title>

 <genre>Fiction</genre>

 <year>1876</year>

 <OrderID id="124"/>

</publication>

 

Das Quellelement vom ComplexType/beide Elemente vom ComplexType haben xsi:nil="true"

Für dieses Szenario gelten die folgenden Bedingungen:

 

Die Verbindung ist zielorientiert.

Das Quellelement hat den Typ complexType. Das Quellelement hat in unserem Beispiel ein Attribut id="213" und ein Attribut xsi:nil="true". Das dazugehörige Zielelement hat ebenfalls den Typ complexType und ein Attribut id="124", hat aber kein xsi:nil="true"-Attribut.

Alternativ dazu können das Quell- und das Zielelement, beide vom Typ complexType, xsi:nil="true"-Attribute haben.

 

In diesem Fall überschreibt das Quellelement das Zielelement (unten gelb markiert). Das Attribut xsi:nil="true" wird jedoch nicht automatisch in die Ausgabe geschrieben. Damit das Attribut xsi:nil="true" in der Ausgabedatei im Zielelement aufscheint, verwenden Sie eine Alles kopieren-Verbindung.

 

<book id="7">

 <author>Edgar Allan Poe</author>

 <title>The Murders in the Rue Morgue</title>

 <year>1841</year>

 <OrderID id="213"/>

</book>

 

Nützliche Funktionen

Mit Hilfe der folgenden Funktionen können Sie NULL-Werte überprüfen, ersetzen und zuweisen:

 

is-xsi-nil: Damit können Sie explizit überprüfen, ob in einem Quellelement das Attribut xsi:nil auf true gesetzt ist.

substitute-missing: Ersetzt einen NULL-Wert im Quellelement durch etwas Bestimmtes.

set-xsi-nil: Weist einem Zielelement das Attribut xsi:nil="true" zu. Dies funktioniert bei Zieldatenelementen vom Typ "simpleType" und "complexType".

substitute-missing-with-xsi-nil: Wenn Inhalt vorhanden ist, wird dieser in das Zielelement geschrieben; wenn Werte fehlen, wird das Zielelement in der Ausgabe mit dieser Funktion mit dem Attribut xsi:nil="true" versehen.

Wenn Sie die exists-Funktion mit einem Quellelement mit einem NULL-Wert verbinden, wird true zurückgegeben, selbst wenn das Element keinen Inhalt hat.

 

Beachten Sie, dass Funktionen, die xsi:nil generieren, nicht über Funktionen oder Komponenten übergeben werden können, die nur an Werten operieren (wie z.B. die if-else-Funktion).

 

NULL-Werte in Datenbankkomponenten

In diesem Unterabschnitt wird erläutert, wie NULL-Werte in Datenbankkomponenten behandelt werden.

 

Mappen von NULL-Datenbankfeldern auf NULL-Elemente

Zielelemente, die NULL-Werte aus Datenbankfeldern erhalten, werden in der Ausgabe nicht automatisch erstellt. Damit solche Elemente in der Ausgabe angezeigt werden, müssen Sie zu den entsprechenden Elementen in der Schema-Datei (i) nillable="true"-Attribute hinzufügen und (ii) im Mapping die Funktion substitute-missing-with-xsi-nil verwenden. Im Beispiel unten sehen Sie, wie NULL-Werte in Mappings mit einer Quelldatenbankkomponente behandelt werden.

 

Applications-Tabelle im DB-Abfrage-Fenster

Das Beispielmapping befindet sich unter dem folgenden Pfad: Tutorial\DBNullToXML.mfd. Wir haben für unser Beispiel nur eine einzige Tabelle (Application) aus der Datenbank Accounts (siehe unten) ausgewählt.

nill3

Um die Tabelle Application zu sehen, gehen Sie folgendermaßen vor:

 

Öffnen Sie das Fenster DB-Abfrage.

Wählen Sie die Datenbank Accounts aus, um ihre Struktur im Datenbank Browser zu sehen.

Klicken Sie mit der rechten Maustaste auf die Tabelle Application und wählen Sie den Befehl In SQL Editor anzeigen | SELECT.

Klicken Sie auf die Schaltfläche ic_execute-sql (Abfrage ausführen). Daraufhin wird die Tabelle Application auf dem Register Ergebnisse angezeigt.

 

Nähere Informationen über Datenbankabfragen finden Sie unter DB-Abfrage-Fenster..

 

Mapping

In der Tabelle Application oben sehen Sie, dass der zweite Datensatz in den Feldern Description, Category und URL NULL-Werte hat. Zur Veranschaulichung werden wir fast alle Spalten direkt auf die entsprechenden Zielelemente mappen. Für die Spalte URL verwenden wir die Funktion substitute-missing-with-xsi-nil, damit der NULL-Wert im Zielelement ein xsi:nil="true"-Attribut erhält (siehe Mapping unten).

nill4

Ausgabe

In der Ausgabedatei unten sehen Sie, dass der erste Datensatz aus der Tabelle vollständig in die Ausgabe geschrieben wurde, während der zweite Datensatz nur teilweise dorthin geschrieben wurde. Außer im Element URL fehlen die NULL-Datenbankwerte in der Ausgabe. Da das Element URL in der Schema-Datei das Attribut nillable="true" hat und wir die Funktion substitute-missing-with-xsi-nil verwenden, hat das Element URL nun in der Ausgabe das Attribut xsi:nil="true" (gelb markiert).

 

<Application>

 <AppID>1</AppID>

 <AppName>Altova MapForce</AppName>

 <Description>Best data mapping tool!</Description>

 <Category>IDE</Category>

 <URL>https://www.altova.com/de/mapforce</URL>

</Application>

<Application>

 <AppID>2</AppID>

 <AppName>Notepad</AppName>

 <URL xsi:nil="true"/>

</Application>

 

Mappen von NULL-Element auf NULL-Datenbankfelder

Wenn Sie ein XML-NULL-Element auf eine Datenbankspalte mappen, schreibt MapForce einen NULL-Wert in die entsprechende Datenbankspalte. Wenn Sie ein Datenbankfeld auf NULL setzen möchten, können Sie dies auch mit Hilfe der Funktion set-null tun. Nähere Informationen über Funktionen im Zusammenhang mit Datenbanken finden Sie in der DB-Bibliothek.

 

© 2018-2024 Altova GmbH