In diesem Thema wird beschrieben, wie der XML-Parser Nullwerte behandelt.
Die XML-Domäne hat kein Konzept von einem Nullwert im Nachrichtenbitstrom. Es gibt keine Bytefolge in einer XML-Nachricht, die zur Erzeugung eines expliziten Nullwerts durch den XML-Parser in der Nachrichtenbaumstruktur führt. Der Parser erzeugt zwar kein Nachrichtenbaumstrukturfeld mit einem expliziten Nullwert, aber Sie können innerhalb eines Nachrichtenflusses ESQL codieren, was zu einem Feld dieses Formats führt.
Wenn der XML-Parser einen neuen Nachrichtenbitstrom von der Nachrichtenbaumstruktur erstellt, entdeckt er möglicherweise explizite Nullwerte und muss diese handhaben können. In dieser Situation wird ein expliziter Nullwert als 'keine zu schreibende Zeichen' angesehen, und das Feld wird als Leertags erstellt.
In der XML-Domäne gibt es mehrere Werte, die zu XML-Leertags in der XML-Ausgabenachricht führen:
Wenn diese in eine XML-Nachricht als Leertags geschrieben wurden, ist es nicht möglich, zwischen den drei Fällen zu unterscheiden, nachdem die XML-Nachricht nachfolgend ausgewertet wurde. Wenn Leertags in XML ausgewertet werden, wird eine XML-Nachrichtenbaumstrukturfeld erzeugt, das keinen Wert aufweist. Dies unterscheidet sich von einem Nachrichtenbaumstrukturfeld, das einen expliziten Nullwert enthält, und einem, das eine Nullfeldlänge-Zeichenfolge beinhaltet.
Der XML-Parser löst diese drei unterschiedlichen Werte des Nachrichtenbaumstrukturfelds zwar mit dem gleichen Ergebnis im Bitstrom auf, aber andere Nachrichtenbaumstrukturoperationen können zwischen ihnen unterscheiden. Obwohl der XML-Parser keine Felder erzeugt, die explizite Nullwerte und Nullfeldlänge-Zeichenfolgen enthalten, können Sie Operationen in Nachrichtenflüssen durchführen, die das können.
Wenn ein Nachrichtenfluss in der XML-Domäne Nachrichten verarbeitet, muss ESQL oder Java aus diesem Grund zwischen einem expliziten Nullwert, einer Nullfeldlängen-Zeichenfolge und einem Nachrichtenbaumstrukturfeld ohne Wert unterscheiden. Noch nicht einmal ein Feld, das den expliziten Nullwert enthält, wird als Null angesehen, wenn Sie ESQL so codieren, dass der Wert des Elements abgefragt wird.
Der XML-Schreibvorgang kann diesen Zustand handhaben, aber andere Operationen in ESQL behandeln diesen nicht als Nullwert. Die XML-Domäne hat kein Konzept von einem Nullwert, und der Parser erzeugt nie ein Feld, das einen expliziten Nullwert enthält. Da die XML-Domäne zeichenorientiert ist, wird als Ergebnis ein Zeichenfeld ausgegeben, wenn der Wert eines Felds abgefragt wird. Wenn Sie ein XML-Nachrichtenbaumstrukturfeld mit einem expliziten Nullwert erstellen, wird dieser für die ESQL-Routinen nicht als Nullwert angesehen, die den Wert des Nachrichtenbaumstrukturfelds abfragen.
Was zurückgegeben wird, ist die Zeichendarstellung des Feldinhalts, was in diesem Fall die Zeichenfolge 'NULL' ist. Beispiel: Wenn Sie solche Vergleiche mit IS NULL durchführen, wird dies nicht als ein TRUE-Wert bewertet. Wenn Sie dieses Nachrichtenbaumstrukturfeld in ein anderes Nachrichtenbaumstrukturfeld kopieren, wird das Zielfeld mit der Zeichenfolge 'NULL' ausgefüllt.