Traduction de la recommandation
xml:id Version 1.0
du 9 septembre 2005

Statut du document traduit

Références

Avertissement

Cette traduction d'un document du W3C n'est pas la version officielle en français : seul le document original en anglais a valeur de référence.

Bien qu'elle ait été vérifiée, la traduction peut comporter des erreurs.

Supports de la traduction

Les notes de traduction peuvent se présenter dans le texte sous deux formes :

  1. L'une explicite : traduction [NdT. translation]
  2. L'autre affiche la note au survol du pointeur : traduction

Les liens vers un document du W3C sont doublés vers une traduction quand elle existe :
un document du W3C→vf

Télécharger une archive

Cf. les archives disponibles pour les traductions hébergées sur ce site.

Les traductions des documents du W3C

Le World Wide Web Consortium tient un répertoire des traductions disponibles.

Notice légale

Copyright © 1994-2005 World Wide Web Consortium,
(Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University).
Tous droits réservés. Consulter la notice de copyright pour les productions du W3C.


W3C

xml:id version 1.0

Recommandation du W3C du 9 septembre 2005

Cette version :
http://www.w3.org/TR/2005/REC-xml-id-20050909/
Dernière version :
http://www.w3.org/TR/xml-id/
Version précédente :
http://www.w3.org/TR/2005/PR-xml-id-20050712/
Rédacteurs :
Jonathan Marsh, Microsoft <jmarsh@microsoft.com>
Daniel Veillard, Invited Expert <daniel@veillard.com>
Norman Walsh, Sun Microsystems <Norman.Walsh@Sun.COM>

Veuillez consulter la liste des errata de ce document, laquelle peut contenir des corrections normatives.

Cf. d'éventuelles traductions.

Ce document est également disponible dans le format non normatif suivant : XML.


Résumé

Ce document définit le rôle de l'attribut xml:id comme attribut de type ID dans les documents XML et son traitement afin d'identifier les valeurs de type ID en l'absence d'une validation, sans recourir à des ressources externes ni à un sous-ensemble de DTD interne.

Statut de ce document

Cette section décrit le statut de ce document au moment de sa publication. D'autres documents peuvent venir le remplacer. On peut trouver une liste des publications actuelles du W3C et la dernière révision de ce rapport technique dans l'index des rapports techniques du W3C à http://www.w3.org/TR/.

Ce document est une recommandation du W3C qui a été développé par le groupe de travail XML Core du W3C qui fait partie de l'activité XML. Il a été revu par les membres du W3C et des tiers intéressés et a été approuvé par le Directeur. C'est un document stable qui peut servir de matériel de référence ou être cité comme référence normative par d'autres documents. Le rôle du W3C en produisant la recommandation consiste à attirer l'attention sur la spécification et à en promouvoir un large déploiement. Cela participe à la fonctionnalité et à l'interopérabilité du Web.

Seule la version originale en anglais est normative. Des traductions de ce document sont éventuellement disponibles.

Pour toutes les remarques concernant ce document, veuillez les adresser à la liste de diffusion public-xml-id@w3.org qui tient des archives publiques. Une liste des errata de cette édition est disponible.

Ce document définit le rôle de l'attribut xml:id comme attribut de type ID dans les documents XML et son traitement afin d'identifier des valeurs de type ID en l'absence d'une validation, sans recourir à des ressources externes ni à un sous-ensemble de DTD interne.

Ce document s'appuie sur la recommandation proposée pour xml:id version 1.0 du 12 juillet 2005. Les commentaires en retour reçus au cours de la période de révision se sont concrétisés par des changements mineurs de la rédaction. Les preuves de l'interopérabilité entre au moins deux mises en œuvre de cette spécification sont documentées dans le rapport de mise en œuvre. Une batterie de tests est également disponible.

Ce document a été produit sous couvert de la politique de brevetabilité du W3C du 5 février 2004. Le groupe de travail tient à disposition une liste publique des divulgations de brevets concernant ce document ; cette page contient également des instructions pour divulguer (et exclure) un brevet. Quiconque aurait connaissance de l'existence d'un brevet qu'il estime contenir une (ou des) revendication(s) essentielle(s) concernant cette spécification devrait divulguer cette information conformément à la section 6 de la politique de brevetabilité du W3C.

Table des matières

Annexes


1 Introduction

Les spécifications [XML 1.0] and [XML 1.1] fournissent un mécanisme permettant d'annoter les éléments avec des identificateurs unique. Ce mécanisme consiste à déclarer un attribut comme étant de type ID, en suite de quoi l'analyseur effectuera une validation selon laquelle :

Les déclarations dans le sous-ensemble de DTD interne→vf d'un document XML peuvent établir que les attributs ont le type ID. Toutefois, le traitement du sous-ensemble de DTD externe est optionnel pour les processeurs XML conformes ; certaines spécifications, notamment [SOAP], interdisent formellement les DTD, ce qui ne laisse aucune garantie, en ce qui concerne les consommateurs du document XML, que ceux-ci réussissent à reconnaître les identificateurs.

On peut également déclarer les identificateurs au travers de mécanismes externes. Les schémas XML [Les schémas XML] sont particulièrement intéressants car ils fournissent un type xs:ID ayant les mêmes contraintes d'unicité et de validité que XML. Pourtant, il n'y a aucune garantie pour que les consommateurs disposent du bon schéma ni, le cas échéant, qu'ils le traitent.

Afin de rendre fiable la liaison aux sous-ressources XML, que celles-ci soient valides ou non, il est souhaitable de disposer d'un mécanisme au moyen duquel tous les processeurs XML→vf conformes pourront reconnaître des identificateurs d'élément uniques. Cette spécification permet aux auteurs d'identifier les éléments par leur valeur ID, que tout processeur pourra reconnaître, sans se soucier de la disponibilité ou de l'existence de déclarations internes ou bien externes.

Un autre problème tient au fait que les identificateurs fondés sur un DTD et ceux fondés sur un schéma sont exposés au travers de mécanismes conceptuels différents, respectivement, la propriété de l'ensemble d'information (infoset) type d'attribut et la famille de propriétés définition de type. Un mécanisme uniforme de reconnaissance des identificateurs est souhaitable.

Cette spécification fournit ce mécanisme : elle décrit la sémantique des attributs xml:id. Elle a été conçue comme une couche séparée du traitement tout en étant compatible avec les technologies de validation existantes. Les développeurs sont encouragés à mettre en œuvre le traitement xml:id et à faire en sorte que l'affectation de type ID constitue le comportement par défaut de leurs processeurs.

Un principe directeur dans l'élaboration de cette spécification a été que le résultat d'un traitement xml:id soit le même que celui qui aurait été obtenu si le processeur avait vu et utilisé une déclaration appropriée.

2 La terminologie

[Définition : Dans cette spécification, on interprétera les mots-clés doit(ven)t, ne doi(ven)t pas, obligatoire, devra (ou devront), ne devra (devront) pas, devrai(en)t, ne devrai(en)t pas, recommandé, peu(ven)t et optionnel conformément au document [IETF RFC 2119]].

[Définition : Un processeur xml:id est un module logiciel travaillant de pair avec un processeur XML afin de fournir un accès aux identificateurs dans un document XML].

[Définition : Une condition d'erreur xml:id est une erreur non fatale qui se produit lorsqu'un processeur xml:id découvre qu'un document n'a pas respecté les contraintes de cette spécification].

La validation est le processus consistant à comparer un document XML (ou une partie d'un document XML) contre une grammaire ou un ensemble de règles afin de déterminer si la structure réelle du document satisfait aux contraintes de la grammaire ou aux règles. Certaines technologies de validation réalisent également une affectation de type, en évaluant non seulement si le document satisfait aux contraintes indiquées mais aussi en déterminant, par exemple, quels (éléments et/ou) attributs sont de type ID.

Bien que la validation et l'affectation de type s'effectuent souvent ensemble, ce ne sont pas le même processus. Par exemple, un processeur XML 1.0 non validant peut ne réaliser l'affectation de type qu'en utilisant les déclarations du sous-ensemble interne, sans jamais être informé de la validité structurelle du document.

[Définition : Le processus d'affectation de type ID fait que la valeur de l'attribut xml:id soit du type ID]. Souvent, elle se réalisera en fixant la valeur du type de l'attribut à "ID" dans l'ensemble d'information (infoset) ou dans l'ensemble d'information après validation du schéma (PSVI), mais ce n'est pas le seul mécanisme possible.

Remarque :

Le traitement des valeurs ID au niveau de l'application, y compris quels éléments peuvent être en réalité adressés par telles valeurs d'ID, n'est pas défini par cette spécification.

La syntaxe

Selon les spécifications [Les espaces de nommage dans XML] et [Les espaces de nommage dans XML 1.1], l'usage des préfixes commençant par xml est réservé à XML et aux spécifications de la famille XML. Cette spécification autorise l'usage de l'attribut xml:id comme syntaxe commune aux identificateurs dans XML avec la sémantique décrite ici.

Les auteurs de documents XML sont invités à nommer leurs attributs de type ID par xml:id pour favoriser l'interopérabilité de ces identificateurs sur le Web.

Pour les processeurs XML sensibles aux espaces de nommage, le préfixe xml est lié au nom d'espace de nommage http://www.w3.org/XML/1998/namespace comme décrit dans [Les espaces de nommage dans XML] et [Les espaces de nommage dans XML 1.1]. Remarquez que les processeurs XML non sensibles aux espaces de nommage peuvent toujours utiliser xml:id.

4 Le traitement des attributs xml:id

Chaque attribut xml:id est traité de la manière suivante :

  1. La valeur de l'attribut est normalisée conformément aux règles de normalisation de valeur d'attribut→vf pour les attributs de type ID. Pour plus de précisions, cf. E La normalisation de valeur d'attribut pour les valeurs de type ID.

    La propriété de l'ensemble d'information valeur normalisée est mise à jour en utilisant la valeur normalisée.

  2. L'affectation de type ID est faite avec la valeur normalisée.

Un processeur xml:id doit s'assurer que les contraintes suivantes soient respectées pour tous les attributs xml:id :

Un processeur xml:id devrait s'assurer que la contrainte suivante soit respectée :

Une condition d'erreur xml:id se produit pour tout attribut xml:id ne satisfaisant pas aux contraintes.

Le processeur xml:id effectue une affectation de type ID pour tous les attributs xml:id, même ceux ne satisfaisant pas aux contraintes.

Un processeur xml:id devrait mettre à jour la propriété de l'ensemble d'information rérérences, comme décrit dans la section 2.3 de la spécification [L'ensemble d'information XML], ainsi que toutes les structures spécifiques de la mise en œuvre utilisées pour le référencement croisé, afin de répercuter les résultats de l'affectation de type ID.

Beaucoup de technologies de validation impose la contrainte selon laquelle un élément XML ne peut avoir au plus qu'un seul attribut de type ID. Le traitement xml:id ne l'impose pas.

Cette spécification définit le traitement xml:id mais c'est à l'application de déterminer quand ce traitement intervient. Les utilisateurs d'applications offrant des facilités pour modifier les documents XML peuvent raisonnablement espérer qu'un traitement xml:id interviendra à chaque fois qu'un changement se produira sur une valeur de type ID.

5 La notification de l'application

Lorsqu'une affectation de type ID se produit, le processeur xml:id doit signaler les attributs xml:id affectés à l'application. La manière dont la notification a lieu dépend de la mise en œuvre.

La condition essentielle étant que l'application soit mise au courant des résultats d'affectation de type ID.

6 Les conditions d'erreur

La violation d'une contrainte dans cette spécification se traduit par une condition d'erreur xml:id. Ces erreurs, qui ne sont pas fatales, devraient être signalées par le processeur xml:id. Au nom de l'interopérabilité, il est fortement recommandé de ne pas ignorer silencieusement les conditions d'erreur xml:id.

7 La conformité

7.1 La conformité à xml:id

Pour les applications appuyées sur des processeurs XML→vf et recourant à des technologies de validation, la conformité à xml:id consiste à utiliser la construction xml:id comme expliqué dans la section 4 Le traitement des attributs xml:id, en respectant en même temps les contraintes de cette spécification et les règles de la technologie de validation concernée.

Pour les applications appuyées sur des processeurs XML→vf non validants, la conformité à xml:id est définie par la reconnaissance des attributs xml:id comme expliqué dans la section 4 Le traitement des attributs xml:id, en respectant les contraintes de cette spécification.

La conformité aux contraintes qui doivent l'être est obligatoire. Le respect des autres contraintes par les applications est également recommandé. Cette spécification ne définit aucune contrainte optionnelle simple.

Un document est conforme à cette spécification si son traitement ne génère aucune condition d'erreur xml:id.

7.2 La conformité à l'ensemble d'information XML

Cette spécification est conforme à [L'ensemble d'information XML]. Les items d'information suivants doivent être présents dans les ensembles d'information en entrée d'un traitement correct :

  • Les items d'information d'élément avec la propriété attributs.

  • Les items d'information d'attribut avec les propriétés nom d'espace de nommage, nom local et valeur normalisée.

En outre, les propriétés suivantes doivent être présentes dans l'ensemble d'information en sortie :

  • Les propriétés type d'attribut sur les items d'information d'attribut.

8 L'extensibilité

Cette spécification n'est pas extensible. Les concepteurs d'applications n'ont pas la possibilité d'altérer le nom de l'attribut xml:id, l'ensemble des valeurs d'attribut considérées comme des types ID, l'emplacement (ou les emplacements) où celles-ci peuvent apparaître, ou de faire une quelconque extension.

A Références

IETF RFC 2119
RFC 2119 : Les mots-clés à utiliser dans les RFC pour indiquer les degrés d'obligation. Internet Engineering Task Force, 1997. (cf. http://www.ietf.org/rfc/rfc2119.txt.)
XML 1.0
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., rédacteurs. Le langage de balisage extensible (XML 1.0 (3ème édition)→vf (1ère édition). World Wide Web Consortium, 2004. (cf. http://www.w3.org/TR/REC-xml/.)
XML 1.1
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., rédacteurs. Le langage de balisage extensible (XML) 1.1→vf. World Wide Web Consortium, 2004. (cf. http://www.w3.org/TR/xml11/.)
L'ensemble d'information XML
John Cowan and Richard Tobin, rédacteurs. L'ensemble d'information XML (2ème édition)→vf (1ère édition). World Wide Web Consortium, 2004. (cf. http://www.w3.org/TR/xml-infoset/.)
Les espaces de nommages dans XML
Tim Bray, Dave Hollander et Andrew Layman, rédacteurs. Les espaces de nommage dans XML→vf. World Wide Web Consortium, 1999. (cf. http://www.w3.org/TR/REC-xml-names/.)
Les espaces de nommage dans XML 1.1
Tim Bray, Dave Hollander, Andrew Layman, and Richard Tobin, rédacteurs. Les espaces de nommage dans XML 1.1→vf. World Wide Web Consortium, 2004. (cf. http://www.w3.org/TR/xml-names11/.)

B Références (non normatif)

Les schémas XML
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, rédacteurs. XML Schema - Tome 1 : Structures→vf (1ère édition). World Wide Web Consortium, 2001. (cf. http://www.w3.org/TR/xmlschema-1/.)
SOAP
Martin Gudgin, Marc Hadley, Noah Mendelsohn, et. al., rédacteurs. SOAP version 1.2 partie 1 : Structure d'échange de messages→vf. World Wide Web Consortium, 2003. (cf. http://www.w3.org/TR/soap12-part1/.)

C L'impact sur la canonisation (non normatif)

La spécification XML canonique version 1.0 décrit un processus par lequel les attributs dans l'espace de nommage XML (préfixe xml:) sont hérités dans un document canonisé. Alors que cela produit un résultat raisonnable avec les attributs xml:lang ou xml:space, le traitement des attributs xml:id par ce moyen produira probablement des documents contenant des conditions d'erreur xml:id, en particulier avec les valeurs d'attribut xml:id qui ne sont pas uniques.

C'est un défaut manifeste dans la conception de la spécification XML canonique. La spécification La canonisation XML exclusive version 1.0→vf, qui n'a pas cette caractéristique, est la plus appropriée pour les documents contenant des valeurs de type ID.

D Les technologies de validation (non normatif)

Cette annexe décrit comment le traitement xml:id interagit avec des technologies de validation sélectionnées.

D.1 La validation par DTD

Les auteurs de DTD sont encouragés à utiliser des attributs xml:id pour fournir des identificateurs aux éléments déclarés dans leurs DTD.

Le fragment de DTD suivant montre un exemple de déclaration pour l'attribut xml:id :

<!ATTLIST unÉlément
    xml:id     ID          #IMPLIED
>

Les auteurs de DTD sont encouragés à déclarer les attributs nommés xml:id avec le type ID. Le traitement d'un document utilisant des attributs xml:id avec un autre type déclaré que ID générera toujours des conditions d'erreur xml:id.

Les consommateurs de documents validés en recourant à des attributs xml:id déclarés correctement peuvent reconnaître les valeurs ID au travers de la propriété d'ensemble d'information type d'attribut.

D.2 La validation par schéma XML

Les auteurs de schémas XML sont encouragés à utiliser des attributs xml:id pour fournir des indentificateurs aux éléments déclarés dans leurs schémas. Remarquez que cela peut se réaliser très simplement en important le schéma de l'espace de nommage XML→vf et en utilisant la déclaration d'attribut que celui-ci contient.

Le fragment de schéma XML suivant de l'espace de nommage XML montre un exemple de déclaration pour l'attribut xml:id :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/XML/1998/namespace">

    <xs:attribute name="id" type="xs:ID"/>

</xs:schema>

Les auteurs de schémas XML sont encouragés à déclarer les attributs nommés xml:id avec le type xs:ID. Le traitement d'un document utilisant des attributs xml:id avec un autre type déclaré que xs:ID générera toujours des conditions d'erreurs xml:id.

Les consommateurs de documents validant les attributs xml:id contre un schéma approprié pour l'espace de nommage XML peuvent reconnaître les valeurs ID au travers de la famille de propriétés définition de type de l'ensemble d'information après validation du schéma (PSVI).

Les applications peuvent reconnaître les attributs xml:id comme valeurs ID en utilisant conceptuellement un processeur de schémas de conformité minimale→vf et le schéma précédent.

Remarquez qu'une approximation des effets d'un processeur de schémas de conformité minimale traitant le schéma précédent consisterait à rechercher simplement les attributs nommés xml:id puis à s'assurer que la valeur de ces attributs a une forme lexicale correcte (NomEspCondensé→vf [NdT. NCName]) et que cette valeur est unique dans le document.

D.3 La validation par RELAX NG

Les auteurs de grammaires RELAX NG sont encouragés à utiliser des attributs xml:id pour fournir des identificateurs aux éléments déclarés dans leurs schémas.

Le fragment RELAX NG suivant montre un exemple de déclaration pour l'attribut xml:id :

<optional xmlns="http://relaxng.org/ns/structure/1.0"
              datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <attribute name="xml:id">
    <data type="ID"/>
  </attribute>
</optional>

Les auteurs de grammaires RELAX NG sont encouragés à déclarer les attributs nommés xml:id avec le type xs:ID. Le traitement d'un document utilisant des attributs xml:id avec un autre type déclaré que xs:ID générera toujours des conditions d'erreur xml:id.

E La normalisation de valeur d'attribut pour les valeurs de type ID (non normatif)

La spécification [XML 1.0] impose aux analyseurs syntaxiques de normaliser→vf toutes les valeurs d'attribut. La normalisation développe les références de caractères, développe les références d'entités et nettoie les caractères de fin de ligne. Les attributs de type ID sont soumis à des règles de normalisation supplémentaires, à savoir, la suppression des caractères espaces de tête et de queue et le remplacement des séquences de caractères espaces par un seul.

Le processeur xml:id doit s'assurer que ces deux étapes de normalisation ont été effectuées pour tous les attributs nommés xml:id. Notamment, l'analyseur ne devra pas avoir effectué les étapes supplémentaires de la normalisation imposées aux attributs de type ID parce que l'attribut n'aura pas été déclaré ou pas déclaré comme valeur de type ID.

Prenons le document suivant :

<!DOCTYPE doc [
<!ATTLIST doc xml:id ID #IMPLIED>
]>
<doc xml:id="  un
">
<para xml:id="  deux
"></para>
</doc>

La valeur initiale de l'attribut xml:id sur l'élément doc sera "un" parce que l'analyseur savait qu'il s'agissait d'une valeur de type ID. La valeur initiale de l'attribut xml:id sur l'élément para sera " deux ". Comme l'analyseur ne savait pas qu'il s'agissait d'une valeur de type ID, il n'aura pas effectué les normalisations supplémentaires nécessaires.

Après le traitement xml:id, la valeur des attributs xml:id sur les éléments doc et para seront respectivement de "un" et de "deux". Ces valeurs correctement normalisées seront placées dans la propriété valeur normalisée dans l'ensemble d'information. Le traitement xml:id modifie l'ensemble d'information s'il existe des attributs xml:id incomplètement normalisés.

Remarque :

Pour l'interopérabilité, les producteurs de documents devraient utiliser des valeurs complètement normalisées du type légal NomEspCondensé [NdT. NCName] dans les attributs xml:id.