NULL-Werte
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).