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.
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:
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.
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.
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.
Auf der Website von World Wide Web Consortium (W3C) finden Sie folgende Informationen: