Mithilfe der XML-Domänen können Sie Nachrichten syntaktisch analysieren und schreiben, die dem W3C XML-Standard entsprechen.
Unter dem Begriff XML-Domänen werden drei Domänen zusammengefasst, die von WebSphere Message Broker für die Syntaxanalyse von XML-Domänen verwendet werden.
Beim Lesen einer XML-Nachricht erstellt der Parser, der der jeweiligen Domäne zugeordnet ist, auf Basis des Eingabebitstroms eine Nachrichtenbaumstruktur. Dieser Bitstrom muss ein korrekt formatiertes XML-Dokument sein, das den W3C XML-Spezifikationen (Version 1.0 oder 1.1) entspricht.
Beim Schreiben einer Nachricht erstellt der Parser auf Basis der Nachrichtenbaumstruktur einen XML-Bitstrom.
Die Domänen unterscheiden sich in einigen Merkmalen. Welche Domäne sich in welchem Fall eignet, erfahren Sie im Abschnitt Auswahl des geeigneten XML-Parsers.
Auch die MRM-Domäne unterstützt XML-Analyse und -Schreibfunktionen. In welchen Fällen Sie MRM XML statt einem der XML-Parser verwenden können, erfahren Sie im Abschnitt Auswahl des geeigneten XML-Parsers.
Standardmäßig arbeiten die drei XML-Parser programmgesteuert und verwenden während der Laufzeit keinen Nachrichtensatz zum Analysieren und Schreiben. Der XMLNSC-Parser kann allerdings auch als modellgesteuerter Parser eingesetzt werden und anhand von XML-Schemas, die auf Basis einer Nachrichtengruppe generiert wurden, feststellen, ob die XML-Nachrichten korrekt sind.
Bei der Verwendung der XMLNS- oder XML-Parser oder bei Verwendung des XMLNSC-Parsers ohne Nachrichtensatz empfiehlt es sich, einen Nachrichtensatz in WebSphere Message Broker Toolkit zu erstellen; durch diese Maßnahme wird die Entwicklung von Nachrichtenflussanwendungen erleichtert, auch wenn der Nachrichtensatz nicht während der Laufzeit des Brokers implementiert wird.
Auf die Vorteile einer Nachrichtengruppe geht der Abschnitt Wozu Modellnachrichten? näher ein.
Die XML-Parser sind bedarfsgerechte Parser. Der Abschnitt Bedarfsgerechte Syntaxanalyse enthält weitere Informationen hierzu.
Eine einfache XML-Nachricht könnte folgendermaßen aussehen:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE Envelope
PUBLIC "http://www.ibm.com/dtds" "example.dtd"
[<!ENTITY Example_ID "ST_TimeoutNodes Timeout Request Input Test Message">]
>
<Envelope version="1.0">
<Header>
<Example>&Example_ID;</Example>
<!-- Dies ist ein Kommentar -->
</Header>
<Body version="1.0">
<Element01>Value01</Element01>
<Element02/>
<Element03>
<Repeated>ValueA</Repeated>
<Repeated>ValueB</Repeated>
</Element03>
<Element04><P>This is <B>bold</B> text</P></Element04>
</Body>
</Envelope>
In den folgenden Abschnitten wird die Ausgabe gezeigt, die der Trace-Knoten bei der Analyse dieser Beispielnachricht in den XMLNS- und XMLNSC-Parsern generiert. Sie verdeutlichen die Unterschiede bei den internen Strukturen, mit denen die vom Broker verarbeiteten Daten dargestellt werden.
Im folgenden Beispiel befinden sich in der Baumstruktur WhiteSpace-Elemente. Sie stehen für Leerzeichen, Tabulatoren und Zeilenumbrüche, mit denen das ursprüngliche XML-Dokument formatiert wird. Die tatsächlichen Zeichen im Trace wurden zur Verdeutlichung der Darstellung durch 'WhiteSpace' ersetzt. WhiteSpace-Elemente innerhalb eines XML-Elements haben keine geschäftliche Bedeutung und werden durch das Inhalt-Syntaxelement dargestellt. XmlDecl, DTD und Kommentare werden in der XML-Domäne unter Verwendung expliziter Syntaxelemente mit bestimmten Feldtypen dargestellt.
(0x01000010):XMLNS = (
(0x05000018):XML = (
(0x06000011): = '1.0'
(0x06000012): = 'UTF-8'
(0x06000014): = 'no'
)
(0x06000002): = 'WhiteSpace'
(0x05000020):Envelope = (
(0x06000004): = 'http://www.ibm.com/dtds'
(0x06000008): = 'example.dtd'
(0x05000021): = (
(0x05000011):Example_ID = (
(0x06000041): = 'ST_TimeoutNodes Timeout Request Input Test Message'
)
)
)
(0x06000002): = 'WhiteSpace'
(0x01000000):Envelope = (
(0x03000000):version = '1.0'
(0x02000000): = 'WhiteSpace'
(0x01000000):Header = (
(0x02000000): = 'WhiteSpace'
(0x01000000):Example = (
(0x06000020): = 'Example_ID'
(0x02000000): = 'ST_TimeoutNodes Timeout Request Input Test Message'
(0x06000021): = 'Example_ID'
)
(0x02000000): = 'WhiteSpace'
(0x06000018): = ' This is a comment '
(0x02000000): = 'WhiteSpace'
)
(0x02000000): = 'WhiteSpace'
(0x01000000):Body = (
(0x03000000):version = '1.0'
(0x02000000): = 'WhiteSpace'
(0x01000000):Element01 = (
(0x02000000): = 'Value01'
)
(0x02000000): = 'WhiteSpace'
(0x01000000):Element02 =
(0x02000000): = 'WhiteSpace'
(0x01000000):Element03 = (
(0x02000000): = 'WhiteSpace'
(0x01000000):Repeated = (
(0x02000000): = 'ValueA'
)
(0x02000000): = 'WhiteSpace'
(0x01000000):Repeated = (
(0x02000000): = 'ValueB'
)
(0x02000000): = 'WhiteSpace'
)
(0x02000000): = 'WhiteSpace'
(0x01000000):Element04 = (
(0x01000000):P = (
(0x02000000): = 'This is '
(0x01000000):B = (
(0x02000000): = 'bold'
)
(0x02000000): = ' text'
)
)
(0x02000000): = 'WhiteSpace'
)
(0x02000000): = 'WhiteSpace'
)
Im folgenden Trace werden die Elemente gezeigt, die zur Darstellung derselben XML-Struktur im Standardmodus des XMLNSC-Kompaktparsers erstellt werden. In diesem Modus behält der Kompaktparser keine Kommentare, Verarbeitungsanweisungen oder gemischten Text bei.
Das Beispiel verdeutlicht, dass bei der Verwendung des Kompaktparsers eine große Anzahl an Syntaxelementen eingespart werden kann, die zur Darstellung derselben Geschäftsinhalte der XML-Beispielnachricht verwendet werden.
Wenn Sie keinen gemischten Text beibehalten, ist für die WhiteSpace-Elemente ohne Geschäftsdateninhalte in der Nachrichtenbaumstruktur des Brokers während der Ausführung kein Speicherplatz erforderlich. Allerdings wird der gemischte Text in Element04.P ebenfalls verworfen; nur der Wert des untergeordneten Ordners Element04.P.B wird beibehalten; der Text This is und text in P wird verworfen. Dieser XML-Strukturtyp wird Geschäftsdatenformaten normalerweise nicht zugeordnet; deshalb ist in der Regel die Verwendung des XMLNSC-Kompaktparsers vorzuziehen. Wenn jedoch dieser Verarbeitungstyp erforderlich ist, sollten Sie den XMLNSC-Parser nicht verwenden oder nur dann, wenn der Modus Retain mixed text (gemischten Text beibehalten) aktiviert ist.
Auch die Handhabung der XML-Deklaration unterscheidet sich im XMLNSC-Parser. Die Attribute 'version', 'encoding' und 'stand-alone' werden als untergeordnete Elemente von 'XmlDeclaration', nicht als Elemente mit einem bestimmten Feldtyp beibehalten.
(0x01000000):XMLNSC = (
(0x01000400):XmlDeclaration = (
(0x03000100):Version = '1.0'
(0x03000100):Encoding = 'UTF-8'
(0x03000100):StandAlone = 'no'
)
(0x01000000):Envelope = (
(0x03000100):version = '1.0'
(0x01000000):Header = (
(0x03000000):Example = 'ST_TimeoutNodes Timeout Request Input Test Message'
)
(0x01000000):Body = (
(0x03000100):version = '1.0'
(0x03000000):Element01 = 'Value01'
(0x01000000):Element02 =
(0x01000000):Element03 = (
(0x03000000):Repeated = 'ValueA'
(0x03000000):Repeated = 'ValueB'
)
(0x01000000):Element04 = (
(0x01000000):P = (
(0x03000000):B = 'bold'
)
)
)
Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im WebSphere Message Broker Toolkit integrierte Information Center verwendet wird.
Im WebSphere Message Broker Toolkit stehen einige vordefinierte Nachrichtenmodelle bereit, die mit dem Assistenten für die Erstellung neuer Nachrichtendefinitionsdateien aus IBM® eigenen Nachrichten importiert werden können. Weitere Informationen hierzu finden Sie unter Nachrichtengruppen: IBM eigene Nachrichten, die importiert werden können.