XML-Namensraum

XML-Namensraum

XML-Namensräume (englisch „XML namespaces“) werden benutzt, um in einem einzelnen Dokument mehrere XML-Sprachen zu mischen. Ihre Funktionsweise ist mit Vorwahlen bei Telefonnummern zu vergleichen.

Zum Beispiel beschreibt das <p>-Element in XHTML einen Absatz; in einer XML-Sprache für eine Personendatenbank könnte <p> ein Element für eine Person darstellen. Namensräume erlauben, diese Elemente eindeutig zu unterscheiden.

Der Namensraum-Mechanismus für XML-Daten wurde vom W3-Konsortium entwickelt und liegt derzeit (Dezember 2008) in der zweiten Auflage sowohl für XML 1.0 als auch für XML 1.1 (jeweils 16. August 2006) vor. Die erste Version der Spezifikation datiert auf den 14. Januar 1999, also etwa ein Jahr, nachdem die XML-Spezifikation verabschiedet wurde. Aus diesem Grund findet man z. B. in der Empfehlung zu MathML 1.0 noch keine Namensraumangabe.

Inhaltsverzeichnis

Struktur von XML-Namensräumen

Namensräume werden durch URIs dargestellt, meistens also durch normale Webadressen. Dabei ist zu beachten, dass die entsprechende Adresse nicht existieren muss. Sie kann beliebig definiert werden. Wichtig ist zudem, dass bei Namensraumangaben auf Groß- und Kleinschreibung, auch im Host-Teil, sowie eine eventuelle URL-Kodierung, z. B. %C3%A4 statt ä, geachtet werden muss.

Wenn eine URL als Namensraum verwendet wird, ist es jedoch meistens sinnvoll, unter dieser Adresse zusätzliche Informationen zu der XML-Sprache anzubieten, z. B. eine Dokumenttypdefinition (DTD) oder ein XML-Schema.

Namensräume verwenden

Für Namensräume wird das Attribut xmlns' (für engl.: XML Namespace) verwendet:

<html xmlns="http://www.w3.org/1999/xhtml">
  ... restliche HTML-Datei
</html>

Alle Kindelemente von <html>, also Elemente innerhalb von <html>...</html>, gehören hier zum Namensraum http://www.w3.org/1999/xhtml. Namensräume können auch verschachtelt werden:

<html xmlns="http://www.w3.org/1999/xhtml">
  ... XHTML-Elemente

  <math xmlns="http://www.w3.org/1999/Math/MathML">
    ... MathML-Elemente
  </math>

  ... XHTML-Elemente
</html>

Der Null-Namensraum

Verwendet ein XML-Dokument keine Namensräume, sagt man, seine Elemente stehen im Null-Namensraum. Will man dies auch in einem Dokument erreichen, das Namensräume verwendet, z. B., weil die entsprechende XML-Sprache keinen Namensraum definiert hat, ist die Angabe xmlns="" erlaubt. Das Element und seine Kindelemente werden dann behandelt, als ob sie im Null-Namensraum stünden.

Präfixe

Zusätzlich zur oben beschriebenen Methode existiert ein Präfix-Mechanismus: Elemente können durch eine Zeichenkette, die durch einen Doppelpunkt vom Elementnamen getrennt wird, in einen beliebigen Namensraum gesetzt werden. Dazu muss das Präfix jedoch zuerst an den Namensraum „gebunden“ werden:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:m="http://www.w3.org/1999/Math/MathML">
  ... XHTML-Elemente

  <m:math>
    ... MathML-Elemente mit m:-Präfix
  </m:math>

  ... XHTML-Elemente
</html>

In diesem Beispiel wird im <html>-Element mit der Angabe xmlns:m="..." das Präfix m an den MathML-Namensraum gebunden. Danach können Elemente durch die Angabe

<m:Elementname>...</m:Elementname>

in den entsprechenden Namensraum gesetzt werden. Im Unterschied zum Beispiel ohne Präfixe ist zu berücksichtigen, dass Kindelemente eines Elements mit Präfix nicht automatisch denselben Namensraum besitzen. Sie müssen ebenfalls mit einem Präfix versehen werden:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:m="http://www.w3.org/1999/Math/MathML">
  ... XHTML-Elemente

  <m:math>
    <span>Hier steht XHTML. Variable x: <m:i>x</m:i></span>
  </m:math>

  ... XHTML-Elemente
</html>

Das Präfix xmlns

Technisch gesehen ist ein Konstrukt der Art xmlns:m ein Attribut mit einem Namensraumpräfix. Es existiert in dem Fall der Verwendung von Präfixen also ein zusätzlicher Namensraum

xmlns:xmlns="http://www.w3.org/2000/xmlns/"

im Dokument. Dieser wird jedoch nicht explizit angegeben, sondern von XML-verarbeitenden Programmen vorausgesetzt. Wie das folgende xml ist auch dieses Präfix fest mit dem oben angegebenen Namensraum verknüpft.

Das Präfix xml

XML-Elemente dürfen nicht mit der Zeichenkette xml anfangen. Daraus folgt, dass auch XML-Namensraum-Präfixe nicht mit xml anfangen dürfen. Tatsächlich ist an xml ein Namensraum für Elemente und Attribute gebunden, den das W3-Konsortium für Erweiterungen von XML reserviert.

Die URI dieses Namensraums ist http://www.w3.org/XML/1998/namespace. Sie muss nicht explizit angegeben werden, sondern wird von den verarbeitenden Programmen selbst eingefügt.

Derzeit existieren folgende Attribute mit Präfix xml (Stand Dezember 2008):

Attribut Bedeutung Beispiel
xml:lang Sprachangaben zum Inhalt. Durch ISO-3166 und ISO-639 definiert. Werte: 2-stelliger Sprachcode optional gefolgt von Bindestrich sowie großgeschriebenem 2-stelligen Ländercode. Ausnahme: nicht-standardisierte Länder- und Sprachcodes.
<p xml:lang="de">Inhalt in deutscher Sprache, Land: undefiniert</p>
<p xml:lang="en-US">Inhalt in englischer Sprache, Land: Vereinigte Staaten</p>
<p xml:lang="sindarin-MITTELERDE">Inhalt in grauelbisch, Land: Mittelerde</p>
xml:space Darf die zwei Werte preserve und default annehmen. preserve bedeutet, dass Leerzeichen und Zeilenumbrüche genau so angezeigt werden, wie sie im Quelltext der Datei stehen (wie beim <pre>-Element in HTML). default heißt, dass mehrere Leerzeichen und Zeilenumbrüche zu einem einzigen Leerzeichen zusammengefasst werden (Voreinstellung).
<div xml:space="default">
  ASCII-Art:
  <p xml:space="preserve">
   ¦\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  ¦,4-  ) )-,_..;\ (  `'-'
 '---(_/--'  `-'\_)  fL
  </p>
</div>
xml:base Basis-URL, von der aus alle relativen Links in dem Element ausgewertet werden.
<h3>Wikipedia-Links</h3>
<ul xml:base="http://de.wikipedia.org/wiki/">
  <li><a href="XML">XML</a></li>
  <li><a href="SGML">SGML</a></li>
</ul>
xml:id Dokumentweit eindeutiger Bezeichner für das Element
<p xml:id="Kapitel_1">Ein Absatz</p>

<p><a href="#Kapitel_1">Link zum obigen Absatz</a></p>

Attribute

Attribute in XML sind sogenannte assoziierte Knoten. Sie werden nicht wie normale Kindelemente eines Elements behandelt. Bei Namensräumen heißt das, dass Attribute nicht im Namensraum des Elements stehen, in dem sie notiert sind, sondern vorgabemäßig im Null-Namensraum.

Es gibt Fälle, in denen man dies explizit ändern will. Beispielsweise werden Links in SVG von der Sprache XLink übernommen, die ein Set von Attributen bereitstellt, mit denen Links beschrieben werden können. In diesem Fall müssen die einzelnen Attribute mit einem Präfix versehen werden:

<svg xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink">
  <a xlink:href="grafik2.svg">Link zu Grafik 2</a>
</svg>

Es gibt für Attribute keine Möglichkeit, sie ohne Präfix in einen bestimmten Namensraum zu setzen.

Beispiel

Im folgenden Beispiel werden Elemente aus den XML-Sprachen XHTML (blau), MathML (rot) und SVG (grün) gemischt:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:svg="http://www.w3.org/2000/svg">
  <head>
    <title>Beispiel-Datei mit mehreren Namensräumen</title>
  </head>
  <body>
    <h1>Eine Mathe-Formel:</h1>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <mi>x</mi><mo>=</mo><mn>2</mn>
    </math>
    <p>Und noch ein kleines Bild dazu:</p>
    <svg:svg>
      <svg:rect x="0" y="0" width="10" height="10" />
      <svg:text>
        <svg:tspan>Eine Formel in der Grafik:</svg:tspan>
        <svg:tspan>
          <math xmlns="http://www.w3.org/1998/Math/MathML">
            <mi>y</mi><mo>=</mo><mn>1</mn>
          </math>
        </svg:tspan>
      </svg:text>
    </svg:svg>
    <p>Eine SVG Grafik kann auch ohne Präfix verwendet werden:</p>
    <svg xmlns="http://www.w3.org/2000/svg">
      <circle cx="10" cy="10" r="5" fill="red" />
    </svg>
  </body>
</html>

Schwierigkeiten mit XML-Namensräumen

Doppelpunkte in Elementnamen

XML-verarbeitende Programme werden in zwei Gruppen eingeteilt:

  • Programme, die Namensräume beachten und verarbeiten
  • Programme, die Namensräume nicht beachten

Der wichtigste Unterschied ist der Umgang mit Doppelpunkten in Elementnamen. Wird das Dokument von einem Namensraum-sensiblen Programm verarbeitet, müssen alle Doppelpunkte als Trenner von Präfixen und Elementnamen interpretiert werden – ansonsten erzeugt das Programm einen Fehler. Programme, die nicht nach Namensräumen unterscheiden, führen diese Überprüfung nicht durch.

In XML selbst ist es erlaubt, Elemente zu definieren, die den Doppelpunkt bereits im Elementnamen tragen. Dies wird jedoch ausdrücklich nicht empfohlen. Dateien, die Namensräume verwenden, sind dadurch jedoch wohlgeformte XML-Dokumente.

URLs als Namensräume

Es ist eine regelmäßige Frage in entsprechenden Foren, was man denn nun unter der URL hinterlegen soll, die als Namensraum-Definition verwendet wird. Die einfache Antwort ist, dass dort nichts existieren muss. URLs, und allgemeiner URIs, werden als Definition verwendet, weil sie gewisse Hinweise liefern können, von wem die Sprache entwickelt wurde, und weil die entsprechenden Personen oder Organisationen eine gewisse zumindest symbolische Kontrolle über einen bestimmten URL-Bereich (z. B. http://www.w3.org/... für das W3-Konsortium) besitzen.

Dokumenttyp-Definitionen und Namensräume

XML-Sprachen werden heute noch häufig mit sogenannten Dokumenttyp-Definitionen definiert. Diese DTDs, die noch aus der SGML-Zeit stammen, waren nie dazu bestimmt Namensräume zu beachten (DTDs wurden in den 1980ern entwickelt). Es ist sehr umständlich und zum Teil unmöglich, z. B. bei beliebigen Präfixen oder in XSLT, eine allgemein gültige DTD für eine XML-Sprache oder ein Dokument aufzustellen.

Ein Versuch, dies für XHTML, MathML und SVG in einer Datei dennoch zu tun, findet man beim W3-Konsortium ([1]). Dort wird mittels im Nachhinein definierbarer Entitäten die Möglichkeit geschaffen, Präfixe für jedes Dokument neu zu bestimmen.

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Namensraum (XML) — XML Namensräume (englisch „XML namespaces“) werden benutzt, um das Vokabular eines XML Dokumentes eindeutig zu identifizieren und um in einem einzelnen Dokument mehrere XML Sprachen zu mischen. Ihre Funktionsweise ist mit Vorwahlen bei… …   Deutsch Wikipedia

  • XML-Namespace — XML Namensräume (englisch „XML namespaces“) werden benutzt, um in einem einzelnen Dokument mehrere XML Sprachen zu mischen. Ihre Funktionsweise ist mit Vorwahlen bei Telefonnummern zu vergleichen. Zum Beispiel beschreibt das <p> Element in… …   Deutsch Wikipedia

  • Namensraum — Der Namensraum (englisch: „namespace“) ist ein Begriff aus der Programmierung. Dabei werden – vor allem bei der objektorientierten Programmierung – die Namen für Objekte in einer Art Baumstruktur angeordnet und über entsprechende Pfadnamen… …   Deutsch Wikipedia

  • .xml — Vorlage:Infobox Dateiformat/Wartung/magic fehltVorlage:Infobox Dateiformat/Wartung/website fehlt Extensible Markup Language Dateiendung .xml …   Deutsch Wikipedia

  • XML — Vorlage:Infobox Dateiformat/Wartung/magic fehltVorlage:Infobox Dateiformat/Wartung/website fehlt Extensible Markup Language Dateiendung …   Deutsch Wikipedia

  • Xml — Vorlage:Infobox Dateiformat/Wartung/magic fehltVorlage:Infobox Dateiformat/Wartung/website fehlt Extensible Markup Language Dateiendung …   Deutsch Wikipedia

  • XML-Schema — ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen unterstützt.… …   Deutsch Wikipedia

  • XML Schema Definition — XML Schema ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen… …   Deutsch Wikipedia

  • XML Schema — XML Schema, abgekürzt XSD, ist eine Empfehlung des W3C zum Definieren von Strukturen für XML Dokumente. Anders als bei den klassischen XML DTDs wird die Struktur in Form eines XML Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von… …   Deutsch Wikipedia

  • Liste der XML-Namensräume — XML Namensräume werden benutzt, um in einem einzelnen Dokument mehrere XML Sprachen zu mischen. Siehe Namensraum (XML) für Einzelheiten. Diese Liste soll die gebräuchlichsten Namensräume aufzählen. Da jederzeit beliebige neue Namensräume benannt… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”