XML Espaces de noms


Les espaces de noms XML offrent un moyen d'éviter les conflits de noms d'éléments.


Conflits de noms

En XML, les noms d'éléments sont définis par les développeurs. Lorsque deux documents différents utilisent le même nom d'élément, des conflits de noms se produisent.

Ce XML contient des informations sur un tableau HTML :

<table>
<tr>
<td>Pommes</td>
<td>Bananes</td>
</tr>
</table>

Ce document XML contient des informations sur une table (un meuble) :

<table>
<name>Table basse africaine</name>
<width>80</width>
<length>120</length>
</table>

Si ces deux documents XML sont utilisés ensemble, des conflits de noms se produiront, car les deux documents contiennent des éléments <table> avec un contenu et des définitions différents.

Les analyseurs XML ne peuvent pas déterminer comment gérer ce type de conflit.


Utilisation de préfixes pour éviter les conflits de noms

Les conflits de noms en XML peuvent être facilement évités en utilisant des préfixes de noms.

Ce XML contient des informations sur un tableau HTML et un meuble :

<h:table>
<h:tr>
<h:td>Pommes</h:td>
<h:td>Bananes</h:td>
</h:tr>
</h:table>

<f:table>
<f:name>Table basse africaine</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

Dans l'exemple ci-dessus, il n'y a pas de conflit parce que les deux éléments <table> ont des noms différents.


Espaces de noms XML - L'attribut xmlns

Lorsqu'on utilise des préfixes en XML, un soi-disantespace de nomspour le préfixe doit être défini.

L'espace de noms est défini dans l'attribut xmlnsde la balise de début de l'élément.

La syntaxe pour déclarer un espace de noms est la suivante. xmlns:prefix="URI"。

<root>

<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Pommes</h:td>
<h:td>Bananes</h:td>
</h:tr>
</h:table>

<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>Table basse africaine</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

</root>

Dans l'exemple ci-dessus, l'attribut xmlns de la balise <table> définit l'espace de noms qualifié pour les préfixes h: et f:.

Lorsqu'un espace de noms est défini dans la balise de début d'un élément, tous les éléments enfants avec le même préfixe seront associés au même espace de noms.

Les espaces de noms peuvent être déclarés dans les éléments où ils sont utilisés ou dans l'élément racine XML :

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3cschool.cc/furniture"
>

<h:table>
<h:tr>
<h:td>Pommes</h:td>
<h:td>Bananes</h:td>
</h:tr>
</h:table>

<f:table>
<f:name>Table basse africaine</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

</root>

Remarque :L'URI d'espace de noms n'est pas utilisé par l'analyseur pour rechercher des informations.

Son objectif est de donner à l'espace de noms un nom unique. Cependant, de nombreuses entreprises utilisent souvent l'espace de noms comme pointeur vers une page web réelle qui contient des informations sur l'espace de noms.

Veuillez consulterhttp://www.w3.org/TR/html4/。


Uniform Resource Identifier (URI, nom complet : Uniform Resource Identifier)

Uniform Resource Identifier(URI) est une chaîne de caractères qui peut identifier des ressources Internet.

L'URI le plus couramment utilisé est celui utilisé pour identifier les adresses de noms de domaine Internet, leUniform Resource Locator(URL). Un autre URI moins couramment utilisé est leUniform Resource Name(URN).

Dans nos exemples, nous utilisons uniquement des URL.


Espaces de noms par défaut

Définir un espace de noms par défaut pour un élément nous évite de devoir utiliser des préfixes dans tous les éléments enfants. Sa syntaxe est la suivante :

xmlns="namespaceURI"

Ce XML contient des informations sur un tableau HTML :

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

Ce XML contient des informations sur un meuble :

<table xmlns="http://www.w3schools.com/furniture">
<name>Table basse africaine</name>
<width>80</width>
<length>120</length>
</table>


Espaces de noms en pratique

XSLT est un langage XML utilisé pour transformer des documents XML en d'autres formats, tels que HTML.

Dans le document XSLT suivant, vous pouvez voir que la plupart des balises sont des balises HTML.

Les balises non HTML ont toutes le préfixe xsl et sont identifiées par cet espace de noms : xmlns:xsl="http://www.w3.org/1999/XSL/Transform":

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>Ma collection de CD</h2>
<table border="1">
<tr>
Titre
Artiste
</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 souhaitez en savoir plus sur XSLT, veuillez visiter notrepage d’accueilpour trouver le tutoriel XSLT.


Autres extensions