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.
xmlns='URI' xmlns:PREFIX='URI'xmlns ist ein vordefiniertes NMTOKEN, wird es als Attribut verwendet, wird anschließend der Standard-Namespace deklariert. Oder es folgt ein ':', gefolgt von einem Präfix und der URI. Dann werden die Elemente, welche zu diesem Namespace gehören, anschließend durch das Präfix kenntlich gemacht.
<?xml version='1.0'?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Titel des ersten Namespace-Beispiels</title> </head> <body> weitere body-Elemente dieser Seite </body> </html>Diese Version namespace-default.xml definiert für das Element 'html' den Standard-Namespace. Alle Unterelemente, für die keine weiteren Festlegungen getroffen werden, sind damit diesem Namespace zugeordnet.
<?xml version='1.0'?> <h:html xmlns:h="http://www.w3.org/1999/xhtml"> <h:head> <h:title>Namespace-Deklaration - Beispiel 2</h:title> </h:head> <h:body> <!-- weitere body-Elemente dieser Seite --> <h:a h:href='http://www.w3.org/TR/xml-names/'> <!-- hier verweist das Präfix h auf 'http://www.w3.org/TR/xml-names/', der erste Wert wird überschrieben --> Xml-Recommendation </h:a> <!-- Hier ist die Überschreibung wieder aufgehoben --> </h:body> </h:html>In der Datei namespace-with-prefix.xml wird nach dem Schlüsselwort 'xmlns' das Präfix festgelegt, welches für alle Elemente verwendet wird, die zu diesem Namespace, nicht jedoch zum Standardnamespace gehören. Letzterer ist hier nicht definiert. Alle Unterelemente von 'h:html' werden durch eine Kombination aus 'h:' sowie dem üblichen Elementnamen bezeichnet, dasselbe gilt für die Attribute.
<?xml version='1.0'?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Namespace-Verwendung - 3</title> </head> <body xmlns:b='http://www.sql-und-xml.de/xml-samples/books-small.dtd' xmlns:e='http://www.sql-und-xml.de/xml-samples/events-small.dtd'> <b:books> <b:book> <b:title>Reisen in Frankreich</b:title> <b:author>Mustermann, Max</b:author> </b:book> </b:books> <e:events> <e:event> <e:title value='Monatstreffen'/> <e:room>K 202-5</e:room> </e:event> </e:events> <!-- weitere body-Elemente dieser Seite --> </body> </html>Im Xml-Dokument namespace-import.xml wird zunächst der Standard-Namespace mit 'xmlns' definiert, alle Elemente und Attribute ohne Präfix gehören zu diesem. Im zum Standard-Namespace gehörenden body-Element werden zwei weitere Namespaces deklariert - b für die books-small.dtd sowie e für die events-small.dtd. Anschließend können alle Elemente aus diesen verschiedenen Namensräumen verwendet werden und sind dennoch eindeutig zuzuordnen.