Recommandation XML-Namespace du W3C en version française

Statut du document traduit

Ceci est une traduction de la Recommandation du W3C portant sur les espaces de nommage dans XML

Cependant ce n'est pas la version officielle en français de la Recommandation. Seul le document original en anglais a valeur de norme. On peut l'obtenir à : http://www.w3.org/TR/REC-xml-names.

Avertissement

Des erreurs ont pu survenir malgré le soin apporté à ce travail.

Notes sur la traduction

Certains concepts sont difficiles à rendre en français ou peuvent nécessiter une explication, aussi les expressions originales en anglais viennent parfois en renfort dans le texte sous cette forme :
ex. traduction [ndt. translation]

D'autre part, certains liens renvoient sur des définitions de la recommandation XML 1.0 originale. Ces liens sont doublés vers leur version française et sont signalés ainsi : vf.

Cette version française intègre toutes les corrections survenues depuis la première parution de la recommandation en 1999. L'errata de la recommandation, qui est également traduit, est ainsi à jour en date du 19 février 2004 (voir l'errata traduit). Les erreurs répertoriées sont signalées dans le document de cette manière : « errata-NE01 ».

Archives compressées et autres formats

Cette traduction est disponible sous forme d'archive compressée et, le cas échéant, dans d'autres formats à l'adresse http://www.yoyodesign.org/doc/w3c/w3c.html.

Autres documents traduits

On peut consulter les traductions en français d'autres documents du W3C à
http://www.w3.org/Consortium/Translation/French

Notice légale

Copyright © 1994-2002 World Wide Web Consortium,
(Massachusetts Institute of Technology,
Institut National de Recherche en Informatique et en Automatique,
Keio University).
Tous droits réservés. Consulter la notice de copyright pour les productions du W3C.

REC-xml-names-19990114
W3C

Les espaces de nommage dans XML

World Wide Web Consortium 14 janvier 1999

Cette version :
http://www.w3.org/TR/1999/REC-xml-names-19990114
http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml
http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html
Dernière version :
http://www.w3.org/TR/REC-xml-names
Version précédente :
http://www.w3.org/TR/1998/PR-xml-names-19981117
Éditeurs :
Tim Bray (Société Textuality) <tbray@textuality.com>
Dave Hollander (Société Hewlett-Packard) <dmh@corp.hp.com>
Andrew Layman (Société Microsoft) <andrewl@microsoft.com>

Copyright  ©  1999 W3C (MIT, INRIA, Keio ), tous droits réservés. Les règles de responsabilité, de marque commerciale, d'usage des documents et de licence logicielle du W3C s'appliquent.

Statut de ce document

Ce document, qui a été revu par les membres du W3C et les tiers concernés, a été approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être utilisé comme matériel de référence ou cité comme norme de référence par un autre document. Le rôle du W3C, en produisant cette recommandation, est de mettre en lumière la spécification et d'en promouvoir le plus large déploiement. Ceci pour améliorer la fonctionnalité et l'interopérabilité du Web.

La liste des erreurs connues dans cette spécification est disponible à http://www.w3.org/XML/xml-names-19990114-errata.

Merci de signaler les erreurs survenues dans ce document à xml-names-editor@w3.org.

Résumé

Les espaces de nommage XML offrent une méthode simple pour qualifier les noms des éléments et des attributs utilisés dans des documents XML, en associant ceux-ci avec des espaces de nommage désignés par des références d'URI.

Table des matières

1. Motivation et sommaire
1.1 Une remarque sur la notation et sur l'usage
2. La déclaration des espaces de nommage
3. Les noms qualifiés
4. L'utilisation des noms qualifiés
5. L'application des espaces de nommage aux éléments et aux attributs
5.1 La portée d'un espace de nommage
5.2 L'espace de nommage implicite
5.3 L'unicité des attributs
6. La conformité des documents

Appendices

A. La structure interne des espaces de nommage XML (non normatif)
A.1 Les insuffisances de l'espace de nommage traditionnel
A.2 Les partitions de l'espace de nommage
A.3 Les types d'élément et les noms d'attribut développés
A.4 Les noms d'attribut développés uniques
B. Remerciements (non normatif)
C. Références

1. Motivation et sommaire

Nous envisageons des applications du Langage de Balisage Extensible (XML) où un seul document XML peut contenir des éléments et des attributs (regroupés ici sous l'intitulé « vocabulaire de balisage ») qui sont définis et utilisés par plusieurs modules logiciels. Une raison pour ceci : la modularité ; si un tel vocabulaire de balisage existe, bien compris et pour lequel des logiciels pratiques sont disponibles, il est préférable de ré-employer ce balisage plutôt que de le ré-inventer.

De tels documents, qui contiennent plusieurs vocabulaires de balisage, posent des problèmes de reconnaissance et de collision. Les modules logiciels doivent être capables de reconnaître les balises et les attributs que ceux-ci sont conçus pour traiter, même si survenaient des « collisions » quand le balisage destiné à un autre ensemble logiciel utilise les mêmes noms de type d'élément ou d'attribut.

Ces considérations entraînent que les constructions des documents devraient avoir des noms universels, dont la portée va au-delà de leur document conteneur. Cette spécification décrit un mécanisme, les espaces de nommage XML, qui réalise ceci.

[Définition :] Un espace de nommage XML est une collection de noms, identifiée par une référence d'URI [RFC2396], qui sont utilisés dans les documents XML comme types d'élément vf. et noms d'attribut vf. Les espaces de nommage XML diffèrent des « espaces de nommage » utilisés conventionnellement dans les disciplines informatiques en ce qu'ils ont une structure interne et qu'ils ne sont pas, mathématiquement parlant, des ensembles. Ces questions sont abordées au chapitre A. La structure interne des espaces de nommage XML.

[Définition :] Des références d'URI qui identifient des espaces de nommage sont considérées identiques quand elles sont semblables au caractère près. Noter que les références d'URI qui ne sont pas identiques dans ce sens peuvent en fait être fonctionnellement équivalentes. Comme exemple, les références d'URI qui diffèrent seulement par la casse ou qui se trouvent dans des entités externes ayant effectivement des URIs de base différents. « errata-NE04 » « errata-NE09 »

Les noms des espaces de nommage XML peuvent avoir la forme de noms qualifiés, qui contiennent un seul caractère deux-points séparant le nom en un préfixe d'espace de nommage et une partie locale. Le préfixe, qui correspond à une référence d'URI, détermine un espace de nommage. La combinaison de l'URI de l'espace de nommage universellement reconnu et du propre espace de nommage du document produit des identifiants universellement uniques. Des mécanismes sont fournis pour déterminer la portée du préfixe et l'espace de nommage implicite. « errata-NE10 »

Les références d'URI peuvent contenir des caractères qui ne sont pas admis dans les noms et, de ce fait, qui ne peuvent pas être employés directement dans un préfixe d'espace de nommage. Aussi, le préfixe d'espace de nommage sert de procuration pour une référence d'URI. On utilise une syntaxe, décrite plus loin, fondée sur l'attribut pour déclarer l'association du préfixe de l'espace de nommage avec une référence d'URI ; un logiciel qui reconnaît cette proposition d'espace de nommage doit reconnaître et réagir à ces déclarations et leur préfixe.

1.1 Une remarque sur la notation et sur l'usage

Noter que plusieurs non-terminaux des productions de cette spécification ne sont pas définis ici mais dans la spécification XML [XML]. Quand les non-terminaux définis ici ont les mêmes noms que ceux définis dans la spécification XML, les productions d'ici correspondent dans tous les cas à un sous-ensemble des chaînes trouvées par les non-terminaux correspondants de là-bas.

Dans les productions de ce document, l'expression CEN est une « contrainte d'espace de nommage », une des règles que doivent suivre les documents conformes à cette spécification.

Noter que tous les noms de domaines Internet, cités dans les exemples, sauf w3.org, sont fortuits et ne devraient pas être considérés comme ayant une quelconque importance.

2. La déclaration des espaces de nommage

[Définition :] Un espace de nommage est déclaré à l'aide d'une famille d'attributs réservés. Comme tel, le nom d'attribut doit être soit xmlns soit comporter le préfixe xmlns:. Ces attributs, comme tous les attributs XML, peuvent être fournis directement ou implicitement vf..

Les noms d'attribut pour la déclaration d'espace de nommage
[1] NomAttEspNom ::= NomAttPréfixé
NomAttImpl
[2] NomAttPréfixé ::= 'xmlns:' NomEspCondensé [ CEN : « XML » au début ]
[3] NomAttImpl ::= 'xmlns'
[4] NomEspCondensé ::= (Lettre vf. | '_') (CarNomEspCondensé)* /* Un Nom vf. XML, moins le « : » */
[5] CarNomEspCondensé ::= Lettre vf.Chiffre vf. | '.' | '-' | '_' | CarJonctif vf.ModificateurLettre vf.

[Définition :] La valeur vf. de l'attribut, une référence d'URI, est le nom de l'espace de nommage identifiant l'espace de nommage. Ce nom d'espace de nommage, pour atteindre son objectif, devrait avoir les caractéristiques d'unicité et de persistance. Ce n'est pas le but que celui-ci soit directement utilisable pour le rapport d'un schéma (s'il en existe un). Un exemple de syntaxe conçu pour cet usage est celui des Noms de Ressource Uniformes (URN) [RFC2141]. Cependant, il faudrait remarquer qu'on peut utiliser les URLs ordinaires de façon à atteindre les mêmes finalités.
« errata-NE12 »

[Définition :] Si le nom d'attribut correspond à l'expression NomAttPréfixé, alors la valeur de NomEspCondensé donne le préfixe de l'espace de nommage, qui est utilisé pour associer les noms des éléments et des attributs avec le nom de l'espace de nommage dans la valeur de l'attribut en regard de la portée de l'élément auquel la déclaration est attachée. Pour de telles déclarations, le nom de l'espace de nommage ne peut pas être vide.

[Définition :] Si le nom d'attribut correspond à celui indiqué par NomAttImpl, alors le nom de l'espace de nommage dans la valeur de l'attribut est celui de l'espace de nommage implicite en regard de la portée de l'élément auquel la déclaration est attachée. Dans une telle déclaration implicite, la valeur de l'attribut peut être vide. Les espaces de nommage implicites et le surclassement des déclarations sont abordés au chapitre 5. L'application des espaces de nommage aux éléments et attributs.

Un exemple de déclaration d'espace de nommage, qui associe le préfixe d'espace de nommage edi avec le nom d'espace de nommage http://ecommerce.org/schema :

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- le préfixe « edi » est lié à http://ecommerce.org/schema
       pour l'élément « x » et son contenu -->
</x>

Contrainte d'espace de nommage : « XML » au début
L'utilisation des préfixes qui commencent avec la séquence des trois lettres x, m, l, quelle que soit leur casse, est réservée à XML et à toutes les spécifications en relation avec XML. « errata-NE05 » « errata-NE06 »

3. Les noms qualifiés

[Définition :] Pour les documents XML conformes à cette spécification, certaines dénominations (les constructions correspondant au non-terminal Nom vf.) peuvent être données en tant que noms qualifiés, définis comme suit :

Nom qualifié
[6] NomQualifié ::= (Préfixe ':')? PartieLocale
[7] Préfixe ::= NomEspCondensé
[8] PartieLocale ::= NomEspCondensé

Le Préfixe fournit la partie préfixe de l'espace de nommage du nom qualifié et doit être associé avec une référence d'URI d'espace de nommage dans la déclaration de l'espace de nommage. [Définition :] La partie PartieLocale fournit la partie locale du nom qualifié.

Remarquer que le préfixe fait seulement office de représentant pour le nom de l'espace de nommage. Les applications devraient utiliser le nom de l'espace de nommage, et non le préfixe, pour la construction de noms dont la portée s'étend au-delà du document conteneur.

4. L'utilisation des noms qualifiés

Pour les documents XML conformes à cette spécification, les types d'élément sont donnés comme noms qualifiés, comme suit :

Les types d'élément
[9] BaliseO ::= '<' NomQualifié (S vf. Attribut vf. )* S? '>' [ CEN : Préfixe déclaré ]
[10] BaliseF ::= '</' NomQualifié S? '>' [ CEN : Préfixe déclaré ]
[11] BaliseÉlemVide ::= '<' NomQualifié (S Attribut)* S? '/>' [ CEN : Préfixe déclaré ]

Un exemple de nom qualifié faisant office de type d'élément :

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- l'espace de nommage de l'élément « prix » est http://ecommerce.org/schema -->
  <edi:prix monnaie='Euro'>32.18</edi:prix>
</x>

Les attributs sont des déclarations d'espace de nommage ou bien leurs noms sont donnés comme noms qualifiés :

Attribut
[12] Attribut ::= NomAttEspNom Égal vf. ValeurAtt vf.
NomQualifié Égal ValeurAtt [ CEN : Préfixe déclaré ]

Un exemple de nom qualifié faisant office de nom d'attribut :

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- l'espace de nommage de l'attribut « classeTaxe » est http://ecommerce.org/schema -->
  <ligne edi:classeTaxe="exemption">Aliment pour bébé</ligne>
</x>

Contrainte d'espace de nommage : Préfixe déclaré
Le préfixe d'espace de nommage, à moins d'être xml ou xmlns, doit avoir été déclaré dans un attribut de déclaration d'espace de nommage, soit dans la balise ouvrante de l'élément où on utilise le préfixe, soit dans un élément ancêtre (c'est-à-dire, un élément dans le contenu vf. duquel apparaît le balisage préfixé). Le préfixe xml est lié par définition au nom de l'espace de nommage http://www.w3.org/XML/1998/namespace. Le préfixe xmlns ne s'utilise que pour le rattachement à un espace de nommage, celui-ci n'est pas lui-même rattaché à un quelconque nom d'espace de nommage. « errata-NE05 »

Cette contrainte peut conduire à des difficultés opératoires au cas où l'attribut de déclaration d'espace de nommage ne serait pas fourni directement par l'entité document vf. XML, mais via un attribut implicite déclaré dans une entité externe. De telles déclarations pourraient ne pas être lues par un logiciel bâti sur un processeur XML non-validant. De nombreuses applications XML, vraisemblablement celles sensibles à l'espace de nommage, échouent à demander des processeurs validants. Pour le déroulement correct des opérations avec ces applications, les déclarations d'espaces de nommage doivent être fournies soit directement, soit via des attributs implicites déclarés dans le sous-ensemble interne de la Déclaration de Type de Document vf..
« errata-NE11 »

Les noms d'élément et les types d'attribut sont aussi donnés comme noms qualifiés quand ils apparaissent dans la DTD vf. :

Les noms qualifiés dans les déclarations
[13] déclTypeDoc ::= '<!DOCTYPE' S NomQualifié (S IdExterne)? vf. S? ('[' (déclBalisage vf.AppelEP vf.S)* ']' S?)? '>'
[14] déclÉlément ::= '<!ELEMENT' S NomQualifié S specContenu vf. S? '>'
[15] pc ::= (NomQualifiéchoix vf.séq vf.) ('?' | '*' | '+')?
[16] Mixte ::= '(' S? '#PCDATA' (S? '|' S? NomQualifié)* S? ')*'
| '(' S? '#PCDATA' S? ')'
[17] DéclListeAtt ::= '<!ATTLIST' S NomQualifié DéfAtt* S? '>'
[18] DéfAtt ::= S (NomQualifiéNomAttEspNom) S TypeAtt vf. S DéclValImpl vf.

5. L'application des espaces de nommage aux éléments et aux attributs

5.1 La portée d'un espace de nommage

La déclaration d'espace de nommage est sensée s'appliquer à l'élément sur lequel elle est spécifiée et à tous les éléments contenus dans celui-ci, à moins d'être surclassée par une autre déclaration d'espace de nommage avec une même partie NomAttEspNom « errata-NE07 » :

<?xml version="1.0"?>
<!-- tous les éléments ici sont explicitement dans l'espace de nommage HTML -->
<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>
  <html:head><html:title>Frobnostication</html:title></html:head>
  <html:body><html:p>Déplacé par 
    <html:a href='http://frob.com'>ici.</html:a></html:p></html:body>
</html:html>

On peut déclarer plusieurs préfixes d'espace de nommage comme attributs d'un seul élément, comme dans l'exemple suivant :

<?xml version="1.0"?>
<!-- les deux préfixes d'espace de nommage sont disponibles tout du long -->
<ouv:livre xmlns:ouv='urn:loc.gov:livres'
         xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <ouv:titre>Moins cher par douze</ouv:titre>
    <isbn:numero>1568491379</isbn:numero>
</ouv:livre>

5.2 L'espace de nommage implicite

Un espace de nommage implicite est censé s'appliquer à l'élément sur lequel il est déclaré (quand cet élément n'a pas de préfixe d'espace de nommage) et à tous les éléments sans préfixe contenus dans celui-ci. Si la référence d'URI dans une déclaration d'espace de nommage est vide, alors les éléments non-préfixés couverts par la déclaration ne sont pas sensés être dans un quelconque espace de nommage. Remarquer que les espaces de nommage implicites ne s'appliquent pas directement aux attributs. « errata-NE07 »

<?xml version="1.0"?>
<!-- les éléments sont dans l'espace de nommage HTML implicite -->
<html xmlns='http://www.w3.org/TR/REC-html40'>
  <head><title>Frobnostication</title></head>
  <body><p>Déplacé par 
    <a href='http://frob.com'>ici</a>.</p></body>
</html>

 

<?xml version="1.0"?>
<!-- les types d'élément non-préfixés sont issus de « livres » -->
<livre xmlns='urn:loc.gov:livres'
      xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <titre>Moins cher par douze</titre>
    <isbn:numero>1568491379</isbn:numero>
</livre>

Un exemple plus complet de portée d'espace de nommage :

<?xml version="1.0"?>
<!-- au début, l'espace de nommage implicite est « livres » -->
<livre xmlns='urn:loc.gov:livres'
      xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <titre>Moins cher par douze</titre>
    <isbn:numero>1568491379</isbn:numero>
    <remarque>
      <!-- retour vers l'espace de nommage implicite pour un commentaire -->
      <p xmlns='urn:w3-org-ns:HTML'>
          C'est un livre <i>amusant</i> !
      </p>
    </remarque>
</livre>

On peut attribuer la chaîne vide à l'espace de nommage implicite. Ceci produit le même effet, dans la portée de la déclaration, que s'il n'y avait pas d'espace de nommage implicite.

<?xml version='1.0'?>
<Bieres>
  <!-- l'espace de nommage implicite est maintenant celui de HTML -->
  <table xmlns='http://www.w3.org/TR/REC-html40'>
   <th><td>Nom</td><td>Origine</td><td>Description</td></th>
   <tr> 
     <!-- aucun espace de nommage implicite pour les cellules de la table -->
     <td><marque xmlns="">Hinano</marque></td>
     <td><origine xmlns="">Papeete, Tahiti</origine></td>
     <td>
       <detail xmlns=""><classe>Lager</classe><houblon>Savoureux</houblon>
         <pour>Mousse généreuse, légère en alcool, bière rafraîchissante</pour>
         <contre>Ne se conserve pas</contre>
         </detail>
        </td>
      </tr>
    </table>
  </Bieres>

5.3 L'unicité des attributs

Dans les documents XML conformes à cette spécification, aucune balise ne peut contenir d'attributs qui :

  1. ont des noms identiques ;
  2. ont des noms qualifiés avec une même partie locale et avec des préfixes ayant été rattachés à des noms d'espaces de nommage qui sont identiques.

Par exemple, aucune des balises ouvrantes faux qui suivent n'est correcte :

<!-- http://www.w3.org est rattaché à n1 et n2 -->
<x xmlns:n1="http://www.w3.org" 
   xmlns:n2="http://www.w3.org" >
  <faux a="1"     a="2" />
  <faux n1:a="1"  n2:a="2" />
</x>

Par contre, toutes les balises ouvrantes suivantes sont correctes, la seconde parce que l'espace de nommage implicite ne s'applique pas aux noms d'attributs :

<!-- http://www.w3.org est rattaché à n1 et c'est l'espace de nommage implicite -->
<x xmlns:n1="http://www.w3.org" 
   xmlns="http://www.w3.org" >
  <juste a="1"     b="2" />
  <juste a="1"     n1:a="2" />
</x>

6. La conformité des documents « errata-NE08 »

Pour que les documents XML soient conformes à cette spécification, les types d'élément et les noms d'attribut doivent correspondre à la production d'un NomQualifié et doivent satisfaire aux « contraintes des espaces de nommage ».

Un document XML est conforme à cette spécification si tous les autres jetons de ce document, qui doivent correspondre, pour la conformité XML, à la production XML d'un Nom vf., correspondent aussi à la production d'un NomEspCondensé dans cette spécification.

Dans un tel document, la conformité entraîne que :

À strictement parler, les valeurs des attributs déclarés de type ID, IDREF(S), ENTITY(IES) et NOTATION étant aussi du type Nom, par là-même ne devraient pas contenir de caractère deux-points. Cependant, le type déclaré des valeurs d'attribut n'est seulement disponible que pour les processeurs qui lisent les déclarations de balisage, par exemple, les processeurs de validation vf.. Ainsi, à moins que l'emploi d'un processeur de validation n'ait été prescrit, le contenu de ces valeurs d'attribut ne présente aucune garantie de vérification pour la conformité à cette spécification.


Appendices

A. La structure interne des espaces de nommage XML (non normatif)

A.1 Les insuffisances de l'espace de nommage traditionnel

Dans les disciplines faisant appel au calcul, le terme « espace de nommage » se rapporte par convention à un jeu de noms, c'est-à-dire, une collection ne contenant pas d'éléments en double. Cependant, considérer les noms employés dans un balisage XML comme un tel espace de nommage nuirait grandement à leur utilité. Le premier usage de tels noms dans les documents XML réside dans l'identification de structures logiques dans les documents par des modules logiciels, comme les processeurs de requête, les moteurs de rendus dirigés par des feuilles de style et les validateurs dirigés par des schémas. Considérons l'exemple suivant :

<section><titre>Séance de dédicace</titre>
<signature>
  <auteur titre="M." nom="Vikram SETH" />
  <livre titre="A Suitable Boy" prix="$22.95" /></signature>
<signature>
  <auteur titre="Dr" nom="Oliver SACKS" />
  <livre titre="The Island of the Color-Blind" prix="$12.95" /></signature>
</section>

Dans cet exemple, le nom titre apparaît trois fois dans le balisage et celui-ci seul ne fournit manifestement pas une information suffisante pour permettre son traitement correct par un module logiciel.

Une autre source de problèmes provient de l'emploi d'attributs « globaux », comme illustré dans cet exemple, un fragment de document XML qui doit être rendu à l'aide d'une feuille de style CSS :

<RESERVATION>
 <NOM HTML:CLASS="SansSerifGrandeTaille">LAYMAN, A</NOM>
 <SIEGE CLASS="Y" HTML:CLASS="vraimentImportant">33B</SIEGE>
 <DEPART>1997-05-24T07:55:00+1</DEPART></RESERVATION>

Dans ce cas, l'attribut CLASS, qui décrit la base tarifaire et prend des valeurs telles que "J", "Y" ou "C", se distingue à tous les niveaux sémantiques de l'attribut HTML:CLASS, qui est employé pour simuler une richesse syntaxique en HTML, comme un moyen de dépasser le répertoire limité de l'élément par sous-classement.

XML 1.0 ne dispose pas de mécanisme incorporé pour déclarer des attributs « globaux » ; des items comme l'attribut HTML CLASS ne sont globaux que dans leur description textuelle et leur interprétation par des applications HTML. Cependant, de tels attributs, une fonction importante les distinguant étant leur nom unique, apparaissent couramment dans diverses applications.

A.2 Les partitions de l'espace de nommage XML

En vue de rendre utile à la fois les noms qualifiés et non-qualifiés dans l'accomplissement de leur mission, nous identifions les noms qui apparaissent dans un espace de nommage XML comme appartenant à l'un parmi plusieurs espaces de nommage traditionnels disjoints (c'est-à-dire, structuré en ensembles), appelés partitions d'espace de nommage. Ces partitions sont :

La partition de tous les types d'élément
Tous les types d'élément dans un espace de nommage XML apparaissent dans cette partition. Chacun d'eux possède une partie locale unique ; la combinaison du nom de l'espace de nommage et de la partie locale identifie de façon unique le type d'élément.
La partition des attributs globaux
Cette partition contient les noms de tous les attributs définis comme étant globaux dans cet espace de nommage. La seule caractéristique requise pour un attribut global, c'est que son nom soit unique dans la partition des attributs globaux. Cette spécification ne fait aucune mention sur l'usage correct de tels attributs. La combinaison du nom de l'espace de nommage et de celui de l'attribut identifie de façon unique l'attribut global.
Les partitions par type d'élément
Chacun des types de la partition de tous les types d'éléments est accompagné d'un espace de nommage dans lequel apparaissent les noms des attributs non-qualifiés fournis pour l'élément en question. C'est un espace de nommage traditionnel parce que la présence de noms d'attribut en double pour un élément est interdite par XML 1.0. La combinaison du nom de l'attribut avec le type et le nom de l'espace de nommage de l'élément identifie de façon unique chaque attribut non-qualifié.

Pour les documents XML conformes à cette spécification, les noms de tous les attributs qualifiés (préfixés) sont assignés à la partition des attributs globaux et les noms de tous les attributs non-qualifiés à la partition par type d'élément appropriée.

A.3 Les types d'élément et les noms d'attribut développés

Par commodité, pour spécifier les règles et faire des comparaisons, nous définissons une forme développée, exprimée ici dans la syntaxe XML de l'élément, pour chaque type d'élément et chaque nom d'attribut d'un document XML.

[Définition :] Un type d'élément développé s'exprime comme un élément XML vide de type TypeÉlémDév. Celui-ci requiert un attribut type qui en indique le type PartieLocale et un attribut optionnel ns qui en donne, si l'élément est qualifié, le nom de l'espace de nommage.

[Définition :] Un nom d'attribut développé s'exprime comme un éléement XML vide de type NomAttDév. Celui-ci requiert un attribut name qui en donne le nom. Si l'attribut est global, il requiert un attribut ns qui donne le nom de son espace de nommage ; sinon, il requiert un attribut eltype, qui indique le type de l'élément auquel il se rattache, et, éventuellement, un attribut optionnel elns, qui donne le nom de l'espace de nommage de l'élément auquel il se rattache, si ce nom est connu.

Des variations à partir des exemples donnés plus haut illustrent le fonctionnement des types d'élément et des noms d'attribut développés. Chacun des deux fragments suivants est suivi par une table montrant le développement des noms :

<!-- 1 --> <section xmlns='urn:com:les-livres-c-nous'>
<!-- 2 -->   <titre>Séance de dédicace</titre>
<!-- 3 -->   <signature>
<!-- 4 -->     <auteur titre="M." nom="Vikram SETH" />
<!-- 5 -->     <livre titre="A Suitable Boy" prix="$22.95" />
             </signature>
           </section>

Les noms se développeraient comme ceci :

LigneNomDéveloppé
1section <TypeÉlémDév type="section" ns="urn:com:les-livres-c-nous" />
2 titre<TypeÉlémDév type="titre" ns="urn:com:les-livres-c-nous" />
3 signature<TypeÉlémDév type="signature" ns="urn:com:les-livres-c-nous" />
4 auteur<TypeÉlémDév type="auteur" ns="urn:com:les-livres-c-nous" />
4 titre <NomAttDév name='titre' eltype="auteur" elns="urn:com:les-livres-c-nous" />
4 nom <NomAttDév name='nom' eltype="auteur" elns="urn:com:les-livres-c-nous" />
5 livre<TypeÉlémDév type="livre" ns="urn:com:les-livres-c-nous" />
5 titre<NomAttDév name='titre' eltype="livre" elns="urn:com:les-livres-c-nous" />
5 prix<NomAttDév name='prix' eltype="livre" elns="urn:com:les-livres-c-nous" />

 

<!-- 1 --> <RESERVATION xmlns:HTML="http://www.w3.org/TR/REC-html40">
<!-- 2 --> <NOM HTML:CLASS="SansSerifGrandeTaille">LAYMAN, A</NOM>
<!-- 3 --> <SIEGE CLASS="Y" HTML:CLASS="MonotypeGrandeTaille">33B</SIEGE>
<!-- 4 --> <HTML:A HREF='/cgi-bin/ResStatus'>Vérifier le dossier</HTML:A>
<!-- 5 --> <DEPART>1997-05-24T07:55:00+1</DEPART></RESERVATION>

et comme cela :

1 RESERVATION<TypeÉlémDév type="RESERVATION" />
2 NOM<TypeÉlémDév type="NOM" />
2 HTML:CLASS <NomAttDév name="CLASS" ns=http://www.w3.org/TR/REC-html40 > « errata-NE02 » « errata-NE03 »
3 SIEGE<TypeÉlémDév type="SIEGE" />
3 CLASS<NomAttDév name="CLASS" eltype="SIEGE" />
3 HTML:CLASS<NomAttDév name="CLASS" ns="http://www.w3.org/TR/REC-html40" />
4 HTML:A<TypeÉlémDév type="A" ns="http://www.w3.org/TR/REC-html40" />
4 HREF<NomAttDév name="HREF" eltype="A" elns="http://www.w3.org/TR/REC-html40" />
5 DEPART<TypeÉlémDév type="DEPART" />

A.4 Les noms d'attribut développés uniques

On peut implémenter facilement la contrainte exprimée plus haut au chapitre « 5.3 L'unicité des attributs » en exigeant qu'aucun élément n'ait deux attributs dont les noms développés soient équivalents, c'est-à-dire ayant les mêmes paires attribut/valeur.

B. Remerciements (non normatif)

Ce travail reflète les suggestions d'un très grand nombre de personnes, précisément celles des membres du Groupe de Travail XML et du Groupe d'Intérêt Particulier du World Wide Web Consortium et celles des participants à l'Activité sur les Méta-données du W3C. Les contributions de Charles FRANKSTON de la société Microsoft furent particulièrement déterminantes.

C. Références

RFC2141
IETF (Internet Engineering Task Force) RFC 2141: URN Syntax, ed. R. Moats. Mai 1997.
RFC2396
IETF (Internet Engineering Task Force) RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, eds. T. Berners-Lee, R. Fielding, L. Masinter. Août 1998.
XML
Extensible Markup Language (XML) 1.0, eds. Tim Bray, Jean Paoli, and C. M. Sperberg-McQueen. 10 février 1998. Disponible à http://www.w3.org/TR/REC-xml vf..