Namensbereiche im Nachrichtenmodell

Namespaces bieten eine Methode zum Qualifizieren von Objektnamen.

Für XML-Instanzdokumente und XML-Schemas können Namespaces verwendet werden.

Ein einzelnes XML-Instanzdokument kann Elemente und Attribute enthalten, die für mehrere Anwendungen definiert sind und von mehreren Anwendungen verwendet werden können. Möglicherweise müssen zwei unterschiedliche Elemente oder Attribute innerhalb desselben Dokuments denselben Namen haben. Einzelne Anwendungen müssen in der Lage sein, die Elemente und Attribute, die sie verarbeiten sollen, zu erkennen. In solchen Situationen können die Definitionen voneinander unterschieden werden, indem jedes Element durch einen anderen Namespace qualifiziert wird. Dadurch werden Probleme durch Namenskollisionen und fehlerhafte Erkennung vermieden.

Für XML-Schemas kann ein Ziel-Namespace definiert werden. In einem XML-Schema definierte globale Elemente, Attribute, Gruppen und Typen werden durch den Zielnamespace (falls definiert) qualifiziert. Optional können auch lokale Elemente und Attribute durch den Zielnamespace qualifiziert werden. Namespaces unterstützen daher die Entwicklung einer Bibliothek aus XML-Schemas, die unabhängig voneinander entwickelt werden können. Wenn der Name des Namespace für ein XML-Schema eindeutig ist, müssen Sie keine Namenskonflikte mit Objekten befürchten, die in anderen XML-Schemas definiert sind.

Der Geltungsbereich eines Namespaces geht über den des enthaltenen Dokuments hinaus und wird durch einen Uniform-Resource-Identifier (URI) identifiziert. Damit er seine Aufgabe erfüllen kann, muss der URI eindeutig sein. Möglicherweise sind Sie mit dem Konzept des Universal-Resource-Locator (URL) besser vertraut. URIs haben oft dieselbe Syntax wie URLs, die URI-Definition ist allerdings breiter angelegt als die Spezifikation einer URL. Beispiel für einen URI: http://mycompany.com/xml_schema

Ein Namespacepräfix wird als Kurzform für den vollen URI-Namen deklariert und dazu verwendet, alle Elemente, die zum betreffenden Namespace gehören, zu qualifizieren. Das Präfix, das einen Namespace in einem XML-Instanzdokument oder XML-Schema ersetzen soll, wird über ein xmlns-Attribut spezifiziert. Mithilfe des xmlns-Attributs kann auch ein StandardNamespace definiert werden. In diesem Fall wird jedes Element oder Attribut ohne ein Präfix mit dem Standardnamespace qualifiziert. Ist kein Standardnamespace definiert, werden Elemente oder Attribute ohne Präfix nicht durch einen Namespace qualifiziert.

Das Nachrichtenmodell
Das Nachrichtenmodell bietet die Möglichkeit, Namespaces innerhalb von Nachrichtengruppen zu unterstützen. Sie können jedoch entscheiden, ob für Ihre Nachrichtengruppe Namespaces aktiviert oder inaktiviert werden. Falls Sie Namespaces beim Erstellen einer Nachrichtengruppe inaktivieren, können Sie diese auch zu einem späteren Zeitpunkt aktivieren. Nachdem Sie Namespaces für eine Nachrichtengruppe aktiviert haben, können Sie diese jedoch nicht mehr inaktivieren.

Eine einzelne Nachrichtengruppe, für die Namespaces aktiviert sind, kann mehrere unterschiedliche Namespaces enthalten. Jeder Namespace wird durch eine andere Nachrichtendefinitionsdatei dargestellt. Beim Erstellen einer Nachrichtendefinitionsdatei können Sie auswählen, ob ihr ein Namespace zugeordnet werden soll oder ob sie zum Namespace notarget gehören soll. Wenn Sie einer Nachrichtendefinitionsdatei einen Namespace zuordnen, müssen Sie auch ein Präfix auswählen.

Wenn der Nachrichtendefinitionsdatei ein Namespace zugeordnet ist, werden die folgenden globalen Objekte mit dem Namespace qualifiziert:

  • Elemente
  • Attribute
  • Einfache Typen
  • Komplexe Typen
  • Gruppen
  • Attributgruppen

Optional können lokale Elemente und Attribute mit dem Namespace qualifiziert werden.

Die in einer Nachrichtendefinitionsdatei definierten Objekte können auf Objekte in anderen Nachrichtendefinitionsdateien innerhalb derselben Nachrichtengruppe verweisen. Dazu importieren oder fügen Sie eine Nachrichtendefinitionsdatei in eine andere Nachrichtendefinitionsdatei ein.

Nachrichtenanalyse und Nachrichtenflüsse
WebSphere Message Broker-Parser, die Namespaces unterstützen, erkennen in den analysierten XML-Nachrichten Namen mit Präfixen und ordnen diese intern dem richtigen Namespace zu. Elemente und Attribute können entweder mit einem Namespace qualifiziert oder nicht qualifiziert sein, so wie im Abschnitt über das Nachrichtenmodell erläutert.

Wenn Sie in der MRM-Domäne das XML-Format verwenden, werden Elemente oder Attribute auf Basis des Namespace im Dictionary zugeordnet, wenn die analysierte Nachricht mit dem aus dem Nachrichtenmodell generierten Dictionary abgeglichen wird. Daher stimmt ein Element oder ein Attribut in einer Nachricht nur dann mit dem Dictionary überein, wenn sowohl der Name als auch der Namespace übereinstimmen.

Auch wenn Sie Ihren Code in ESQL oder Java entwickeln, können Sie Namespaces angeben. Sie müssen keinen ESQL- oder Java-Code entwickeln, der Namespaces unterstützt, wenn Sie keine Namespaces verwenden. Wenn Sie sich jedoch für die Verwendung von Namespaces entscheiden, können Sie in Ihren Nachrichtendefinitionsdateien jeden beliebigen Namespace als Ziel angeben. In diesem Fall müssen Sie jedoch ESQL- bzw. Java-Code schreiben, der Namespaces unterstützt. Der Namespace, in dem sich ein Element befindet, wird während der Analyse in der Nachrichtenbaumstruktur gespeichert. Dies ist eine logische Eigenschaft, die unabhängig von dem physischen Format, in dem Nachrichten analysiert und geschrieben werden, beibehalten wird. ESQL wurde eine neue Syntax hinzugefügt, die den Verweis auf die Namespaces von Elementen mithilfe von definierten Präfixen erleichtert. In Java werden XPath-Ausdrücke für den Verweis auf Elemente verwendet.

Import aus anderen Formaten
Das Nachrichtenmodell bietet die Möglichkeit, Nachrichtendefinitionsdateien aus anderen Formaten zu erstellen, indem diese in das Message Brokers Toolkit importiert werden.
  • Beim Import einer XML-DTD-Datei befindet sich die erstellte Nachrichtendefinitionsdatei im notarget-Namespace.
  • Wenn Sie eine XML-Schemadatei importieren, ist der Zielnamespace der erstellten Nachrichtendefinitionsdatei davon abhängig, ob Namespaces für die Nachrichtengruppe aktiviert wurden.
    • Wenn Namespaces aktiviert wurden, entspricht der Zielnamespace der durch den Import erstellten Nachrichtendefinitionsdatei dem Zielnamespace des importierten XML-Schemas.
    • Falls Namespaces für die Nachrichtengruppe inaktiviert sind, befindet sich die Nachrichtendefinitionsdatei im Namespace notarget. Diese Art des Imports bietet keine volle Namespaceunterstützung. Bei Verwendung von WebSphere Message Broker müssen Sie keinen ESQL- oder Java-Code schreiben, der Namespaces unterstützt, um eine XML-Nachricht zu verarbeiten, die anhand des aus diesem Nachrichtenmodell generierten Dictionary analysiert wird. Gründe für diese Vorgehensweise finden Sie unter XML-Schema in Nachrichtengruppen mit inaktivierten Namespaces importieren.
  • Wenn Sie ein COBOL-Copybook oder eine C-Headerdatei importieren, ist der Zielnamespace der erstellten Nachrichtendefinitionsdatei davon abhängig, ob Namespaces für die Nachrichtengruppe aktiviert wurden.
    • Wenn Namespaces aktiviert wurden, entspricht der Zielnamespace der durch den Import erstellten Nachrichtendefinitionsdatei dem Namespace notarget. Der standardmäßige Namespace kann durch die Angabe eines Zielnamespace im Assistenten Neue Nachrichtendefinitionsdatei überschrieben werden. Gründe für diese Vorgehensweise finden Sie unter Namespaces bei MRM-Nachrichten, die nicht im XML-Format sind.
    • Falls Namespaces für die Nachrichtengruppe inaktiviert sind, befindet sich die erstellte Nachrichtendefinitionsdatei im Namespace notarget.

Weitere Informationen zu XML

Auf der Website von World Wide Web Consortium (W3C) finden Sie die folgenden Dokumente:

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

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

ad00820_