Altova MapForce 2024 Basic 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).

 

© 2018-2024 Altova GmbH