XML -Namespaces
XML-Namespaces bieten eine Methode zur Vermeidung von Elementnamenskonflikten.
Namenskonflikte
In XML werden Elementnamen vom Entwickler definiert. Dies führt häufig zu einem Konflikt, wenn versucht wird, XML-Dokumente aus verschiedenen XML-Anwendungen zu mischen.
Dieses XML enthält HTML-Tabelleninformationen:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Dieses XML enthält Informationen über einen Tisch (ein Möbelstück):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Wenn diese XML-Fragmente zusammengefügt würden, würde es zu einem Namenskonflikt kommen. Beide enthalten ein <table>-Element, aber die Elemente haben unterschiedliche Inhalte und Bedeutungen.
Ein Benutzer oder eine XML-Anwendung wird nicht wissen, wie diese Unterschiede zu handhaben sind.
Den Namenskonflikt mit einem Präfix lösen
Namenskonflikte in XML lassen sich einfach durch ein Namenspräfix vermeiden.
Dieses XML enthält Informationen über eine 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>
Im obigen Beispiel gibt es keinen Konflikt, da die beiden <table>-Elemente unterschiedliche Namen haben.
XML-Namespaces - Das xmlns-Attribut
Bei der Verwendung von Präfixen in XML muss ein Namensraum für das Präfix definiert werden.
Der Namensraum kann durch ein xmlns - Attribut im Start-Tag eines Elements definiert werden.
Die Namespace-Deklaration hat die folgende Syntax. xmlns: Präfix = " 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.w3schools.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 xmlns-Attribut im ersten <table>-Element gibt dem h:-Präfix einen qualifizierten Namensraum.
Das xmlns-Attribut im zweiten <table>-Element gibt dem f:-Präfix einen qualifizierten Namensraum.
Wenn ein Namespace für ein Element definiert wird, werden alle untergeordneten Elemente mit demselben Präfix demselben Namespace zugeordnet.
Namespaces können auch im XML-Wurzelelement deklariert werden:
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.w3schools.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 Namespace-URI wird vom Parser nicht zum Nachschlagen von Informationen verwendet.
Der Zweck der Verwendung eines URI besteht darin, dem Namensraum einen eindeutigen Namen zu geben.
Unternehmen verwenden den Namensraum jedoch häufig als Verweis auf eine Webseite, die Namensrauminformationen enthält.
Uniform Resource Identifier (URI)
Ein Uniform Resource Identifier (URI) ist eine Zeichenfolge, die eine Internetressource identifiziert.
Der gebräuchlichste URI ist der Uniform Resource Locator (URL), der eine Internetdomänenadresse identifiziert. Ein weiterer, nicht so verbreiteter URI-Typ ist der Uniform Resource Name (URN).
Standard-Namespaces
Das Definieren eines Standardnamensraums für ein Element erspart uns die Verwendung von Präfixen in allen untergeordneten Elementen. Es hat die folgende Syntax:
xmlns="namespaceURI"
Dieses XML enthält HTML-Tabelleninformationen:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Dieses XML enthält Informationen über ein Möbelstück:
<table xmlns="https://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Namespaces in der realen Verwendung
XSLT ist eine Sprache, die verwendet werden kann, um XML-Dokumente in andere Formate umzuwandeln.
Das folgende XML-Dokument ist ein Dokument, das verwendet wird, um XML in HTML umzuwandeln.
Der Namespace "http://www.w3.org/1999/XSL/Transform" identifiziert XSLT-Elemente innerhalb eines HTML-Dokuments:
<?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>
Wenn Sie mehr über XSLT erfahren möchten, lesen Sie bitte unser XSLT-Tutorial .