Der XMLNSC-Parser ist ein kompakter Parser; deshalb wird ein Element mit einzelnem Inhalt als Einzelsyntaxelement analysiert. Enthält ein Element sowohl untergeordnete Elemente als auch Text, wird dieser Text als gemischter Inhalt bezeichnet:
<simpleElement>simpleValue</simpleElement>
SET val = FIELDVALUE(InputRoot.XMLNSC.(XMLNSC.Field)simpleElement);
So wird ein Element mit einfachem Inhalt in der Ausgabe erstellt: SET OutputRoot.XMLNSC.(PCDataField)simpleElement VALUE = "simpleValue";
Für die Abfrage der Nachrichtenbaumstruktur wurde "XMLNSC.Field" verwendet, bei der Erstellung der Ausgabenachricht jedoch "XMLNSC.PCDataField" angegeben. Für die Abfrage der Nachrichtenbaumstruktur hätte auch "XMLNSC.PCDataField" verwendet werden können, was jedoch, wie das folgende Beispiel zeigt, nicht funktioniert hätte, wäre in der Eingabenachricht ein CData-Bereich enthalten: <simpleElement><![CDATA[simpleValue]]></simpleElement>
<element>mixed1<child>simpleValue</child>mixed2</element>
Gemischter Inhalt wird standardmäßig verworfen, da er normalerweise nur zur Formatierung von Leerzeichen dient und keine Nutzdaten enthält. Gemischter Inhalt kann jedoch beibehalten werden, wenn auf der Seite "Parser-Optionen" der Knoteneigenschaften das Kontrollkästchen Gemischten Inhalt beibehalten aktiviert wird.Wenn gemischter Inhalt beibehalten wird, erstellt der XMLNSC-Parser für jedes einzelne Element des gemischten Inhalts das untergeordnete Element "Value".
SET mixed1 = FIELDVALUE(InputRoot.XMLNSC.(element).*[1];
Der ESQL-Code für die Erstellung des oben aufgeführten XML-Fragments sieht wie folgt aus: CREATE ref REFERENCE TO OutputRoot.XMLNSC.element;
CREATE FIRSTCHILD OF ref TYPE XMLNSC.PCDataValue VALUE 'mixed1';
CREATE LASTCHILD OF ref NAME 'child' TYPE XMLNSC.PCDataField VALUE 'simpleValue';
CREATE LASTSTCHILD OF ref TYPE XMLNSC.PCDataValue VALUE 'mixed2';
Mit dem folgenden ESQL-Code wird die Option Gemischten Inhalt beibehalten aktiviert:
DECLARE X BLOB;
-- Es wird vorausgesetzt, dass X ein XML-Dokument enthält
CREATE LASTCHILD OF OutputRoot
PARSE(X OPTIONS XMLNSC.MixedContentRetainAll);
Ein CData-Bereich ist eine XML-Notation, mit der XML-Markup-Zeichen in den Inhalt eines Elements eingefügt werden können.
<simpleElement>simpleValue</simpleElement>
<simpleElement><![CDATA[simpleValue]]></simpleElement>
Ist der CData-Bereich der einzige Textinhalt, merkt sich der XMLNSC-Parser, dass das Eingabedokument einen CData-Bereich enthält, indem er den Feldtyp nicht auf 'XMLNSC.PCDataField', sondern auf 'XMLNSC.CDataField' setzt. Ist der CData-Bereich nicht der einzige Textinhalt, wird er als untergeordnetes Value-Element mit weiteren untergeordneten Value-Elementen erstellt, die den übrigen Textinhalt darstellen. Hierfür ein Beispiel:
<simpleElement><![CDATA[CDataValue]]>normalText</simpleElement>
Weitere Informationen zur korrekten Verwendung von CData-Bereichen in XML-Dokumenten finden Sie im Abschnitt XMLNSC: Mit CData arbeiten.