Namespace: Elemente und Attribute aus verschiedenen DTD's in einem Xml-Dokument verwenden

Für Xml ist die Integration von Daten und Meta-Daten zentral - ein Xml-Dokument enthält immer seine vollständige Selbstbeschreibung. Dies legt es nahe, die zugehörigen DTD's auszulagern und sie möglichst häufig wiederzuverwenden, damit nicht DTD's mehrfach erstellt werden, welche denselben Inhalt beschreiben. Werden für ein größeres Projekt jedoch mehrere DTD's gemeinsam benötigt, welche von verschiedenen Personen eigenverantwortlich betreut werden, so kann es sein, daß die Eindeutigkeit der Elementnamen nicht mehr gewährleistet ist. Eine DTD für Bücher kennt das Element 'title' (für den Buchtitel), eine DTD für Veranstaltungen verwendet ein namensgleiches Element 'title' für den Titel einer Veranstaltung. Dort steht der Wert nicht im Element-Content, sondern ist als Attribut definiert. Eine Gesamtdarstellung soll beide DTDs gemeinsam verwenden, etwa um für Veranstaltungen Literaturempfehlungen zusammenzustellen. Wird nun das Element 'title' verwendet, so kann zunächst nicht unterschieden werden, ob es sich um ein Element aus dem Bereich der Bücher oder um ein Element handelt, welches einen Veranstaltungstitel beschreibt. Soll der Inhalt dieses Xml-Dokuments etwa für eine Html-Darstellung transformiert werden und sind für Veranstaltungen und Bücher verschiedenartige Designs notwendig, so scheitert dies, falls die Elemente namensgleich sind.

Um die bei diesen Aufgabenstellungen auftretenden Namenskonflikte zu lösen, verwendet Xml das Konzept der Namespace-Declaration. Ein Element wird nicht unmittelbar mit seinen lokalen Namen, sondern mit einem vorgestellten Präfix, gefolgt von einem Doppelpunkt und dem lokalen Namen, verwendet. Das Präfix wird beim ersten Auftreten mit dem speziellen Attribut xmlns definiert und ihm ein URI, eine eindeutige Adresse zugeordnet. Damit gehört das Element zum Kontext dieser Adresse, die Adresse deklariert einen Namensraum und ordnet diesem für den aktuellen Gültigkeitsbereich das verwendete Präfix zu. So lassen sich verschiedene Namespaces mit verschiedenen Präfixes in einem Xml-Dokument definieren und gleichzeitig verwenden. Das Element 'title' für Bücher mag nun 'b:title', das Element 'title' für Veranstaltungen 'v:title' heißen. Damit ist jeder qualified Name, zusammengesetzt aus Präfix, Doppelpunkt und lokalem Namen, innerhalb dieses Dokuments eindeutig gekennzeichnet.

Zuordnung zwischen Präfix und Namespace

Vorbemerkung: Die Beispiele stehen in der Codeansicht sowie per Verweis zur Verfügung. Prüft der Browser das Xml-Dokument auf seine Namespace-Deklarationen, so können Sie sich die Datei lokal kopieren und bei einem Element das Präfix durch ein nicht definiertes Präfix ersetzen. Dann erhalten Sie Fehlermeldungen der Form: 'Verweis auf ein nicht deklariertes Namespace-Präfix' (IE6). Firebird (0.7) und Opera (7.23) geben hier leider keine Fehlermeldungen aus.

© 2003-2018 Jürgen Auer, Berlin.