XML-Parser und -Domänen

Mit Hilfe der XML-Domänen können Sie Nachrichten erstellen, die dem W3C XML-Standard entsprechen.

Sie können unter Verwendung einer der XML-Domänen (XMLNSC, XMLNS oder XML) Nachrichtenmodelle erstellen, um XML-Nachrichten darzustellen. Informationen dazu finden Sie unter Die XML-Domäne. Nachrichten aus diesen Domänen werden von XML-Parsern verarbeitet.

WebSphere Message Broker verwendet die XML-Parser, um XML-Nachrichten, die zu den XMLNSC-, XMLNS- oder XML-Domänen gehören, zu lesen und zu schreiben, ohne dabei ein Nachrichtenmodell zu verwenden. Beim Lesen einer XML-Nachricht erstellen die XML-Parser auf Basis eines 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 erstellen die XML-Parser auf Basis einer Nachrichtenbaumstruktur einen XML-Bitstrom. Die XML-Parser arbeiten programmgestützt und verwenden während der Ausführung kein Nachrichtenmodell. Es ist aber zu Entwicklungszwecken allgemein üblich, ein Nachrichtenmodell zu erstellen und zu verwenden, da es die Erstellung Ihrer Nachrichtenflussanwendung vereinfachen kann.Informationen dazu finden Sie unter Wozu Modellnachrichten?.

Einzelheiten dazu, wie der XML-Parser Nullelemente handhabt, finden Sie unter Der XML-Parser und Nullwerte.

Die mit WebSphere Message Broker bereitgestellten Informationen enthalten eine Zusammenfassung der XML-Terminologie, -Konzepte und -Nachrichtenkonstrukte, in der wichtige Aspekte bei der Verwendung von XML-Nachrichten in Verbindung mit Brokern und Nachrichtenflüssen hervorgehoben werden. Weitere Informationen zu XML finden Sie auf der Website developerWorks.

Syntaxanalyse einer XML-Beispielnachricht

Die in dieser Beschreibung verwendeten Namenselemente (z. B. XmlDecl) werden von WebSphere Message Broker bereitgestellt und als Korrelationsnamen bezeichnet. Sie sind für die symbolische Nutzung innerhalb von ESQL verfügbar, das die Verarbeitung von Nachrichteninhalten definiert, die von den Knoten (z. B. einem Compute- oder Filterknoten) innerhalb eines Nachrichtenflusses ausgeführt wird. Die Korrelationsnamen sind nicht Teil der XML-Spezifikation. Jeder XML-Parser definiert seine eigene Gruppe von Korrelationsnamen, da die Behandlung des XML-Inhalts unterschiedlich ist.

Die Korrelationsnamen für XML-Namenselemente (z. B. 'Element' und 'XmlDecl') entsprechen einem konstanten Wert der Form 0x01000000. Sie können diese Konstanten, die in der vom Traceknoten erzeugten Ausgabe verwendet werden, sehen, wenn für eine Nachricht oder einen Teil der Nachricht ein Trace ausgeführt wird.

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 des Traceknotens gezeigt, die bei der Syntaxanalyse der oben genannten Nachricht in den XML- und XMLNSC-Parsern erstellt wurde. Damit werden die Unterschiede in den internen Strukturen veranschaulicht, die zur Darstellung der Daten bei der Verarbeitung durch den Broker verwendet werden.

Syntaxanalyse einer XML-Beispielnachricht in der XML-Domäne

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. Leerzeichen 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 mithilfe von ausdrücklichen Syntaxelementen mit Korrelationsnamen dargestellt.

(0x01000010):XML        = (
    (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'
    )

Syntaxanalyse einer XML-Beispielnachricht in der XMLNSC-Domäne

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 müssen, ist für die WhiteSpace-Elemente ohne Geschäftsdateninhalte in der Nachrichtenbaumstruktur des Brokers während der Ausführung kein Speicherplatz erforderlich. Allerdings wird auch der gemischte Text in Element04.P gelöscht, und nur der Wert des untergeordneten Ordners Element04.P.B wird in der Baumstruktur zurückbehalten. Der Text "This is " und "text" in P wird gelöscht. Dieser XML-Strukturtyp wird Geschäftsdatenformaten normalerweise nicht zugeordnet; deshalb ist in der Regel die Verwendung des XMLNSC-Kompaktparsers vorzuziehen. Falls jedoch dieser Verarbeitungstyp erforderlich ist, sollten Sie den XMLNSC-Parser nicht verwenden oder nur dann, wenn der Modus für die Beibehaltung von gemischtem Text aktiviert ist.

Auch die Handhabung der XML-Deklaration unterscheidet sich im Kompaktparser, wenn die Attribute 'Version', 'Encoding' und 'Standalone' als untergeordnete Elemente der XML-Deklaration und nicht als spezielle Elemente mit Korrelationsnamen gespeichert werden.

(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'
          )
        )
   )
Die meisten der Beispiele in der Beispielgalerie verwenden den XMLNSC-Parser zum Verarbeiten von Nachrichten. Insbesondere in den folgenden Beispielen werden Nachrichten mit dem XMLNSC-Parser verarbeitet: Sie können Beispiele nur anzeigen, wenn Sie das Information Center verwenden, das im Message Brokers Toolkit integriert ist.
Zugehörige Verweise
Integrierte Knoten
XML-Konstrukte
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

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

ac00600_