Daniel unreg: DOM -NS-Methoden in XHTML

Beitrag lesen

Hallo,

hast du mal einen Link zu einer verständlichen Erklärung dieser mir bislang vollkommen unbekannten (auch in der Praxis noch nie vorgekommenen) Problematik?

Diese Tatsache ist tatsächlich unbekannt, und fällt in der Praxis nie auf, weil die Browser (und zwar alle!) einerseits fehlerhaft arbeiten, bzw. XHTML-Dokumente meist nicht als echtes XHTML verarbeitet werden.

In diesem Fall merkt man den Unterschied nichtmal, weil laut Spezifikation tatsächlich beide Methoden funktionieren.

Es ist aber sehr interessant! Hm, nur wie weit soll ich ausholen?

Damit ein Browser verschiedene XML-Sprachen auseinanderhalten kann, gehört zu einer XML-Sprache ein Namensraum. Für XHTML ist das "http://www.w3.org/1999/xhtml".
HTML ist eine SGML-Anwendung und hat daher keinen Namensraum (wobei man vom Null-Namensraum spricht).

Die Problematik lässt sich anhand einer anderen Methode besser erklären:

Verwendet man in HTML die createElement()-Methode, so erzeugt man ein HTML-Element mit dem Angegebenen Wert. Verwendet man die selbe Methode in einem echten XHTML-Dokument, so erzeugt man mit der Methode zwar ein Element, dieses wird jedoch nicht als XHTML-Element erkannt.

Das bedeutet für XHTML:
createElement('p') erzeugt ein p-Element, dieses verhält sich jedoch wie ein unbekanntes Element (es würde wohl wie ein span-Element angezeigt werden).
createElementNS('http://www.w3.org/1999/xhtml','p') dagegen würde tatsächlich ein XHTML-p-Absatzelement erzeugen.

Das Problem dabei ist, Firefox und Opera haben die -NS-methode falsch implementiert, so dass sie offensichtlich richtig funktioniert (d.h., wie man es erwarten würde).

DOM-2-Core §1.1.8 ist wohl interessant.

Gruß;