Olaf: Probleme bei AJAX + XSL

Hallo zusammen,

ein PHP Script readitems.php liest die Dateien/Unterordner aus einem vorgegebenen Verzeichnis, baut daraus eine XML-Datei. Die Ausgabe wird per XML Stylesheet formatiert und das Ergebnis schließlich in einem Iframe ausgegeben. Das Ergebnis ist eine Auflistung der Datei/Ordnerstruktur im HTML-Format.

readitems.php sieht etwa so aus:

...
  header("Content-Type: text/xml");
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  <?xml-stylesheet type="application/xml" href="format.xsl"?>

...create $data

echo $data;
...

Das funktioniert seit Jahren einwandfrei. Nur der Iframe ist natürlich nicht schön. Deshalb soll ich das jetzt auf AJAX umstellen. Setze ich aber einen AJAX HTTP-Request nach readitems.php ab, liefert readitems zwar die XML Daten zurück, aber leider nicht mit format.xsl formatiert.

Woran kann denn das liegen? Wie kann ich denn erreichen, dass die von readitems.php zurückgelieferten Daten per format.xsl formatiert sind?

Danke und viele Grüsse

Olaf

  1. Setze ich aber einen AJAX HTTP-Request nach readitems.php ab, liefert readitems zwar die XML Daten zurück, aber leider nicht mit format.xsl formatiert.

    Die XSL-Transformation geschieht bei einem Iframe clientseitig, der Browser rendert sie wie eine komplette Webseite einschließlich Header und stellt das XML entsprechend der im Header genannten XSL-Datei dar. AJAX ist aber kein Browser, das heißt, eine clientseitige Transformation findet nicht statt, stattdessen bestehen die empfangenen Daten aus dem XML, das readitem.php zurückgibt. Und genau das wird dargestellt, wenn Du nichts weiter unternimmst.

    Wie kann ich denn erreichen, dass die von readitems.php zurückgelieferten Daten per format.xsl formatiert sind?

    Die einfachste Möglichkeit wäre die serverseitige Transformation, die HTML ergibt (Stichwort AHAH). Aber es besteht auch die Möglichkeit einer cliensteitigen Transformation. Für den IE ist das Verfahren in KB285874 erklärt, für Geckos im Devcenter unter XSLTProcessor.

    Siechfred

    --
    Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.