Nachrichten in der XMLNSC-Domäne bearbeiten

Die XMLNSC-Domäne ist eine Erweiterung der XMLNS-Domäne, die ihrerseits eine Erweiterung der XML-Domäne ist.

Bei der XMLNS-Domäne kam die Unterstützung von Namespaces hinzu. Die XMLNSC-Domäne baut auf einer kompakteren Baumstruktur auf und benötigt deshalb bei der Handhabung umfangreicher Nachrichten weniger Speicher. Sie können weiterhin die XMLNS-Domäne für bereits bestehende Anwendungen verwenden und die erhöhte Speicherleistung der XMLNSC-Domäne für neue Anwendungen nutzen.

Nachrichtenbaumstruktur

Der XMLNSC-Parser erhält seine kompaktere Baumstruktur durch die Verwendung eines einzelnen Elements des Typs 'Name-Wert' zur Darstellung von codiertem Text. Dies steht im Gegensatz zu den separaten Namens- und Wertelementen, die von den XML- und XMLNS-Parsern verwendet werden. Beachten Sie folgende Nachricht:
    <Folder1>
        <Folder2 Attribute1='AttributeValue1'>
            <Field1>Value1</Field1>
            <Field2 Attribute2='AttributeValue2'>Value2</Field2>  
        </Folder2> 
    </Folder1>

In der XMLNSC-Domäne wird codierter Text durch zwei Namenselemente (Folder1 und Folder2) und vier Elemente des Typs 'Name-Wert' dargestellt (Attribute1, Field1, Field2 und Attribute2).

Im Unterschied dazu werden die beiden Feldern (Field1 und Field2) in den Domänen XML und XMLNS jeweils durch ein Namenselement mit einem untergeordneten Wertelement dargestellt. Dieser Unterschied mag geringfügig erscheinen, Nachrichten verfügen aber oft über viele solcher Leaf-Elemente. Beispiel:
    <Folder1>
        <Folder2>
            <Field1>Value1</Field1>
            <Field2>Value2</Field2>
            ....
            <Field100>Value100</Field100>
        </Folder2> 
    </Folder1>

In diesem Beispiel stellt der XMLNSC-Parser die Nachricht durch zwei Namenselemente und 100 Elemente des Typs 'Name-Wert' dar, während der XML- und XMLNS-Parser 102 Namens- und 100 Wertelemente sowie weitere 103 Wertelemente zur Darstellung des in formatierten Nachrichten implizit enthaltenen Leerzeichens verwenden.

Die XML- und XMLNS-Domänen erstellen Elemente des Typs 'Name-Wert' für die Leerzeichen-Formatierungszeichen zwischen dem Schließen und Öffnen jedes einzelnen Ordners oder Feldes. Diese Leerzeichenelemente enthalten einen leeren Namen und einen Wert für das Leerzeichen, den Tabulator, den Zeilenvorschub oder andere Zeichen, die zur Formatierung des XML-Dokuments verwendet werden. Diese Elemente haben keinen Nutzwert und können deshalb gelöscht werden, um die Komprimierung zu verbessern. Aus demselben Grund werden standardmäßig alle XML-Verarbeitungsanweisungen und -Kommentare im Eingabedatenstrom gelöscht und in der kompakten Domänenstruktur keine Elemente erstellt.

Attribute und codierter Text

Attribute und codierter Text werden durch Elemente des Typs 'Name-Wert' dargestellt und unterscheiden sich deshalb durch die Verwendung der Elementtypen. Wenn Sie keinen Typ angeben, wird von einem codierten Text ausgegangen. Daher könnte die erste der zuvor gezeigten Beispielnachrichten durch folgende ESQL-Anweisungen erzeugt worden sein:
    SET Origin.Folder1.Folder2.(XMLNSC.Attribute)Attribute1 = 
       'AttributeValue1';
    SET Origin.Folder1.Folder2.Field1 = 'Value1';
    SET Origin.Folder1.Folder2.(XMLNSC.Attribute)Attribute2 = 
       'AttributeValue2';
    SET Origin.Folder1.Folder2.Field2 = 'Value2';

Dieser ESQL-Code scheint zwar nahezu identisch mit dem Code, der beim XML-Parser verwendet wird, die Typkonstanten gehören jedoch zum XMLNSC-Parser. Die Verwendung von Konstanten, die zu anderen Parsern (z. B. XML) gehören, führt zu unerwarteten Ergebnissen, da ähnlich benannte Konstanten (z. B. XML.Attribute) andere Werte aufweisen.

Die folgenden Konstanten werden in der XMLNSC-Domäne zum Erstellen von Attributen definiert:
XMLNSC.Attribute
XMLNSC.SingleAttribute
XMLNSC.DoubleAttribute
Betrachten Sie die folgende XML-Eingabenachricht:
    <Folder1 Item='ValueA'>
        <Item>Value1</Item>
    </Folder1>
Damit der Name Item, der in Folder1 sowohl als Attributname als auch als Feldname verwendet wird, nicht mehr mehrdeutig ist, kann folgender ESQL-Code verwendet werden:
    SET ItemAttributeValueHolder = InputRoot.XMLNSC.Folder1.(XMLNSC.Attribute)Item;
    SET ItemFieldValueHolder = InputRoot.XMLNSC.Folder1.(XMLNSC.Field)Item;

Diese Methode ist besser geeignet als die Verwendung einer Feldgruppenindexauswahl mit Folder1, weil es nicht wichtig ist, ob das Attribut im Eingabedatenstrom vorhanden ist.

Handhabung von gemischtem Text

Gemischter Text wird standardmäßig gelöscht, da er normalerweise nur zur Formatierung von Leerzeichen dient und keine geschäftlichen Daten enthält. Es wird jedoch ein Modus bereitgestellt, in dem während der Syntaxanalyse jeglicher Text, der sich nicht zwischen einem DTL-Anfangs- und Endbefehl befindet (d. h. open->open, close->close und close->open), durch ein einzelnes nicht benanntes Wertelement dargestellt wird. Als Wertelementtypen werden PCDATA, CDATA und hybrid, eine Mischform der beiden ersten, unterstützt.

Bezüglich des Abrufs und der Festlegung von Werten gibt es kein spezielles Verhalten des Syntaxelements. Sie können aus dem ESQL-Code nur auf Wertelemente zugreifen, indem Sie diese explizit aufrufen. Hierfür wurden die folgenden zusätzlichen Konstanten bereitgestellt:
   XMLNSC.Value
   XMLNSC.PCDataValue
   XMLNSC.CDataValue
   XMLNSC.HybridValue
Der Modus wird durch die Eigenschaft Gemischten Inhalt beibehalten auf der Registerkarte 'Parser-Optionen' in der Ansicht 'Eigenschaften' auf allen Nachrichtensyntaxanalyseknoten gesteuert, z. B. dem MQInput-Knoten. Zur programmgestützten Steuerung mithilfe von Nachrichtenoptionen werden folgende Konstanten bereitgestellt:
   XMLNSC.MixedContentRetainNone = 0x0000000000000000
   XMLNSC.MixedContentRetainAll  = 0x0001000000000000
Sie können diese Konstanten in den Option-Klauseln der ESQL-CREATE-Anweisung (PARSE-Abschnitt) als auch der ASBITSTREAM-Funktion verwenden. Beispiel:
   DECLARE X BLOB ASBITSTREAM(InputRoot.XMLNSC.Data OPTIONS 
   XMLNSC.MixedContentRetainAll);
   ...
   CREATE LASTCHILD OF OutputRoot PARSE(X OPTIONS 
   XMLNSC.MixedContentRetainNone);

Handhabung von Kommentaren

Kommentare werden standardmäßig gelöscht, da es sich dabei um Zusatzinformationen ohne besondere Bedeutung handelt. Es wird jedoch ein Modus bereitgestellt, bei dem während der Syntaxanalyse alle Kommentare im Dokument (mit Ausnahme der Kommentare in der Dokumentbeschreibung selbst) durch ein Element des Typs 'Name-Wert' mit dem Namen Comment (Kommentar) dargestellt werden. Hierfür wurden folgende zusätzlichen Konstanten bereitgestellt:
   XMLNSC.Comment
Der Modus wird durch Festlegung der Eigenschaft Kommentare beibehalten auf der Registerkarte 'Parser-Optionen' in der Ansicht 'Eigenschaften' auf allen Nachrichtensyntaxanalyseknoten, z. B. dem MQInput-Knoten, gesteuert. Zur programmgestützten Steuerung mithilfe von Nachrichtenoptionen werden folgende Konstanten bereitgestellt:
   XMLNSC.CommentsRetainNone = 0x0000000000000000
   XMLNSC.CommentsRetainAll  = 0x0002000000000000
Beispiel:
   DECLARE X BLOB ASBITSTREAM(InputRoot.XMLNSC.Data OPTIONS 
   XMLNSC.CommentsRetainAll);
   ...
   CREATE LASTCHILD OF OutputRoot PARSE(X OPTIONS XMLNSC.CommentsRetainNone);

Handhabung von Verarbeitungsanweisungen

Verarbeitungsanweisungen werden standardmäßig gelöscht, da es sich dabei um Zusatzinformationen ohne besondere Bedeutung handelt. Es wird jedoch ein Modus bereitgestellt, bei dem während der Syntaxanalyse alle Verarbeitungsanweisungen im Dokument (mit Ausnahme der Verarbeitungsanweisungen in der Dokumentbeschreibung selbst) durch ein Element des Typs 'Name-Wert' mit dem entsprechenden Namen und Wert dargestellt werden. Hierfür wurden folgende zusätzlichen Konstanten bereitgestellt:
    XMLNSC.ProcessingInstruction
Der Modus wird durch die Eigenschaft Verarbeitungsanweisungen beibehalten auf der Registerkarte 'Parser-Optionen' der Ansicht 'Eigenschaften' auf allen Nachrichtensyntaxanalyseknoten, z. B. dem MQInput-Knoten, gesteuert. Zur programmgestützten Steuerung mithilfe von Nachrichtenoptionen werden folgende Konstanten bereitgestellt:
    XMLNSC.ProcessingInstructionsRetainNone = 0x0000000000000000
    XMLNSC.ProcessingInstructionsRetainAll  = 0x0004000000000000
Beispiel:
    DECLARE X BLOB ASBITSTREAM(InputRoot.XMLNSC.Data 
    OPTIONS XMLNSC.ProcessingInstructionsRetainAll);
    ...
    CREATE LASTCHILD OF OutputRoot PARSE(X OPTIONS 
    XMLNSC.ProcessingInstructionsRetainNone);

Vorhandenen Nachrichtenfluss in die XMLNSC-Domäne migrieren

Um die XMLNSC-Domäne und den Parser zu verwenden, müssen Sie Ihren ESQL-Code ändern, so dass XMLNSC in den Pfaden verwendet wird. Betrachten Sie folgende ESQL-Anweisungen:
SET OutputRoot.XML.Person.Salary    = CAST(InputRoot.XML.Person.Salary AS INTEGER) * 3;
SET OutputRoot.XMLNS.Person.Salary  = CAST(InputRoot.XMLNS.Person.Salary AS INTEGER) * 3;
SET OutputRoot.XMLNSC.Person.Salary = CAST(InputRoot.XMLNSC.Person.Salary AS INTEGER) * 3;
In allen Fällen hat der XML-Bitstrom, der in der Empfangswarteschlange erwartet und in die Ausgabewarteschlange geschrieben wird, folgendes Format:
    <Person><Salary>42</Salary></Person>

Die drei ESQL-Beispiele unterscheiden sich darin, dass sie für diese Elemente verschiedene Parser verwenden. Der zuständige Parser kann entweder durch die eingehende Nachricht (mit einem MQRFH2-Header mit einem <mcd>-Ordner, der die Nachrichtengruppendomäne angibt) oder durch die Nachrichtengruppendomäne, die in den Eigenschaften für 'Syntaxanalyse der Eingabenachricht' des Empfangsknotens des Nachrichtenflusses definiert ist, festgelegt werden. Wenn beide Domänendefinitionen vorhanden sind, hat der Wert für die Nachrichtengruppendomäne im <mcd>-Ordner des MQRFH2-Headers Vorrang.

Um eine Migration auf die XMLNSC-Domäne durchzuführen, muss bei Verwendung von MQRFH2-Headern der neue Domänenname zum Feld <Msd> des <mcd>-Ordners hinzugefügt werden. Der neue Domänenname wird im MQRFH2-Header der abgehenden Nachricht angezeigt. Um externe Anwendungen vor diesen Änderungen zu schützen, geben Sie die Eigenschaft XMLNSC-Kompaktparser für XMLNS-Domäne verwenden auf dem Empfangsknoten des Nachrichtenflusses und dem Compute- oder Mapping-Knoten an. Wenn diese Eigenschaften festgelegt sind, bleiben die Eingabe- und Ausgabenachricht unverändert, und als Wert für das Feld <Msd> kann XMLNS stehen bleiben. Der Nachrichtenfluss verwendet jetzt den Kompaktparser, und die ESQL-Pfade werden mit XMLNSC codiert.

Wenn die eingehenden Nachrichten keine MQRFH2-Header enthalten und die Nachrichtendomäneneigenschaft des Empfangsknotens für die Angabe der Domäne verwendet wird, können Sie eine Migration auf die XMLNSC-Domäne durchführen, indem Sie die Domäneneigenschaft des Empfangsknotens des Nachrichtenflusses direkt auf XMLNSC setzen, oder Sie lassen den Wert XMLNS stehen, und legen die Eigenschaft XMLNSC-Kompaktparser für XMLNS-Domäne verwenden fest. Bei beiden Einstellungen wird der Kompaktparser im Nachrichtenfluss verwendet, und die ESQL-Pfade müssen mit XMLNSC codiert werden.

Wenn die abgehenden Nachrichten keine MQRFH2-Header enthalten, wird die Domäne in den Ausgabenachrichten nirgends angezeigt und die Festlegung der Eigenschaft XMLNSC-Kompaktparser für XMLNS-Domäne verwenden des Compute-Knotens hat keine Auswirkungen.

XML-Header erstellen

Der folgende ESQL-Code ist in der XML-Domäne gültig:
SET OutputRoot.XML.(XML.XmlDecl)*.(XML.Version)* = '1.0';
Ändern Sie zum Migrieren auf XMLNS das Stammelement:
SET OutputRoot.XMLNS.(XML.XmlDecl)*.(XML.Version)* = '1.0';

Auch wenn der XMLNS-Parser verwendet wird, gehören die Elementtypkonstanten zum XML-Parser. Dieser Code funktioniert, weil die vom XML- und XMLNS-Parser verwendeten Typwerte identisch sind. Beim XMLNSC-Parser sind die Typwerte jedoch anders, weshalb immer dessen eigene Typkonstanten verwendet werden müssen.

In der XMLNSC-Domäne gibt es keinen besonderen Typ für die XML-Version; sie wird ein Attribut der XML-Deklaration behandelt. Die funktional entsprechende Syntax für das vorhergehende Beispiel lautet wie folgt:
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Version = '1.0';
Auf ähnliche Weise werden in der XMLNSC-Domäne der XML-Codierungstyp und der XML-Standalone-Modus ebenfalls als Attribute der XML-Deklaration verarbeitet und können mit folgendem ESQL-Code definiert werden:
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)Encoding = 'UTF-8';
SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.(XMLNSC.Attribute)StandAlone = 'Yes';
Um dieselbe Ausgabe von einem JavaCompute-Knoten aus zu generieren, verwenden Sie beispielsweise folgenden Code:
//Rootknoten der XML-Domäne erstellen
MBElement xmlRoot = root.createElementAsLastChild(MbXMLNSC.PARSER_NAME);

//Übergeordneten Knoten der XML-Deklaration erstellen
MbElement xmlDecl = xmlRoot.createElementAsFirstChild(MbXMLNSC.XML_DECLARATION);

xmlDecl.setName("XmlDeclaration");

MbElement version = xmlDecl.CreateElementAsFirstChild(MbXMLNSC.ATTRIBUTE, "Version", "1.0");
MbElement encoding = xmlDecl.CreateElementAsFirstChild(MbXMLNSC.ATTRIBUTE, "Encoding", "utf-8");

//Nachrichtenhauptteil erstellen
Mit diesem Code wird folgende Zeile in der Ausgabenachricht generiert:
<?xml version="1.0" encoding="utf_8"?>

Nachrichtenbaumstrukturen kopieren

Beim Kopieren von Baumstrukturen betrachtet der Broker XML und XMLNSC als ungleiche Parser. Dies bedeutet, dass alle Attribute in der Quellenbaumstruktur Elementen in der Zielbaumstruktur zugeordnet werden. Diese Situation entsteht nur, wenn Sie beide Parser in demselben Fluss verwenden, einen für die Eingabe, den anderen für die Ausgabe. Verwenden Sie in solchen Fällen für beide Nachrichtenflüsse den Kompaktparser.

Wenn für den Eingabe- und Ausgabenachrichtenfluss verschiedene Parser verwendet werden müssen, kann die explizite Angabe der Elementtypen in den Pfaden oder die Verwendung der FIELDVALUE-Funktion erforderlich sein, um statt untergeordneter Baumstrukturen eine Kopie von Skalarwerten sicherzustellen.

Halten Sie sich an die Richtlinien für XML-Nachrichten, die im Abschnitt Nachrichten in der XML-Domäne bearbeiten genannt werden, sowie an die Informationen im Abschnitt Inhalt des Hauptteils einer Nachricht bearbeiten.

Mit Hilfe von Korrelationsnamen auf Syntaxelemente in der XMLNSC-Domäne zugreifen

Die folgende Tabelle enthält die Korrelationsnamen der einzelnen XML-Syntaxelemente. Verwenden Sie bei der Arbeit in der XMLNSC-Domäne diese Namen, um auf die Elemente in Eingabenachrichten zu verweisen und Elemente, Attribute und Werte in Ausgabenachrichten festzulegen.
Syntaxelement Korrelationsname Konstanter Wert
Ordner XMLNSC.Folder 0x01000000
Dokumenttyp 1 XMLNSC.DocumentType 0x01000300
XML-Deklaration 2 XMLNSC.XmlDeclaration 0x01000400
     
Feld- oder Attributwert 3 XMLNSC.Value 0x02000000
PCData-Wert XMLNSC.PCDataValue 0x02000000
CData-Wert XMLNSC.CDataValue 0x02000001
Hybridwert XMLNSC.HybridValue 0x02000002
     
Entitätsverweis XMLNSC.EntityReference 0x02000100
     
Feld 3 XMLNSC.Field 0x03000000
PCData XMLNSC.PCDataField 0x03000000
CData XMLNSC.CDataField 0x03000001
Hybrid XMLNSC.HybridField 0x03000002
     
Attribut 3 XMLNSC.Attribute 0x03000100
Einfaches Anführungszeichen XMLNSC.SingleAttribute 0x03000101
Doppeltes Anführungszeichen XMLNSC.DoubleAttribute 0x03000100
     
Namespacedeklaration XMLNSC.NamespaceDecl 0x03000102
Einfaches Anführungszeichen XMLNSC.SingleNamespaceDecl 0x03000103
Doppeltes Anführungszeichen XMLNSC.DoubleNamespaceDecl 0x03000102
     
Bitstromdaten XMLNSC.BitStream 0x03000200
     
Einheitendefinition 1 3 XMLNSC.EntityDefinition 0x03000300
Einfaches Anführungszeichen XMLNSC.SingleEntityDefinition 0x03000301
Doppeltes Anführungszeichen XMLNSC.DoubleEntityDefinition 0x03000300
     
Kommentar XMLNSC.Comment 0x03000400
     
Verarbeitungsanweisung XMLNSC.ProcessingInstruction 0x03000401
Hinweise:
  1. Dokumenttyp wird nur für Entitätsdefinitionen verwendet, z. B.:
    SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)BodyDocument.(XMLNSC.EntityDefinition)TestDef =
     		          'Compact Tree Parser XML Test Module Version 1.0';
  2. Bei der XML-Deklaration handelt es sich um einen speziellen Ordnertyp, der untergeordnete Elemente für die Version und so weiter enthält, z. B:
    -- XML-Deklaration erstellen 		
    SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.Version = 1.0;
    SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.Encoding = 'UTF8';
    SET OutputRoot.XMLNSC.(XMLNSC.XmlDeclaration)*.Standalone = 'yes';
  3. Diese Korrelationswerte stellen mehrere mögliche Entitätstypen dar und sollten nicht für bestimmte Prüfungen in einer FIELDTYPE(...) -Anweisung verwendet werden. Beispiel: IF FIELDTYPE(...) = XMLNSC.Attribute THEN ... würde nie passen, da es sich bei dem Element um XMLNSC.SingleAttribute oder XMLNSC.DoubleAttribute handelt.

EntityDefinition und EntityReference mit dem XMLNSC-Parser verwenden

An zwei Beispielen wird die Verwendung von 'EntityDefinition' und 'EntityReference' mit dem XMLNSC-Parser mithilfe von ESQL-Code veranschaulicht. In beiden Beispielen wird dieselbe Eingabenachricht verwendet:
<BookInfo dtn="BookInfo" edn="author" edv="A.N.Other">
<Identifier>ES39B103T6</Identifier>
</BookInfo>
Das erste Beispiel zeigt die Verwendung von 'EntityDefinition' und 'EntityReference' mit dem XMLNSC-Parser. Durch das Beispiel wird folgende Ausgabenachricht generiert:
<!DOCTYPE BookInfo [<!ENTITY author "A.N.Other">]>
<BookInfo><Identifier>ES39B103T7</Identifier><entref>&author;</entref></BookInfo>
Im folgenden ESQL-Code wird XMLNSC.EntityDefinition verwendet, um die fest codierte Entität 'author' mit dem Wert A.N.Other, der aus edv in der Eingabenachricht stammt, zu definieren. XMLNSC.EntityReference wird verwendet, um einen Verweis auf die Entität 'author' im XML-Nachrichtenhauptteil zu erstellen.
SET OutputRoot.MQMD = InputRoot.MQMD;
DECLARE cursor REFERENCE TO InputRoot.XMLNSC.BookInfo;
SET OutputRoot.XMLNSC.BookInfo.Identifier = cursor.Identifier;
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)* NAME = cursor.dtn;
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)*.(XMLNSC.EntityDefinition)* NAME = 'author';
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)*.(XMLNSC.EntityDefinition)author VALUE = cursor.edv;
SET OutputRoot.XMLNSC.(XMLNSC.BookInfo).entref.(XMLNSC.EntityReference)* = 'author';
Die Variable cursor zeigt auf die folgenden Variablen:
  • Dokumenttypname dtn
  • Entitätsdefinitionswert edv
  • Wert für Identifier
Die Werte für diese Variablen stammen aus der Eingabenachricht.

Das zweite Beispiel veranschaulicht die Erstellung einer Ausgabenachricht, die eine Entitätsdefinition und einen Verweis auf diese Entität enthält, wobei beides auf dem Inhalt derselben Eingabenachricht basiert.

Durch das Beispiel wird folgende Ausgabenachricht mit der Entitätsdefinition author und einem Verweis auf die Entität im XML-Nachrichtenhauptteil generiert:
<!DOCTYPE BookInfo [<!ENTITY author "Book 1">]>
<BookInfo Identifier="ES39B103T6">&author;</BookInfo>
Im folgenden ESQL-Code werden 'EntityDefinition' und 'EntityReference' mit dem XMLNSC-Parser zum Generieren der vorhergehenden Ausgabenachricht verwendet:
SET OutputRoot.MQMD = InputRoot.MQMD;
DECLARE cursor REFERENCE TO InputRoot.XMLNSC.BookInfo;
CREATE FIELD OutputRoot.XMLNSC.BookInfo;
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)* NAME = cursor.dtn;
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)*.(XMLNSC.EntityDefinition)* NAME = cursor.edn;
SET OutputRoot.XMLNSC.(XMLNSC.DocumentType)*.(XMLNSC.EntityDefinition)* VALUE = 'Book 1';
SET OutputRoot.XMLNSC.(XMLNSC.Folder)*[<].(XMLNSC.EntityReference)* = cursor.edn;
SET OutputRoot.XMLNSC.Identifier.(XMLNSC.DoubleAttribute)Identifier = cursor.Identifier;
XMLNSC.EntityDefinition wird für die Definition der Entität author mit dem Wert Book 1 verwendet. Anschließend wird in der Nachricht mit XMLNSC.EntityReference ein Verweis auf die Entität 'author' erstellt. Die Variable cursor zeigt auf die folgenden Variablen:
  • Dokumenttypname dtn
  • Entitätsdefinitionswert edv
  • Wert für Identifier
Diese Variablen stammen alle aus der Eingabenachricht. Mit dem Code XMLNSC.DoubleAttribute werden normale Anführungszeichen zu Identifier hinzugefügt, und mit dem Code XMLNSC.SingleAttribute werden einfache Anführungszeichen zu Identifier hinzugefügt.

Modi für XMLNSC-Parser

Standardmäßig löscht der XMLNSC-Parser Dokumentelemente, die normalerweise keine geschäftliche Bedeutung haben. Es sind jedoch Parsermodi verfügbar, die die Sicherung dieser Elemente erzwingen. Sie können diese Modi auf den Eigenschaften des Knotens konfigurieren, der angibt, dass die Nachricht in der XMLNSC-Domäne analysiert wird.

Für den XMLNSC-Parser sind folgende Parsermodi gültig:
XMLNSC.MixedContentRetainNone
XMLNSC.MixedContentRetainAll
XMLNSC.CommentsRetainNone
XMLNSC.CommentsRetainAll
XMLNSC.ProcessingInstructionsRetainNone
XMLNSC.ProcessingInstructionsRetainAll
Im folgenden Beispiel werden die Modi XMLNSC.ProcessingInstructionsRetainAll und XMLNSC.ProcessingInstructionsRetainNone verwendet, um die Anweisungen zur Dokumentverarbeitung bei der Syntaxanalyse zu erhalten:
DECLARE X BLOB ASBITSTREAM(InputRoot.XMLNSC.Data OPTIONS XMLNSC.ProcessingInstructionsRetainAll);
...     
CREATE LASTCHILD OF outputRoot PARSE(X OPTIONS XMLNSC.ProcessingInstructionsRetainNone);
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
XML-Parser und -Domänen
Übersicht zu ESQL
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
Nachrichten in der XML-Domäne bearbeiten
Zugehörige Verweise
ESQL-Referenz
SET-Anweisung
FIELDVALUE-Funktion
ASBITSTREAM-Funktion
CREATE-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:28:28

ac26040_