Eine Geschäftsnachricht kann Felder enthalten, die leer sind oder einen Wert außerhalb des gültigen Bereichs enthalten. In diesen Fällen wird von der Anwendung, die die Nachricht empfängt, erwartet, dass sie das Feld wie ein leeres Feld handhabt. Die logische Nachrichtenbaumstruktur unterstützt dieses Konzept, indem sie zulässt, dass der Wert eines Elements auf NULL gesetzt werden kann.
In einem XML-Dokument wird ein Nullwert ausgedrückt, indem das Element oder Attribut leer bleibt.
Beispiel: <price></price> oder <element price=""/>
Mit dem Attribut 'xsi:nil' kann dies expliziter ausgedrückt werden: price=<xsi:nil="true"/>
Einige Geschäftsnachrichten verwenden einen besonderen Wert für die Darstellung eines Nullwerts: <price>-999</price>. Diese Art der Nulldarstellung wird von DFDL- und MRM-Parsern unterstützt.
Der DFDL-Parser kann einen Nullwert erkennen, der durch einen Wert außerhalb des gültigen Bereichs dargestellt wird. Der Nullwert muss im DFDL-Schema angegeben werden und kann für jedes Element gleich oder unterschiedlich sein. In DFDL wird dieser Wert als Nullwert bezeichnet. Bei der Syntaxanalyse prüft der DFDL-Parser die Nullwerte für jedes Element in der Nachricht. Wenn der Wert im Bitstrom mit dem Nullwert im DFDL-Schema übereinstimmt, setzt der DFDL-Parser den Wert in der Nachrichtenbaumstruktur auf NULL. Dieselbe Prüfung wird auch beim Umwandeln einer Nachrichtenbaumstruktur in einen Bitstrom durchgeführt. Wenn der Wert in der Nachrichtenbaumstruktur NULL ist, gibt der DFDL-Parser den Nullwert aus dem DFDL-Schema aus.
Weitere Informationen finden Sie in der DFDL 1.0-Spezifikation im Abschnitt 13.15.
Mit ESQL können Sie den Wert eines Elements der Nachrichtenbaumstruktur auf NULL setzen:
SET OutputRoot.XMLNSC.myField VALUE = NULL;
Beachten Sie den Unterschied zu der Angabe SET OutputRoot.XMLNSC.myField = NULL;, bei der 'myField' aus der Nachrichtenbaumstruktur gelöscht werden würde.
Dasselbe Ergebnis kann auch bei Verwendung von Java erzielt werden.
Die XML-Parser (XMLNSC, XMLNS und XML) erstellen in der Nachrichtenbaumstruktur normalerweise keine Nullwerte; ein leeres Element oder ein leerer Attributwert ergibt lediglich einen leeren Zeichenfolgewert in der Nachrichtenbaumstruktur.
Wenn die Auswertung aktiviert ist, erkennt und verarbeitet der XMLNSC-Parser das Attribut 'xsi:nil' überall dort im Eingabedokument, wo es vorkommt. Falls das Attribut 'xsi:nil' auf 'true' gesetzt ist und das Element nullfähig ist, erhält das übergeordnete Element des Attributs in der Nachrichtenbaumstruktur einen Nullwert.
Weitere Informationen zur XML-Parserunterstützung für leere Elemente und Nullwerte finden Sie in den Abschnitten Leere XMLNSC-Elemente und Nullwerte und Leere XMLNS-Elemente und Nullwerte.
Physisches XML-Format
Bei der Syntaxanalyse kann der MRM XML-Parser das Attribut 'xsi:nil' im XML-Eingabedokument erkennen und verarbeiten. Falls das Attribut 'xsi:nil' auf 'true' gesetzt ist und das Element nullfähig ist, erhält das übergeordnete Element des Attributs in der Nachrichtenbaumstruktur einen Nullwert.
Informationen zur Aktivierung der Unterstützung für das Attribut 'xsi:nil' im MRM-Parser finden Sie im Abschnitt Nachrichtengruppen: XML-Optionen zur Nullwertbehandlung.
Die folgenden Abschnitte enthalten weitere Informationen zur Handhabung von Nullwerten im MRM-Parser:
Alle physischen Formate
Der MRM-Parser kann einen Nullwert erkennen, der durch einen Wert außerhalb des gültigen Bereichs dargestellt wird. Dieser Nullwert muss im physischen Format der Nachrichtengruppe angegeben werden.
Bei der Syntaxanalyse überprüft der MRM-Parser den Nullwert für jedes Element in der Nachricht. Wenn der Wert im Bitstrom mit dem Nullwert in der Nachrichtengruppe übereinstimmt, setzt der MRM-Parser den Wert in der Nachrichtenbaumstruktur auf NULL.
Dieselbe Prüfung wird auch beim Umwandeln einer Nachrichtenbaumstruktur in einen Bitstrom durchgeführt. Wenn der Wert in der Nachrichtenbaumstruktur NULL ist, gibt der MRM-Parser den Nullwert aus der Nachrichtengruppe aus.
Das JSON-Format unterstützt NULL als JSON-Wertetyp.
Wenn eine JSON-Nachricht ein Objekt mit einem Nullwert enthält, setzt der JSON-Parser den Wert in der Nachrichtenbaumstruktur auf NULL.
Bei der Serialisierung eines Elements der Nachrichtenbaumstruktur, das einen Nullwert enthält, wird der JSON-Bitstrom als ein JSON-Objekt mit dem Wert NULL erstellt.