Un mail anonyme dévoile la
raison pour laquelle plusieurs recommandations
(dont celle du DOM niveau 2) ont du mal à se finaliser :
une incohérence grave a été découverte au niveau de la définition des espaces de noms.
Par Eric van der Vlist,
Dyomedea (vdv@dyomedea.com).
mercredi 17 mai 2000
La recommandation des espaces de noms
(namespaces) spécifie que :
"Les références URI qui identifient les espaces de noms
sont considérées comme identiques quand elles sont exactement les mêmes,
caractère pour caractère"
Toute l'ambiguïté réside dans cette formulation comme le
confirme Paul Grosso :
"La majorité de ceux d'entre nous qui avons développé la spécification
des espaces de noms avons remplacé 'URI' par 'référence URI' sans réaliser que
cela permettait d'utiliser des références relatives, ce que nous n'avions
jamais envisagé."
Dans la pratique, cela revient à autoriser ou interdire l'utilisation
d'espaces de noms comme : 'xmlns:y="foo"' qui peuvent avoir une signification
différente en fonction du contexte.
Cette ambiguïté n'avait pas de conséquences pratiques lors de l'écriture de
la spécification qui soulignait également
"notre but n'est pas que [cet URI] soit directement utilisable pour accéder à un schéma"
et que l'URI n'était qu'un identifiant unique sans autre signification.
L'idée d'utiliser cet URI pour accéder à une ressource (schéma ou description)
a fait son chemin depuis avec notamment le développement de la notion de web sémantique
présentée par Tim Berners-Lee et elle alimente le débat entre trois
lectures différentes de la recommandation:
- Les puristes qui réfutent toute utilisation des URI
comme pointeur sur une ressource.
- Les partisans des "références absolues" qui souhaitent s'en tenir
à l'esprit initial de la recommandation et soutiennent que les espaces
de noms doivent être identifiés de manière unique sous risque de graves confusions.
Parmi ce groupe certains accepteraient que des références relatives puissent
être définies sous réserve qu'une base absolue soient définie comme spécifié par
xmlBase (cette solution est souvent appeleée 'absolutiser')..
- Les partisans des "références relatives" qui soulignent la facilité
que ce mécanisme apporte dans la gestion des documents qui peuvent être
déplacés globalement d'un site à un autre avec leurs schémas ou descriptions.
Une liste de discussions a
été créée par le W3C pour permettre un
débat public
sur ce problème. Les partisans des différentes interprétations y font mention
de milliers de documents utilisant l'une ou l'autre de ces lectures
et d'outils développés pas Microsoft qui auraient répandu
l'utilisation de références relatives.
Tim Berners-Lee suit activement ces débats
tout en soulignant qu'il le fait
"sans sa casquette de directeur"
et a
proposé le plan de transition suivant :
"Nous pouvons garder XPath et modifier
ses implémentations pour 'abolutiser'. Nous devons modifier la spécification
des espaces de noms pour supprimer la formulation de la comparaison mot à mot et
ne plus parler que d'URI. Ceci supprimerait l'incohérence fondamentale (je fais
partie de ceux qui n'ont pas réalisé son importance lors de la relecture de la spécification).
Un avertissement à propos des URIs relatives pourra être rédigé et
tant qu'il ne serait par normatif, cela semble raisonnable.
DOM devra être modifié pour que
l'URI de base soit initialisée à la création
du document. Cela fera gagner beaucoup de temps par la suite quand les futurs
niveaux de DOM implémenteront d'autres fonctions utilisant
des URI comme XLink. Et dès
à présent, cela permettra à DOM de gérer correctement les espaces de noms.
Les sources de toutes les implémentations publiques XML
devront implémenter de façon visible la fonction permettant d' 'absolutiser'
une chaîne de caractères de manière à supprimer le mythe selon lequel cette
fonction nécessite un accès réseau ou est extrêmement complexe."
Copyright 2000,
Eric van der Vlist.
|