@@molily:
Woran erkennt der Browser sonst XHTML-Markup, wenn nicht am Namespace?
'xmlns' ist in der XHTML-DTD als #FIXED mit Vorgabewert deklariert. „Falls ein Vorgabewert deklariert ist, verhält sich ein XML-Prozessor bei einem weggelassenen Attribut so, als ob das Attribut mit dem Vorgabewert im Dokument stünde.“ [XML §3.3.2] Das sollte also genügen und ein explizites 'xmlns'-Attribut im XML-Dokument überflüssig machen – für validierende XML-Prozessoren.
„[Es] kann in der Praxis zu Schwierigkeiten führen, wenn die Namensraum-Deklaration nicht direkt im XML-Dokument-Entity angegeben wird, sondern über einen voreingestellten Wert in einem externen Entity. Diese Deklarationen können eventuell nicht von Software verarbeitet werden, die auf nicht validierenden XML-Prozessoren aufbaut. Viele XML-Anwendungen, vermutlich auch Namensraum-sensitive, versäumen es, validierende Prozessoren zu fordern. Um eine korrekte Zusammenarbeit mit solchen Anwendungen zu gewährleisten, müssen Namensraum-Deklarationen entweder direkt oder über voreingestellte Attribute im internen Subset der DTD angegeben werden.“ [XML-NAMES §4]
Besser ist also, den Namensraum fürs Wurzelelement im XHTML-Dokument anzugeben. Vermutlich fordert es die XHTML-Spezifikation deshalb.
Live long and prosper,
Gunnar
Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.