Ich weiß, was AJAX ist. Den Wikipedia-Artikel habe ich übrigens mitgeschrieben.
Entschuldigung.
AJAX heißt nicht notwendigerweise »Zurückliefern von HTML«. Viele verstehen unter AJAX sogar ausdrücklich nicht das Übertragen von Daten in fertigem HTML, sondern in schlankem XML, was dann clientseitig transformiert wird.
Es kommt immer auf die Situation an. Ob XML nun schlanker als HTML ist, darüber lässt sich auch streiten. Denn wenn ich eine Seite über mehrere XML-Requests zusammenstricke, ist immer ein unnötiger Overhead dabei (z.B. die XML-Deklaration). Eine clientseitige Transformation kann dann sinnvoll sein, wenn viele Daten formatiert werden müssen. Dann erstellt erst der Client das fertige HTML. Nachteil ist hier natürlich, wie bei allen Client-Lösungen, dass es viele verschiedene Implementierungen (=Browser) gibt und somit Bugs und Eigenheiten, auf die ich achten muss. Wenn ich mir mein HTML über Templates auf dem Server zusammenstricke und das Produkt an den Client schicke, weiss ich wenigstens, dass es funktioniert.
Für eine eigene AJAX-Implementierung in PHP5 benutze ich zum Beispiel das kompaktere JSON-Format, um Datentypen zwischen JavaScript und PHP5 auszutauschen. Dies wird im Moment jedoch nur für einfache Rückgabewerte aus PHP5-Funktionen und -Methoden benutzt. Jetzt suche ich nach einer Möglichkeit, wie ich direkt ganze Teile einer Seite über einen AJAX-Request ersetzen/erneuern kann, welche auf PHP-Seite generiert wurden. Möglicherweise ist Deine XML-Lösung hier die eleganteste...