XML-Namensräume

XML Namensraum bietet eine Methode, um Elementnamenskonflikte zu vermeiden.

Namenskonflikt

In XML werden Elementnamen vom Entwickler definiert. Es tritt ein Namenskonflikt auf, wenn zwei verschiedene Dokumente denselben Elementnamen verwenden.

Dieses XML-Dokument enthält Informationen aus einer Tabelle:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Dieser XML-Dokument enthält Informationen über den Tisch (ein Möbelstück):

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Wenn diese beiden XML-Dokumente gemeinsam verwendet werden, treten Namenskonflikte auf, da beide Dokumente <table>-Elemente mit unterschiedlichem Inhalt und Definition enthalten.

Benutzer oder XML-Anwendungen können nicht bestimmen, wie sie solche Konflikte behandeln sollen.

Namensraum zur Lösung von Namenskonflikten

Mit Namenspräfixen kann man leicht Namenskonflikte in XML vermeiden.

Dieser XML enthält Informationen über HTML-Tabelle und ein Möbelstück:

<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

Nun gibt es keine Namenskonflikte mehr, da beide Dokumente unterschiedliche Namen für ihre <table>-Elemente verwendet haben (<h:table> und <f:table>)。

Durch die Verwendung von Präfixen haben wir zwei verschiedene Arten von <table>-Elementen erstellt.

XML Namensraum - xmlns-Attribut

Wenn Präfixe in XML verwendet werden, muss der Präfix definiert werden.Namespaces(Namespaces)。

Namespaces können durch das xmlns Attribut definiert。

Die Namespace-Deklaration verwendet diese Syntax:xmlns:prefix="URI"。

<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table xmlns:f="https://www.codew3c.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

Im obigen Beispiel:

Das erste <table>-Element xmlns Das Attribut ist h: Das Präfix bietet eine spezifizierte Namespace.

Der zweite <table>-Element xmlns Das Attribut ist f: Das Präfix bietet eine spezifizierte Namespace.

Wenn einem Element ein Namespace zugeordnet ist, sind alle Subelemente mit dem gleichen Präfix mit dem gleichen Namespace verknüpft。

Namespaces können auch im XML-Root-Element deklariert werden:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.codew3c.com/furniture">
<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

Hinweis:Der Parser verwendet die Namespace-URI nicht, um Informationen zu finden。

Der Zweck der Verwendung von URI ist es, dem Namespace einen eindeutigen Namen bereitzustellen。

Allerdings verwenden viele Unternehmen oft Namespace-Pfeiler, um auf existierende Webseiten zu verweisen, die Informationen über den Namespace enthalten。

Einheitlicher Ressourcenbezeichner (URI)

Einheitlicher Ressourcenbezeichner (Uniform Resource Identifier,URI) ist eine Zeichenkette, die Internet-Ressourcen identifiziert。

Der häufigste URI istEinheitlicher Ressourcen locator (Uniform Resource Locator,URL),der Internet-Domänennamenadressen identifiziert。

Eine weniger häufig verwendete URI-Typ istEinheitlicher Ressourcenname (Uniform Resource Name,URN)。

Standard Namespace (Default Namespaces)

Durch die Definition eines Default-Namespace für ein Element können wir die Verwendung von Präfixen in allen Unter-elementen vermeiden.

Verwenden Sie die folgende Syntax:

xmlns="namespaceURI"

Dieser XML-Dokument enthält HTML-Tabelle-Informationen:

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Dieser XML enthält Informationen über ein Möbelstück:

<table xmlns="https://www.codew3c.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Anwendung des Namespace

XSLT ist eine Sprache, die verwendet werden kann, um XML-Dokumente in andere Formate zu konvertieren.

Das nachstehende XML-Dokument wird verwendet, um XML in HTML zu konvertieren.

Wenn Sie die nachstehende XSL-Dokument sorgfältig betrachten, sehen Sie, dass die meisten Tags HTML-Tags sind.

Nicht-HTML-Tags haben den Präfix xsl und werden durch diesen Namespace angezeigt: "http://www.w3.org/1999/XSL/Transform":

Der Namespace "http://www.w3.org/1999/XSL/Transform" kennzeichnet die XSLT-Elemente in HTML-Dokumenten:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr>
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

If you want to learn more about XSLT, please read our XSLT Tutorial.