Warum gibt es XML-Namespaces?
Denn 1997 wollten einige sehr einflussreiche Personen im W3C sie und wollten kein Nein als Antwort nehmen. Selbst als es demonstriert wurde, wage ich abschließend zu sagen, dass es bessere Möglichkeiten gab, das "Problem" zu lösen, von dem sie dachten, dass sie es hatten, sie übten ihren Einfluss aus, um ihre Wünsche in eine W3C-Empfehlung eintragen zu lassen.
Das größte Problem in der mittlerweile umfangreichen Mythologie rund um XML-Namespaces ist, dass sie technische Vorteile haben. (Dies ist der nachgelagerte Effekt einer Empfehlung, die einfach existiert und somit den Mindspace einnimmt - "gee, es muss einen (guten) Grund geben!" - im Gegensatz zu einer vergesslichen Fußnote irgendwo.)
Viel Schmerz, kein Gewinn .
Wann sollten wir sie verwenden und wann nicht?
Sie sollten sie niemals verwenden, wenn Sie helfen können. Leider hat die unermüdliche Werbung für dieses BAD [*] -Gerät durch interessierte Parteien zu einer Vielzahl von Spezifikationen geführt, die es praktisch unmöglich machen, sich irgendwann nicht mehr mit XML-Namespaces herumschlagen zu müssen. Selbst wenn Sie XML-Namespaces selbst meiden, werden Sie mit Namespaces verkrustete Rohstoffe aus allen Richtungen oder, schlimmer noch, Toolsets finden, die sich einfach weigern zu funktionieren, es sei denn, Sie füttern sie mit solchen Rohstoffen.
Was sind die häufigsten Fallstricke bei der Arbeit mit Namespaces in XML?
Eine sehr häufige Gefahr besteht darin, Xpath-Ausdrücke mit Dokumenten zu verwenden, in denen ein Namespace "voreingestellt" wurde: Der Namespace muss in den Ausdrücken explizit sein. Ein weiteres Problem besteht darin, sie beim Erstellen von Dokumenten "richtig" zu verwenden: Sie verursachen Probleme aus dem Nichts .
Wie hängen sie auch mit XML-Schemas zusammen? Sollten XSD-Schemas immer einem Namespace zugeordnet werden?
Es gibt keine notwendige Beziehung, außer dass die XSD-Schemaspezifikation zu einer Zeit entwickelt wurde, als fast jeder im Ausschuss die XML-Namespaces in den Zähnen hatte. Also haben sie so tief wie möglich daran gearbeitet. Es ist dennoch möglich, XSD-Schemas ohne Namespaces zu verwenden, aber es ist ein steiler Anstieg, da nahezu jedes Toolset, das XSD-Schemas unterstützt, davon ausgeht, dass Sie Namespaces verwenden möchten.
[*] BAD = Broken As Designed
UPDATE: Ein alter Aufsatz über diese Nichtlösung eines Nichtproblems .