„AJAX“ und XSLT: Wenn man seine Antwort nicht als XML bekommt

Oktober 12th, 2010

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 habe 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.

Wenn die eigenen Qt-basierten Programme unter Windows nicht starten, trotz DLLs…

Juni 10th, 2010

Langer Titel, kurze Lösung:

im Qt-SDK-Ordner gibt es mehrere bin-Verzeichnisse.  Eins davon ist \bin und das andere \qt\bin.  Also wenn das SDK im Verzeichnis C:\Qt installiert, dann sollte man seine Anwendungen mit den DLLs in C:\Qt\qt\bin ausliefern, nicht mit denen in C:\Qt\bin.

Da ich dies in der Schule schreibe und Facebook dort mal wieder gesperrt ist, landet das jetzt hier im Blog…  sicherlich steht das was ich da rausgefunden habe, in irgendeiner Dokumentation, aber über die bin ich noch nicht gestolpert und ich wollte es mir halt notieren.

nautilus-open-terminal does not open terminals?

Mai 8th, 2010

For about half a year or more I have been using Ubuntu with a defunct nautilus-open-terminal addition to the Nautilus file manager.  It adds a shortcut to the context and file menu of Nautilus reading “Open in terminal” or something like that (in German it is “In Terminal öffnen”).

However, when I clicked it, no terminal used to pop up anymore.  Today I once dealt with the problem again and changed the Gnome default application for terminal emulation to xterm and was surprised: the open terminal shortcut worked again!

Well, the solution is that gnome-default-applications-properties (System > Settings > Default Applications) did not correctly update the command line option for the respective terminal emulator.  xterm takes a “-e” (which was set here) to execute commands, as nautilus-open-terminal presumably does, but gnome-terminal wants a “-x” for this (-e exists as well but wants the command quoted as a string).  The default applications tool did not update this field.

So I had to correct the parameter myself:

  • launch gconf-editor
  • navigate to /desktop/gnome/applications/terminal
  • change value of key exec_arg to -x for gnome-terminal or to -e for xterm

What is left to wonder about is, why it did not work for me on this computer but it did on my laptop.  I assume I have never switched the default terminal there and the correct paramter for the default gnome-terminal has thus been save.  I did not find a bug report on Launchpad either.  Maybe I will file one but before I do so I might consider updating to Lucid, Ubuntu’s latest version…

Update:  After the update to Lucid, it works correctly via the GUI as well.

Kommentare für statische Seiten

September 12th, 2009

Von nun an können auch auf den statischen Seiten, die man über die Sidebar erreicht, Kommentare abgegeben werden. Viel Spaß dabei, bei Bedarf. Den Rest dieses Eintrags lesen »

Multinationale Akademie Torgelow 2009

September 3rd, 2009

Vom sechsten bis zum 22. August stieg die Einwohnerzahl des kleinen Örtchens Torgelow am See (Mecklenburg-Vorpommern, in der Nähe von Waren an der Müritz) drastisch an. Rund 80 Teilnehmer aus den fünf Nationen Estland, Lettland, Litauen, Polen und Deutschland kamen dort zusammen, um an einer der Deutschen Schülerakademien teilzunehmen und ich war einer von ihnen. Den Rest dieses Eintrags lesen »

Funk frei

März 3rd, 2009
Figurengedicht "Funk frei"

Direct Rendering mit Ubuntu Intrepid Ibex und fglrx

Februar 1st, 2009

Neulich musste ich erstaunt feststellen, dass mir der fglrx-Treiber (der proprietäre Grafikkartentreiber für AMD/ATI-Chips) unter Ubuntu Intrepid Ibex gar keine 3D-Beschleunigung brachte. Compiz funktionierte trotzdem, daher bemerkte ich das bis dahin nicht. Nach kürzlichen Updates erschien mir dann auch das Verschieben von Fenstern mit Metacity nicht mehr flüssig genug und es war sogar mit dem freien Treiber radeonhd schöner anzuschauen.

Das Kommando glxinfo förderte zu Tage, dass zwar die 3D-Implementierung des fglrx-Treibers verwendet wurde, jedoch das Direct Rendering abgeschaltet blieb (die Umgebungsvariable LIBGL_ALWAYS_INDIRECT wurde vom Compiz-Fusion-Icon beim Start gesetzt). Außerdem brachen mir einige OpenGL-Programme beim Start gar mit einer Fehlermeldung ab, von der auch andere Benutzer zu berichten wussten. So konnte es nicht bleiben, eine Lösung musste her. Den Rest dieses Eintrags lesen »

Samsung YP-T9JB UMS-Firmware installieren

Oktober 11th, 2008

Letztes Jahr zu Weihnachten bekam ich einen Samsung YP-T9JB MP3-Player geschenkt. Ein großes Plus für dieses Gerät war, dass es OGG-Audiodateien abspielen kann. Das gute Stück sollte auch nicht gerade billig gewesen sein…

Ein Problem stellte sich jedoch bald heraus: die Firmware des Abspielgerätes unterstützte keinen UMS-Modus. Das heißt, der Player tauchte nicht wie ein USB-Stick als Massenspeicherlaufwerk im Dateimanager auf. Es gab auch eine mitgelieferte Software von Samsung, aber die brachte mir unter Linux herzlich wenig. Das Gerät ließ sich nur über das MTP-Protokoll (von Microsoft und Canon entwickelt) beladen. Den Rest dieses Eintrags lesen »

Problemlösung: Netzwerkverbindung erst nach Neustart der Schnittstelle

Juli 27th, 2008

Folgende Problemstellung:

  • Man benutzt Debian oder irgendwas damit verwandtes als Betriebssystem und nach dem Hochfahren hat man erstmal keine Netzwerkverbindung.
  • Die Netzwerkschnittstelle sei eth0 und wird in der Datei /etc/network/interfaces mit statischer IP-Adresse konfiguriert
  • kein Network-Manager, kein Wicd (brachte auch alles nichts)
  • Nach dem Neustarten der Netzwerkschnittstelle verschwindet das Problem: $ ifdown eth0 && ifup eth0
  • Zwecks des Betriebs virtueller Maschinen ist in der /etc/network/interfaces eine Bridging-Schnittstelle eingetragen und man möchte, weil diese an eth0 hängt, die Eintragungen für eth0 nicht entfernen (um sie bspw. völlig Wicd zu überlassen) Den Rest dieses Eintrags lesen »

Kein Zugriff mehr auf virtuelle Terminals (tty1-6) in Ubuntu Gutsy Gibbon: Lösung

März 22nd, 2008

Seit geraumer Zeit war es bei meinem Notebook so, dass ich durch drücken von Strg+Alt+F1 bis F6 nicht etwa auf benutzbare Linux-Kommandozeilenboxen kam, sondern auf schwarze Bildschirme mit blinkendem Cursor oben links. Sehr hilfreich. Heute entschloss ich dann endlich mal, dem ein Ende zu bereiten und bin auch fündig geworden. Den Rest dieses Eintrags lesen »