Namespaces im Nachrichtenmodell

Für XML-Instanzdokumente und XML-Schemas können Namespaces verwendet werden. Namespaces bieten eine Methode zum Qualifizieren von Objektnamen.

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 ZielNamespace 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. Auf diese Weise unterstützen Namespaces die Entwicklung einer Bibliothek aus XML-Schemas, die unabhängig voneinander entwickelt werden können. Wenn der Name des Namespaces für ein XML-Schema eindeutig ist, muss ein Entwickler nicht befürchten, dass es zu Namenskollisionen mit Objekten kommt, 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, sollte ein URI eindeutig sein. Möglicherweise sind Sie mit dem Konzept des Universal-Resource-Locator (URL) besser vertraut. URIs haben oft dieselbe Syntax wie URLs, wobei die URI-Definition allerdings breiter angelegt ist als die Spezifikation einer URL. Beispiel für einen URI: http://mycompany.com/xml_schema

Ein Namespacespräfix wird als Kurzform für den vollen URI-Namen deklariert und dieser 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- oder xmlnsc-Attribut spezifiziert. Mit Hilfe eines xmlns- oder xmlnsc-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 sie zu einem späteren Zeitpunkt aktivieren. Nachdem Sie Namespaces für eine Nachrichtengruppe aktiviert haben, können Sie sie 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.

In einer Nachrichtendefinitionsdatei definierte Objekte können auf Objekte in anderen Nachrichtendefinitionsdateien innerhalb derselben Nachrichtengruppe verweisen. Zu diesem Zweck muss eine Nachrichtendefinitionsdatei in eine andere importiert oder eingefügt werden.

Das physische XML-Format
Der einer Nachrichtendefinitionsdatei zugeordnete Namespace ist Teil der logischen Ebene des Nachrichtenmodells. Daher ist er nicht davon abhängig, dass ein physisches XML-Format vorhanden ist. Wenn jedoch ein physisches XML-Format vorhanden ist, werden einige der Eigenschaften des physischen XML-Format mit den Namespacesinformationen aus der logischen Schicht gefüllt. Falls Namespaces für eine Nachrichtengruppe aktiviert sind, wird im physischen XML-Format eine Tabelle mit Namespaces-URI/Präfix-Paaren verwaltet. Diese Tabelle wird zu Beginn mit den Namespaces aller Nachrichtendefinitionsdateien mit ihren Präfixen, als sie erstellt wurden, gefüllt.

Wenn Sie WebSphere Message Broker verwenden und für Ihre Nachrichtengruppe Namespaces aktiviert sind, speichert der Broker beim Analysieren eines XML-Instanzdokuments keine Werte von xmlns- oder xmlnsc-Attributen in der Baumstruktur. Er speichert auch keine Werte der Attribute Schemaposition und Keine Position des Namespacesschemas. Der Grund dafür ist, dass der Broker diese Informationen beim Schreiben eines XML-Dokuments aus den Eigenschaften des physischen XML-Formats der Nachrichtengruppe erneut generiert.

Wenn Sie WebSphere Message Broker einsetzen, verwendet die MRM-Domäne beim Ausgeben einer XML-Nachricht die Tabelle mit den Namespaces-URI/Präfix-Paaren. Elemente und Attribute, die durch einen Namespace qualifiziert sind, werden mit dem zugehörigen Präfix aus der Tabelle versehen. Der Broker steuert auch die Ausgabe der zugehörigen xmlns- oder xmlnsc-Attribute, über die die Präfixe den Namespaces zugeordnet werden. Sie können auswählen, ob xmlns- oder xmlnsc-Attribute für alle Einträge in der Namespaces-URI/Präfix-Tabelle am Anfang des Dokuments angegeben werden oder ob sie nur bei Bedarf in das Dokument ausgegeben werden.

Falls Namespaces für eine Nachrichtengruppe aktiviert sind, enthält das physische XML-Format eine Tabelle mit Schemapositionen, über die Namespaces-URIs Dateinamen zugeordnet werden. Sie können Einträge zu dieser Tabelle hinzufügen und auch dem Namespace notarget einen Dateinamen zuordnen. Bei Verwendung von WebSphere Message Broker werden mit Hilfe dieser Tabelle die Attribute Schemaposition und Keine Position des Namespacesschemas am Anfang des XML-Dokuments ausgegeben.

Nachrichtenanalyse und ESQL
Bei Verwendung von WebSphere Message Broker erkennen die Parser der MRM- sowie der XMLNS- und XMLNSC-Domäne Namen mit Präfixen in den von ihnen analysierten XML-Nachrichten, und ordnen diese intern dem richtigen Namespace zu. Elemente und Attribute im Dictionary, die aus dem Nachrichtenmodell generiert wurden, 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 Namespaces im Dictionary zugeordnet, wenn die analysierte Nachricht mit dem aus dem Nachrichtenmodell generierten Dictionary abgeglichen wird. Ein Element oder Attribut in einer Nachricht stimmt nur dann mit dem Dictionary überein, wenn sowohl der Name als auch der Namespace übereinstimmen.

Bei Verwendung von WebSphere Message Broker haben Sie die Möglichkeit, Namespaces beim Schreiben von ESQL-Code anzugeben. Sie müssen keinen ESQL-Code schreiben, der Namespaces verarbeiten kann, 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, und Sie müssen ESQL-Code schreiben, der Namespaces verarbeiten kann. 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. Es wurde eine neue Syntax zur ESQL hinzugefügt, damit mit Hilfe von definierten Präfixen einfach auf Namespaces von Elementen verwiesen werden kann.

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 Ziel-Namespace der erstellten Nachrichtendefinitionsdatei davon abhängig, ob Namespaces für die Nachrichtengruppe aktiviert wurden.
    • Wenn Namespaces aktiviert wurden, entspricht der Ziel-Namespace der durch den Import erstellten Nachrichtendefinitionsdatei dem Ziel-Namespace 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 Namespacesunterstützung. Bei Verwendung von WebSphere Message Broker müssen Sie keinen ESQL- oder Java-Code schreiben, der Namespaces verarbeiten kann, 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-Copy Book oder eine C-Headerdatei importieren, ist der Ziel-Namespace der erstellten Nachrichtendefinitionsdatei davon abhängig, ob Namespaces für die Nachrichtengruppe aktiviert wurden.
    • Wenn Namespaces aktiviert wurden, entspricht der Ziel-Namespace der durch den Import erstellten Nachrichtendefinitionsdatei dem notarget-Namespace. Der standardmäßige Namespace kann durch die Angabe eines Ziel-Namespace im Assistenten Neue Nachrichtendefinitionsdatei überschrieben werden. Gründe für diese Vorgehensweise finden Sie unter Namespaces bei Nachrichten, die nicht im XML-Format sind.
    • Falls Namespaces für die Nachrichtengruppe inaktiviert sind, befindet sich die Nachrichtendefinitionsdatei im Namespace notarget.

Weitere Informationen zu XML

Auf der Website von World Wide Web Consortium (W3C) finden Sie folgende Informationen:

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ad00820_