Pourquoi les espaces de noms XML existent-ils ?
Parce qu'en 1997, certaines personnes très influentes du W3C les voulaient et n'acceptaient pas de refus. Même lorsqu'il a été démontré, j'ose dire de manière concluante, qu'il existait de meilleures façons de résoudre le "problème" qu'ils pensaient avoir, ils ont tout de même exercé leur influence pour que leurs désirs soient consignés dans une recommandation du W3C.
Le plus gros mensonge dans la mythologie désormais très répandue qui entoure les espaces de noms XML est qu'ils ont un mérite technique. (Il s'agit de l'effet en aval d'une recommandation qui existe simplement et qui occupe donc l'espace des esprits - "Bon sang, il doit y avoir une (bonne) raison ! - par opposition à une note de bas de page oubliable quelque part).
Beaucoup de douleur, aucun gain .
Quand faut-il les utiliser et quand ne faut-il pas le faire ?
Vous ne devriez jamais les utiliser si vous pouvez l'éviter. Malheureusement, la promotion incessante de ce dispositif MAUVAIS [*] par les parties intéressées a donné naissance à un amas de spécifications qui rendent pratiquement impossible de ne pas être confronté aux espaces de noms XML à un moment ou à un autre. Ainsi, même si vous évitez vous-même les espaces de noms XML, vous trouverez des saletés incrustées d'espaces de noms qui vous tomberont dessus de toutes les directions, ou pire, des ensembles d'outils qui refusent tout simplement de fonctionner si vous ne leur donnez pas ces saletés.
Quels sont les pièges courants lorsque l'on travaille avec des espaces de noms dans le XML ?
Un piège très courant consiste à utiliser les expressions Xpath avec des documents où un espace de noms a été "par défaut" : l'espace de noms devra être explicite dans les expressions. Un autre problème consiste à les utiliser "correctement" lors de la construction de documents : ils créent des problèmes à partir de rien .
En outre, comment se rapportent-ils aux schémas XML ? Les schémas XSD doivent-ils toujours être associés à un espace de noms ?
Il n'y a pas de relation nécessaire, si ce n'est que la spécification XSD Schema a été élaborée à une époque où presque tous les membres du comité avaient déjà l'espace de nommage XML entre les dents. Ils l'ont donc intégré aussi profondément qu'ils le pouvaient. Il est néanmoins possible d'utiliser des schémas XSD sans espaces de noms, mais il s'agit d'un parcours semé d'embûches, car presque tous les outils prenant en charge les schémas XSD partent du principe que vous "voudrez" utiliser les espaces de noms.
[*] BAD = Broken As Designed (cassé comme prévu)
UPDATE : Un vieil essai sur cette non-solution à un non-problème .