XML-Namespaces

Dokumentationen mit DocBook-XML

XML-Namespaces

Bei den XML-Namespaces handelt es sich um eine Technologie, mit der man verschiedene XML-Anwendungen in einem XML-Dokument kombinieren kann. Ein gutes Beispiel dafür ist die Kombination von MathML in XHTML. Dann kann ein geeigneter Browser mathematische Formeln auf einer Website anzeigen.

Anmerkung

Namespaces erlauben das gleichzeitige Verwenden zweier XML-Applikationen.

Um dies zu ermöglichen, und um eventuelle Unklarheiten zu beseitigen, wenn in zwei verwendeten XML-Anwendungen die gleichen Elementnamen verwendet werden, wird jedem der XML-Applikationen eine eindeutige Identifikation in Form einer URL zugeordnet. Diese URL nennt man auch den Namespace. Diese URL können, aber müssen nicht Informationen zur jeweiligen XML-Anwendung enthalten, entscheidend ist es, dass die Anwendung eindeutig bestimmt ist.

Anmerkung

URLs können Ressourcen eindeutig beschreiben

Einem Element wird ein Namensraum zugeordnet, indem man das reservierte Attribut xmlns einfügt und als Wert den Namespace der XML-Applikation angibt. Alle Elemente unterhalb des Elements mit dem definierten Namespace haben jetzt diesen Namespace, bis ein untergeordnetes Element einen anderen Namespace definiert.

Anmerkung

Mit xmlns wird der Namespace definiert

Beispiel 1.13. Namespace-Deklaration bei XHTML 1.0

<?xml version="1.0" encoding="UTF-8"?>
<html
		xmlns="http://www.w3.org/1999/xhtml" 
		lang="en"
		xml:lang="en">
	<head>
		<title>
			MathML's Hello Square
		</title>
	</head> 
	<body> 
		<p>
			This is a perfect square:
		</p>
		<math
				xmlns="http://www.w3.org/1998/Math/MathML">
			<mrow>
				<msup>
					<mfenced>
						<mrow>
							<mi>a</mi>
							<mo>+</mo>
							<mi>b</mi> 
						</mrow>
					</mfenced>
					<mn>2</mn> 
				</msup>
			</mrow>
		</math> 
	</body> 
</html>

In diesem Beispiel wird im Root-Element definiert, dass es sich um eine HTML-Datei handelt und im math-Element wird festgelegt, dass alle Elemente unterhalb MathML-Elemente sind.

Damit kommt man zum Begriff des Default-Namespace (Standard-Namensraum). Dieser wird im Root-Element des Dokuments festgelegt. Außerdem kann man im Root-Element auch so genannte Namespace-Prefixes definieren. Namespace-Prefixes erlauben es, Elemente aus mehreren Namespaces zu verwenden, ohne jedes mal den Namespace mit den Attribut xmlns anzugeben.

Anmerkung

Wenn nichts weiteres angegeben ist, haben alle Elemente den Default-Namespace

Definition und Einsatz von Namespace-PrefixesEin Namespace-Prefix wird definiert, indem im Root-Element des Dokuments ein Attribut der Form xmlns, Doppelpunkt, Name des Prefixes mit der gewünschten Namespace-URL als Wert des Attributs. Der Namespace-Prefix wird verwendet, indem für jedes Element, welches sich in diesem Namespace befinden soll vor den Elementnamen der Namespace-Prefix, durch einen Doppelpunkt getrennt geschrieben wird.

Anmerkung

Die Verwendung von Namespaces wird durch Namespace-Prefixes erleichtert

Beispiel 1.14. XHTML 1.0 & MathML mit Namespace-Prefix

Damit kann ich das vorhergehende Beispiel durch die Verwendung des Namespace-Prefixes mm abkürzen:

<?xml version="1.0" encoding="UTF-8"?> 
<html
		xmlns="http://www.w3.org/1999/xhtml"
		xmlns:mml="http://www.w3.org/1998/Math/MathML"
		lang="en" 
		xml:lang="en"> 
	<head>
		<title>MathML's Hello Square</title>
	</head>
	<body>
		<p>
			This is a perfect square:
		</p> 
		<mml:math>
			<mml:mrow>
				<mml:msup> 
					<mml:mfenced> 
						<mml:mrow>
							<mml:mi>a</mml:mi>
							<mml:mo>+</mml:mo>
							<mml:mi>b</mml:mi>
						</mml:mrow>
					</mml:mfenced> 
					<mml:mn>2</mml:mn>
				</mml:msup> 
			</mml:mrow>
		</mml:math>
	</body> 
</html>