La version française de cette traduction est :
http://www.la-grange.net/w3c/xmlbase/
Traducteur : Karl Dubost - <karl+misc@la-grange.net>
La version française peut contenir des erreurs. La version anglaise de cette note est l'unique version
normative. Version originale : http://www.w3.org/TR/2001/REC-xmlbase-20010627/
Copyright © 2001 W3CÆ (MIT, INRIA, Keio), Tous droits réservés. les règles de la responsabilité, la marque, l'utilisation du document, et la licence logiciel du W3C s'appliquent.
Ce document propose un mécanisme, similaire à celui de Base pour HTML, pour définir les URIs de base dans le cadre des documents XML.
Ce document a été revu par les membres du W3C et par les parties tiers et a été approuvé par le directeur comme une recommandation du W3C. C'est un document stable et peut être employé comme matériel de référence ou cité comme une référence normative dans un autre document. Le rôle du W3C dans la réalisation de la recommandation est d'attirer l'attention sur cette spécification et de promouvoir son large déploiement, afin d'améliorer la richesse fonctionnelle du web et son interopérabilité.
Ce document a été créé par le groupe de travail XML Linking dans le cadre de l'activité XML dans le domaine architecture du W3C. Pour avoir le contexte sur ce travail, Voir la présentation de l'activité XML.
Rapportez les erreurs possibles dans ce document en envoyant un mail à la mailing-list publique www-xml-linking-comments@w3.org (archives à http://lists.w3.org/Archives/Public/www-xml-linking-comments/). Toutes les erreurs qui auront été confirmées seront reportées dans une liste d'errata disponible à http://www.w3.org/2001/06/xmlbase-errata.
La version anglaise de cette spécification est la seule version normative. Les versions traduites de ce document sont disponibles à http://www.w3.org/2001/06/xmlbase-translations.
La liste des recommandations du W3C et autres documents techniques peut être trouvée à http://www.w3.org/TR/.
1 Introduction
2 Terminologie
3 Attribut xml:base
3.1 Encodage et échappement de l'URI de référence
4 Résolution des URIs relatives
4.1 Relation à la RFC 2396
4.2 Granularité d'information de l'URI de base
4.3 Correspondance entre les URIs et les URIs de base
5 Conformance
A Références
B Références (non-normatif)
C Impacts sur les autres standards (non-normatif)
Le langage XML Linking [XLink] définit des concepts XML 1.0 [XML] permettant de décrire des liens entre les ressources. Un des requis de base sur XLin est de supporter les concepts de liens de HTML [HTML 4.01] d'une façon générique. L'élément HTML BASE est un de ces concepts qui a été pris en compte par le groupe de travail XLink. BASE permet aux auteurs de spécifier clairement l'URI de base d'un document afin de permettre la résolution des URIs relatives en liens vers des images, des applets, des programmes de traitement des formulaires, des feuilles de style, et autres.
Ce document décrit un mécanisme pour fournir des services d'URI de base pour XLink, en tant que spécification modulaire, afin qu'il soit également possible de l'utiliser dans d'autres applications XML ayant besoin d'un contrôle supplémentaire sur les URIs relatives, sans avoir à implémenter tout XLink. La syntaxe consiste en un unique attribut XML appelé xml:base
.
Le déploiement de XML Base est réalisé dans des références normatives par les nouvelles spécifications, par exemple XLink et l'infoset XML Infoset.
Les applications et les spécifications construites sur ces nouvelles technologies supporteront nativement XML Base. Le comportement de l'attribut xml:base
dans des applications basées sur des spécifications qui n'ont pas de référence normative directe ou indirecte vers XML Base n'est pas défini.
[Definition: Les mots clés "DOIT" ("MUST", "SHALL"), "NE DOIT PAS" ("MUST NOT", "SHALL NOT"), "OBLIGATOIRE" ("REQUIRED"), "DEVRAIT" ("SHOULD"), RECOMMANDE ("RECOMMENDED"), "POURRAIT" ("MAY"), et "OPTIONNEL" ("OPTIONAL") dans ce document doivent être interprêtés tel que décrit dans [IETF RFC 2119].]
Les termes URI de base and URI relative sont utilisés dans cette spécification tels que définis dans [IETF RFC 2396].
xml:base
L'attribut xml:base
peut être inséré dans les documents XML pour spécifier une URI de base autre que l'URI de base du document ou de l'entité externe. La valeur de cet attribut est interprêté comme une référence d'URI tel que défini dans RFC 2396 [IETF RFC 2396], une fois traité tel que défini dans la section 3.1.
Dans un processeur XML, capable d'interprêter les espaces de noms (namespaces), le préfixe "xml" est dédié à l'espace de nom http://www.w3.org/XML/1998/namespace
tel que décrit dans le document espace de noms en XML [XML Names]. Notez que xml:base
peut toujours être utilisé par les processeurs XML, qui ne comprennent pas les espaces de noms.
Un exemple de xml:base
dans un document simple contenant Xlink suit. Xlink référence de façon normative XML Base pour interprêter les références d'URI relatives dans les attributs xlink:href
.
<?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>Bibliothèque virtuelle</title> </head> <body> <paragraph>Voir <link xlink:type="simple" xlink:href="new.xml">Quoi de neuf</link> !</paragraph> <paragraph>Les dernières nouveautés du jour !</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">Nouveauté 1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">Nouveauté #2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">Nouveauté #3</link> </item> </olist> </body> </doc> |
Les URIs dans cet exemple sont transformés en URIs complètes telles que :
"Quoi de neuf" pointe vers l'URI "http://example.org/today/new.xml"
"Nouveauté 1" pointe vers l'URI "http://example.org/hotpicks/pick1.xml"
"Nouveauté 2" resolves to the URI "http://example.org/hotpicks/pick2.xml"
"Nouveauté 3" resolves to the URI "http://example.org/hotpicks/pick3.xml"
Le jeu de caractères autorisés dans les attributs xml:base
est le même que pour XML, à savoir [Unicode]. Cependant, quelques caractères Unicode ne sont pas permis dans les références d'URI, et donc les processeurs doivent encoder et échapper ces caractères pour avoir une référence d'URI valide à partir de la valeur de l'attribut.
Les caractères non permis incluent tous les caractères non-ASCII, plus les caractères exclus listés dans la section 2.4 de [IETF RFC 2396], à l'exception du caractère dièse (#) et du symbole pourcentage (%) et des crochets de nouveau permis dans [IETF RFC 2732]. Les caractères non permis doivent être échappés de la façon suivante :
Chaque caractère non permis est converti en UTF-8 [IETF RFC 2279] en un ou plusieurs octets.
Tous octets correspondants à un caractère non permis sont échappés par le mécanisme d'échappement d'URI (c'est à dire, converti en %HH, où HH est la notation hexadécimale de la valeur de l'octet).
Le caractère original est remplacé par la séquence de caractère obtenue.
La RFC 2396 [IETF RFC 2396] prévoit la manière d'inclure l'URI de base à l'intérieur d'un document. Les règles pour déterminer l'URI de base peuvent être récapitulées comme suit (de la plus haute priorité vers la plus faible) :
L'URI de base est à l'intérieur du contenu du document.
L'URI de base est celle de l'entité enveloppante (message, document, ou rien).
L'URI de base est l'URI utilisée pour récupérer l'entité.
L'URI de base est définie par le contexte de l'application.
Note :
Le terme "entité" dans les points 2 et 3 précédents utilise la définition de la RFC 2396 de ce terme. Ailleurs dans ce document le terme "entité" est employé tel que dans le contexte XML.
Ce document spécifie les détails de la règle 1 afin d'incorporer l'information de l'URI de base dans le cas particulier des documents XML.
Les URIs relatives présentes dans un document XML sont toujours résolues par rapport à un élément, une entité document, ou une entité externe. Il n'y a pas de moyen de définir une granularité plus fine, telle qu'une information sur la base au niveau attribut, caractère, ou entité. Autant les entités internes, qu'elles soient déclarées dans le sous-ensemble interne ou dans une DTD externe, que le texte libre (le texte qui n'est pas enfermé dans un élément) dans une entité externe, ne peuvent définir une URI de base séparée de l'URI de base dépendante de la référence de l'entité.
L'URI de base d'une entité document ou d'une entité externe est déterminé par les règles de la RFC 2396, c'est-à-dire, que l'URI de base est l'URI utilisée pour extraire l'entité document ou l'entité externe.
L'URI de base d'un élément est :
l'URI de base définie par un attribut xml:base
sur l'élément, si celui-ci existe, sinon
l'URI de base URI de l'élément de l'élément parent à l'intérieur du document ou de l'entité externe, s'ils existent, sinon
l'URI de base de l'entité document ou l'entité externe contenant l'élément.
L'URI de base correspondante à une URI relative donnée apparaissant dans un document XML est déterminée comme suit :
L'URI de base pour une référence d'URI aparaissant dans un contenu texte est l'URI de base de l'élément contenant le texte.
L'URI de base pour une référence d'URI apparraissant dans un attribut xml:base
est l'URI de base de l'élément parent de l'élément comprenant l'attribut xml:base
, s'il existe à l'intérieur de l'entité document ou de l'entité externe, sinon c'est l'URI de base de l'entité document ou de l'entité externe contenant l'élément.
L'URI de base URI pour une référence d'URI apparaissant dans toute autre valeur d'attribut, y compris des valeurs d'attributs par défaut, est l'URI de base de l'élément comprenant l'attribut.
L'URI de base pour une référence d'URI apparaissant dans le contenu d'une instruction de traitement est l'URI de base de l'élément parent de cette instruction de traitement, si elle existe à l'intérieur de l'entité document ou de l'entité externe, sinon l'URI de base de l'entité document ou de l'entité externe contenant l'instruction de traitement.
Note :
La présence des attributs xml:base
pourraient donner lieu à des résultats inattendus dans le cas où la valeur d'attribut est fournie, non pas directement dans l'entité de document XML, mais via un attribut par défaut déclaré dans une entité externe. De telles déclarations pourraient ne pas être lues par les logiciels qui sont basés sur des processeurs XML non validantes. Beaucoup d'applications XML n'exigent aucune validation des processeurs XML. Pour un fonctionnement correct de telles applications, les valeurs de xml:base
devraient être fournies directement ou bien par des attributs par defaut déclarés dans le sous-ensemble interne de la DTD.
XML Base définit un mécanisme afin d'inclure l'information d'URI de base à l'intérieur d'un document XML. Il ne définit pas de mécanisme permettant d'identifier quel contenu ou valeurs d'attribut pouvant contenir des URIs. Ceci est défini uniquement par les spécifications et les applications qui définissent la sémantique du vocabulaire.
Une des intentions de XML Base est que les spécifications futures et les révisions des vocabulaires XML identifient quelle parties d'un document XML seront des URIS, et de servir de référence normative pour s'assurer que les URIS relatives sont traitées de façon consistante sur l'ensemble des documents XML.
L'impact de XML Base sur les autres standards (à la date de publication de ce document) est décrit ci-dessous.
XML 1.0 [XML] utilise les références d'URI dans les identificateurs système pour les entités externes. Comme ces déclarations apparaissent à l'extérieur de l'élément du document (dans un sous-ensemble internet ou une DTD externe), les règles définissant xml:base
empêchent ces URIs d'être affectées par la valeur de xml:base
.
L'Infoset XML [XML Infoset] définit la propriété de l'URI de base des éléments d'information. La dernière spécification Infoset supporte XML Base afin de pouvoir déterminer la valeur de cette propriété. Les interfaces, les applications, et les applications référençant cette propriété infoset supporteront XML Base de façon native.
Les espaces de nom en XML [XML Names] utilisent les références d'URI, qui telles que couramment définies ne devraient pas être résolues relativement à l'URI de base définie par xml:base
pour les besoins de l'identification de l'espace de nom. Des procédés de plus haut niveau qui déférencent les URIs d'espace de nom ne sont pas couvertes par la spécification des espaces de nom et pourraient à leur choix spécifier que xml:base
doivent servir pour les besoins d'extraction de ressources à ces URIs.
Le modèle de données de XPath [XPath] ne préserve ni l'information de l'URI de base, ni les bornes des entités externes et ainsi est insuffisant pour permettre la résolution des références d'URIs relatives à l'intérieur de ces entités qui doivent être résolues correctement. Ceci inclut les références d'URI relative dans les attributs xml:base
.
Les extensions XSLT [XSLT] au modèle de données de XPath prévoient que l'information de l'URI de base soit conservée, mais le fait d'une manière qui empêche qu'elle soit utilisée de manière consistante avec XML Base. A l'avenir, les versions prochaines de XSLT pourraient s'appuyer sur XML Base.
XML Schema Partie 2: Types de données [XML Datatypes] définit un type de donnée primitif uriReference
. La spécification sur les types de données XML peut exiger que les applications reconaissant ce type de données et résolvant de telles URIs s'appuient sur XML Base.
La spécification XLink [XLink] a besoin de XML Base.
XHTML [XHTML] utilise les références d'URI en plus de celles exprimées dans XLink. Ces références d'URI peuvent être résolues par une application relative à l'URI de base définie par XML Base. La spécification XHTML pourrait avoir à décrire leur niveau de support de XML Base.