Namespaces XML offrent une méthode pour éviter les conflits de nom élément.
conflits de noms
En XML, les noms d'éléments sont définis par le développeur. Il en résulte souvent un conflit en essayant de mélanger des documents XML à partir de différentes applications XML.
Cette XML porte HTML informations de table:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Cette XML porte des informations sur une table (a piece of furniture) :
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Si ces fragments XML ont été ajoutés ensemble, il y aurait un conflit de nom. Les deux contiennent une <table> élément, mais les éléments ont un contenu et un sens différent.
Un utilisateur ou une application XML ne sauront pas comment gérer ces différences.
Résoudre le conflit de nom L'utilisation d'un préfixe
Nom des conflits en XML peuvent facilement être évités en utilisant un préfixe de nom.
Cette XML porte des informations sur un tableau HTML, et un morceau de meubles:
<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>
Dans l'exemple ci - dessus, il n'y aura pas de conflit parce que les deux <table> éléments ont des noms différents.
XML Namespaces - Les xmlns Attribut
Lors de l' utilisation des préfixes en XML, un namespace de namespace pour le préfixe doit être défini.
L'espace de noms peut être défini par un xmlns attribut dans la balise de début d'un élément.
La déclaration d'espace de noms a la syntaxe suivante. 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="http://www.w3ii.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Dans l'exemple ci-dessus:
Les xmlns attribut dans la première <table> élément donne h: préfixe d'espace de noms qualifié.
Les xmlns attribut dans la seconde <table> élément donne le f: préfixe d'espace de noms qualifié.
Quand un espace de noms est défini pour un élément, tous les éléments de l'enfant avec le même préfixe sont associés avec le même espace de noms.
Namespaces peuvent aussi être déclarées dans l'élément racine XML:
<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3ii.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>
Note: L'espace de noms URI est pas utilisé par l'analyseur pour rechercher des informations.
Le but de l'aide d'un URI est de donner l'espace de noms d'un nom unique.
Toutefois, les entreprises utilisent souvent l'espace de noms comme un pointeur vers une page Web contenant des informations d'espace de noms.
Uniform Resource Identifier (URI)
A Uniform Resource Identifier (URI) est une chaîne de caractères qui identifie une ressource Internet.
L'URI le plus commun est le Uniform Resource Locator (URL) qui identifie une adresse de domaine Internet. Un autre, pas le type si commun d'URI est le Universal Resource Name de Universal Resource Name (URN) .
Namespaces par défaut
Définition d'un espace de noms par défaut pour un élément nous sauve en utilisant des préfixes dans tous les éléments de l'enfant. Il a la syntaxe suivante:
xmlns="namespaceURI"
Cette XML porte HTML informations de table:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Cette XML porte des informations sur un meuble:
<table xmlns="http://www.w3ii.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Espaces de noms en usage réel
XSLT est un langage qui peut être utilisé pour transformer des documents XML en d'autres formats.
Le document XML ci-dessous, est un document utilisé pour transformer XML en HTML.
L'espace de noms "http://www.w3.org/1999/XSL/Transform" identifie les éléments XSLT à l' intérieur d' un document HTML:
<?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>
Si vous voulez en savoir plus sur XSLT, s'il vous plaît lire notre tutoriel XSLT .