SELFHTML/Aides à la navigation XML/DTDs Règles pour les fichiers XML |
Espaces de nommage XML | |
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 conforme, mais non 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.
Vous pouvez définir dans un document XML des "îlots" avec des données de certains espaces de nommage.
<?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> |
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 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:
En travaillant avec des î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.
<?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> |
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"
.
Signes, jeux de caractères et parties non interprétées | |
Arborescence et nœuds d'un fichier XML | |
SELFHTML/Aides à la navigation XML/DTDs Règles pour les fichiers XML |
© 2001 Stefan Münz / © 2003 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org