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