SELFHTML

Espaces de nommage XML

Page d'information: vue d'ensemble

vers le bas Clarté universelle des éléments et attributs
vers le bas Définir des îlots de données avec un espace de nommage
vers le bas Utiliser simultanément plusieurs espaces de nommage

 vers le bas 

Clarté universelle des éléments et attributs

Un document XML est constitué essentiellement d'éléments et d'attributs. Par la référence à une DTD, ces éléments et attributs appartiennent à l'espace de nommage de cette DTD. Si la déclaration de type de document manque cependant et si le document est certes Autre page d'information conforme, mais non Autre page d'information valide, alors il n'y a pas d'appartenance claire. Il reste incertain d'"où" (de quel espace de nommage) viennent les noms d'attributs et d'éléments utilisés. À cela, il reste la possibilité de mentionner explicitement un espace de nommage pour un nom d'élément ou un nom d'attribut.

La désignation de l'espace de nommage est particulièrement importante quand les noms d'éléments ou d'attributs provenant d'espaces de nommage différents se contredisent. Supposons qu'il y ait deux fois, dans un document XML un élément nommé div. Une fois, il se réfère à un espace de nommage distinct et une fois il doit remplir le rôle d'un élément HTML. Ce n'est que par la référence à un espace de nommage déterminé qu'il devient clair dans ce cas dans quel "contexte" l'élément doit être interprété.

à cette fin, le consortium W3 a introduit le concept des noms qualifiés (qualified names). Les noms qualifiés comprennent toujours un préfixe, qui désigne l'espace de nommage et une partie locale du nom, qui désigne le nom de l'élément ou de l'attribut dans l'espace de nommage. En travaillant simultanément avec plusieurs espaces de nommage, il est important de noter des noms qualifiés.

 vers le hautvers le bas 

Définir des îlots de données avec un espace de nommage

Vous pouvez définir dans un document XML des "îlots" avec des données de certains espaces de nommage.

Exemple:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<livre xmlns="http://www.monserveur.fr/XML/livre">
<chapitre numero="1">
  <html xmlns="http://www.w3.org/TR/REC-html-40">
    <head><titre>Introduction</titre></head>
    <body>
     <h1>Introduction</h1>
     <p>Le livre commence par ce texte...</p>
    </body>
   </html>
</chapitre>
</livre>

Explication:

L'exemple montre un document XML. Il contient un élément document nommé livre. Dans son repère d'ouverture est contenue une déclaration d'espace de nommage XML. Pour ce faire, l'attribut xmlns= est noté dans le repère d'ouverture (xmlns = XML name space, donc espace de nommage XML). Derrière une Autre page d'information URIsuit immédiatement; elle mentionne à quel autre espace de nommage il sera fait référence dans cet élément. Il n'est pas indispensable que cette URI soit une adresse pouvant être appelée. Il s'agit d'une pure convention comparable à une attribution de nom sans ambiguïté. Pour vos propres langages XML, vous pouvez attribuer ce nom vous-même. Dans l'exemple l'adresse http://www.monserveur.fr/XML/livre a été choisie. l'élément livre proprement-dit et ses éléments subordonnés (éléments-enfants) - par exemple l'élément chapitre - se réfèrent maintenant à l'espace de nommage défini. Sous l'élément chapitre de l'exemple il y a pourtant à nouveau un élément avec déclaration d'espace de nommage: un élément html avec l'attribut xmlns. En ce qui concerne HTML 4.0 le consortium W3 prévoit pour le faire la mention http://www.w3.org/TR/REC-html-40. Tous les éléments enfants qui sont maintenant placés entre <html> et </html> font partie de l'espace de nommage HTML (ou bien: de l'ilôt de données HTML).

L'exemple contient donc des espaces de nommage imbriqués l'un dans l'autre. On peut représenter ainsi optiquement sa structure grossière:

 vers le hautvers le bas 

Utiliser simultanément plusieurs espaces de nommage

En travaillant avec des vers le bas îlots de données les espaces de nommage sont séparés proprement les uns des autres par la hiérarchie des éléments. Il est toutefois également possible de mélanger des espaces de nommage. Pour ce faire, il vous faut noter les mentions de préfixe pour affecter à chaque fois l'espace de nommage auquel vous pensez.

Exemple:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<commande xmlns:produit="http://localhost/XML/produit" xmlns:client="http://localhost/XML/client">
 <produit:numero>p49393</produit:numero>
 <produit:nom>JXY Rasierer VC100</produit:nom>
 <produit:quantite>1</produit:quantite>
 <produit:prix>69,--</produit:prix>
 <client:numero>c2029</client:numero>
 <client:nom>Marius, Escartefigues</client:nom>
 <client:adresselivraison>Cours Mirabeau 14, 13100 Aix en Provence</client:adresselivraison>
</commande>

Explication:

Dans l'exemple, il s'agit d'une structure de commande. Une commande typique accède à deux bases de données différentes: pour le produit commandé à la base de données des produits en stock et pour celui qui commande à la base de données clients. C'est ce qui est exprimé dans l'exemple de la façon suivante: dans le repère d'ouverture de l'élément commande sont placées deux déclarations d'espaces de nommage: la première pour produit et la deuxième pour client. Entre <commande> et </commande> on doit pouvoir travailler avec les éléments des deux espaces de nommage. À cet effet des préfixes ont été définis dans les déclarations des espaces de nommage. À la place d'un simple attribut xmlns= on a noté ici xmlns:produit= et xmlns:client=, donc xmlns, suivi de deux points et d'un nom (le tout sans espace qui sépare) Les noms comme dans l'exemple produit et client peuvent être choisis librement. Comme attribution de valeur à l'attribut ainsi défini suit par convention une URI prescrite. Dans l'exemple http://localhost/XML/produit et http://localhost/XML/client ont été choisies.

Pour les éléments placés à l'intérieur de <commande> et </commande> , il est fait référence, grâce au préfixe défini, à l'espace de nommage désiré. produit:numero fait par exemple référence à l'espace de nommage qui a été défini avec xmlns:produit="http://localhost/XML/produit", alors que client:numero fait référence à l'espace de nommage qui a été défini avec xmlns:client="http://localhost/XML/client".

 vers le haut
page suivante Autre page d'information Signes, jeux de caractères et parties non interprétées
page précédente Autre page d'information Arborescence et nœuds d'un fichier XML
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org

>