XML-Namespace

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 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:

  • XML namespace — xmlns tagged XML namespaces are used for providing uniquely named elements and attributes in an XML document. They are defined in a W3C recommendation.[1] An XML instance may contain element or attribute names from more than one XML vocabulary.… …   Wikipedia

  • XML Certification Program — (XML Master) is IT professional certification for XML and related technologies. There are two levels of XML Certifications, XML Master Basic certification and XML Master Professional certification, and more than 16000 examiners have passed those… …   Wikipedia

  • Namespace-based Validation Dispatching Language — (NVDL) is an XML schema language for validating XML documents that integrate with multiple namespaces. It is an ISO/IEC standard, and it is Part 4 of the DSDL schema specification. Much of the work on NVDL is based on the older Namespace Routing… …   Wikipedia

  • 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… …   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

  • XML Signature — (also called XMLDsig , XML DSig , XML Sig ) is a W3C recommendation that defines an XML syntax for digital signatures. Functionally, it has much in common with PKCS#7 but is more extensible and geared towards signing XML documents. It is used by… …   Wikipedia

  • XML Base — ist eine vom World Wide Web Consortium empfohlene Möglichkeit, Basis URLs für Teile von XML Dokumenten zu definieren. Basis URL bezeichnet dabei diejenige URL, von der aus relative Pfadangaben im Dokument aufgelöst werden. Die XML Base Empfehlung …   Deutsch Wikipedia

  • XML Events — ist eine Spezifikation des W3C, um Ereignisse, die in einem XML Dokument auftreten, zu handhaben. Diese Ereignisse werden typischerweise durch einen Benutzer ausgelöst, der mit dem Dokument, einer Webseite, mit Hilfe eines Internetbrowsers auf… …   Deutsch Wikipedia

  • XML-binary Optimized Packaging — (XOP) ist eine W3C Empfehlung für die Repräsentation binärer Daten in XML Dokumenten. XOP ersetzt damit die sonst für die Repräsentation binärer Daten in XML Dokumenten üblichen Techniken wie Verwendung von CDATA Blöcken, Base64 Kodierung, SOAP… …   Deutsch Wikipedia

  • XML Information Set — (Infoset) ist ein W3C Standard mit dem Status einer Empfehlung. Die Infoset Spezifikation dient als Basis für eine Reihe anderer Spezifikationen, welche Aussagen zum formellen Informationsgehalt von XML Dokumenten zu machen haben. Ein… …   Deutsch Wikipedia

Share the article and excerpts

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