J'essaie d'en apprendre un peu plus sur les espaces de nommage. Mais des choses me turlupinent. Si j'ai bien compris, un namespace a pour but de référencer un objet (bon en XML c'est une balise) ayant un identifiant unique (un nom global unique) de façon à pouvoir gérer les inclusions de fichiers source au sein d'autres fichiers sans avoir de collision de noms.
Alors avec Java j'ai bien compris ce mécanisme à travers le nom des classes concaténé au CLASSPATH qui permettent d'avoir un nom de classe absolu unique car basé sur le système de fichier d'un OS (un répertoire ne peut avoir 2 fichiers de même nom). L'affaire est donc réglée pour une application locale.
Pour une application répartie, comment cela est géré ? en utilisant des objets distant via RMI il est possible dans l'absolu de créer un conflit de nom de classe, me trompe-je ? comment fait-on pour distinguer le toto.java sur la machine X du toto.java sur la machine Y ... une URI définissant un espace de nommage pour de telles classes n'est en soit pas unique (ça reste une chaîne de caractère).
Alors en XML c'est cela qui est utilisé (une URI définie un espace de nommage). Imaginez donc sur un poste local l'inclusion de 2 fichiers (A et B) dans un 3ème fichier XML. Il n'est pas impossible d'avoir un conflit de balise car dans A et B, la balise peut avoir le même nom absolu (nom balise + nom espace de nommage).
Idem en C++, l'espace de nommage est juste une chaîne de caractère...il est donc possible de créer des collissions de nom rien que sur une appli locale (avec inclusion de fichiers).
Morale : à quoi sert l'espace de nommage que l'on peut définir en XML et C++ alors que dans l'absolu, l'identifiant n'est pas unique...autant ne pas en spécifier.
Merci de m'éclaircir sur ce point.
Message édité par Giz le 03-11-2006 à 11:32:56