Heute wunderte ich mich, warum der Firefox mir mit Firebug offenbarte, dass mein XMLHttpRequest überhaupt keine XML-Daten zu Tage förderte, obwohl eine XML- bzw. besser gesagt eine XSLT-Datei geladen wurde.
var r = new XMLHttpRequest();
r.open("GET", "xslt/test.xslt", false);
r.send();
var xslt = r.responseXML;
r.responseXML
war schlicht null. Da konnte doch was nicht stimmen. Firebug sagte mir schließlich auch, was: die XSLT-Datei wird mit dem Content-Type text/plain übertragen.
Dadurch beschließt Firefox kurzerhand, dass es sich hierbei nicht um XML handelt. Muss er ja theoretisch auch nicht, laut meinem Apache-Webserver handelt es sich um reinen Text.
Damit man die responseXML-Eigenschaft seines XHR benutzen kann, muss die Datei als application/xml oder ähnliches für den Browser als XML zu verstehender Datenstrom übertragen werden. Also habe ich mal in die Apache-Konfigurationsdateien geguckt, um herauszufinden, dass MIME-Typen standardmäßig aus der Datei /etc/mime.types übernommen und benutzt werden und sich mit AddType <MIME-Typ> <.Dateinamenserweiterung>
Direktiven überschrieben lassen.
Nach Suchen in der mime.types-Datei habe ich zwei einfache Lösungen anzubieten:
1. Die Dateiendung in xsl ändern. .xsl-Dateien werden zumindest bei mir in der Standardkonfiguration als application/xml übertragen. Dies ist daher wohl die einfachere Lösung.
2. Man fügt entweder der /etc/mime.types oder eine Apache-Konfigurationsdatei den MIME-Typ für XSLT-Dateien hinzu. Infrage kommen dafür anscheinend text/xml, text/xsl und application/xml, sowie application/xslt+xml für XSLT-2.0-Dateien[1]. Für einen mime.types Eintrag orientiert man sich am besten an den dort bestehenden Einträgen, um einen für XSLT zu ergänzen. In der Apache-Konfiguration könnte man zum Beispiel AddType text/xsl .xslt
hinzufügen, wenn man denn möchte.