Hallo,
idealerweise liest man ein XHTML-Dokument als XML-DOM ein. Der Browser weiß dann sofort, dass es sich um Elemente aus dem XHTML-Namensraum handelt, die kann man dann mit importNode in ein anderes (X)HTML-DOM importieren und mit appendChild usw. einhängen.
Dummerweise kann IE das nicht (Version 6 und darunter, 7 habe ich noch nicht getestet, erwarte aber dasselbe Verhalten).
Deswegen existiert eigentlich nur eine Allround-Möglichkeit: Man liest ein Dokument nur als Quelltext ein, nicht als XML-DOM und schreibt es über innerHTML in das DOM. Bei der Verwendung von XMLHttpRequest nimmt man also gleich responseText statt responseXML, soweit möglich.
- es müßte eine Konvertierungsmöglichkeit von XML-Knoten nach HTML-Knoten geben
Das wird normalerweise mit document.importNode durchgeführt, womit man ein Knoten aus einem DOM-Document in ein anderes überträgt. Voraussetzung für das Einfügen ist, dass sich der importierte Knoten schon im XHTML-Namespace befindet.
Wie gesagt funktioniert diese Methode im IE aber nicht und auch cloneNode, womit es im IE eigentlich möglich sein sollte, hat nicht das gewünschte Ergebnis (siehe </archiv/2005/7/t110743/#m695829>).
- man könnte die Daten direkt als HTML-DOM parsen also obengeschriebenes XML-Parsing durch HTML-Parsing ersetzen.
Bei XMLHttpRequest wird immer nur XML geparst (also wäre XHTML möglich). Parsen als HTML ging nur durch Einbindung in ein unsichtbares iframe. Dann hätte man aber dasselbe Problem wie oben: Knoten zwischen Dokumenten kopieren ist schwierig. Letztlich läuft es also die Möglichkeit »Parsen als HTML« auf innerHTML hinaus.
Mathias