XML Namespaces


XML Namespaces

Espaces de noms XML offrent une méthode pour éviter les conflits de noms d'éléments.

Conflits de noms

En XML, les noms d'éléments sont définis par le développeur. Il en résulte souvent un conflit lorsque l'on essaie de mélanger des documents XML à partir de différentes applications XML.
Ce code XML comporte des informations de table HTML:
<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
Ce code XML comporte des informations sur une table (un meuble):
<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 un élément <table>, mais les éléments ont un contenu différent et le sens.
Un analyseur XML ne saura pas comment gérer ces différences.

Résoudre le conflit de nom avec un préfixe

Les conflits de noms en XML peut facilement être évité en utilisant un préfixe de nom.
Ce code XML porte des informations sur un tableau HTML, et un meuble:
<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 éléments <table> ont des noms différents.

Espaces de noms XML - l'attribut xmlns

Lors de l'utilisation des préfixes en XML, un soi-disant espace de noms pour le préfixe doit être défini.
L'espace de noms est définie par l' attribut xmlns 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.w3schools.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, l'attribut xmlns dans la balise <table> donner le h: et F: les préfixes d'espace de noms qualifié.
Quand un espace de noms est défini pour un élément, tous les éléments enfants avec le même préfixe sont associés avec le même espace de noms.
Espaces de noms peuvent être déclarées dans les éléments sur lesquels ils sont utilisés ou dans l'élément racine XML:
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://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>
Remarque: Le URI de l'espace n'est pas utilisé par l'analyseur de rechercher des informations.
Le but est de donner l'espace de noms d'un nom unique. Cependant, souvent, les entreprises utilisent l'espace comme un pointeur vers une page Web contenant des informations d'espace de noms.
Essayez d'aller au http://www.w3.org/TR/html4/~~V .

Uniform Resource Identifier (URI)

Un Uniform Resource Identifier (URI) est une chaîne de caractères qui identifie une ressource sur Internet.
L'URI la plus courante est le Uniform Resource Locator (URL) qui identifie une adresse de domaine Internet. Un autre type, pas si fréquent de l'URI est le nom de la ressource universelle (URN).
Dans nos exemples, nous n'utiliserons URL.

Espaces de noms par défaut

Définir un espace de noms par défaut pour un élément qui nous sauve de l'utilisation de préfixes dans tous les éléments enfants. Il a la syntaxe suivante:
xmlns="namespaceURI"
Ce code XML comporte des informations de table HTML:
<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
Ce code XML porte des informations sur un meuble:
<table xmlns="http://www.w3schools.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 XML qui peut être utilisé pour transformer des documents XML en d'autres formats, comme HTML.
Dans le document XSLT ci-dessous, vous pouvez voir que la plupart des balises sont des balises HTML.
Les balises qui ne sont pas les balises HTML ont la xsl préfixe, identifié par les espaces 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>My CD Collection</h2>
  <table border="1">
    <tr>
      <th align="left">Title</th>
      <th 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 trouver notre tutoriel XSLT à notre page d'accueil .

0 commentaires:

Post a Comment

HELLO VISITORS THANKS FOR YOUR VISIT AND COMMENT