Zurzeit bin ich derart in der Stimmung für rants über die Firma Dell (siehe auch hier und, etwas länger her, hier), dass ich eigentlich eine Facebook-Fanseite “Freunde des gepflegten Dell-Bashings” aufmachen könnte. Doof nur, dass es dort wohl niemand mehr lesen würde: Facebook ist in absehbarer Zeit so gut wie tot. Tja.
Dann muss ich das eben hier machen:
Ich verdiene erhalte gelegentlich Geld dafür, mich mit schlecht bis gar nicht dokumentierten fremden Schnittstellen und Quellcodes zu beschäftigen. Gegenwärtig steht die Kommunikation mit einer SOAP-Schnittstelle auf dem Programm, also das Senden und Erhalten/Auswerten von ziemlich komplexen XML-Strömen, im konkreten Fall achtdimensional verschachtelt. Der Antwort-Datenstrom, dargestellt als XML-Baum, sieht ungefähr so aus (aus Gründen gekürzt und teilweise unkenntlich gemacht):
(Wie man sieht, enthalten einige der XML-Felder HTML-Code, hier zwar als “korrekte” tags angezeigt, aber im Datenstrom als HTML-Entitäten dargestellt, um die Integrität nicht zu gefährden. Das wird im Folgenden noch interessant.)
Nun würde ich natürlich, um mit diesem Informationsgehalt irgendetwas Sinnvolles anfangen zu können, gern neben Browser, PHP-Code und gegebenenfalls SSH-Shell (für das PHP-Fehlerlog) auch diese Struktur stets im Auge behalten. Da zumindest sie sich nicht allzu oft ändert, bietet sich ein Ausdruck an — zumindest war das mein Vorhaben.
Nun stand mir in der vorhandenen Arbeitsumgebung hierfür ein Dell 2145cn zur Verfügung, ein großer, schwerer, lauter Farblaserdrucker. Eigentlich sollte der dieser Aufgabe gewachsen sein, sollte man meinen. Ich habe also das XML-Dokument generiert und den Quelltext ausgegeben, anschließend aus Firefox heraus die Druckfunktion verwendet. Das Ergebnis:
- sämtliche XML-Tags wurden herausgefiltert,
- die Entitäten wurden in < und > umgewandelt und obendrein
- als HTML-Code ausgedruckt.
Die HTML-Seite, die im Browser so aussah, …
…
<BESCHREIBUNG><p><b>Test</b></p></BESCHREIBUNG>
…
… endete also so auf Papier:
…
Test
…
Das ist natürlich nicht im Sinne des Entwicklers. Vielleicht, so dachte ich naiverweise, ist allein die HTML-Darstellung ein wenig eigen. Ich ließ stattdessen also den Datenstrom als application/xml ausgeben — ein screenshot davon ist oben zu sehen — und betätigte erneut Strg+P.
Tatsächlich schaffte der Drucker es, mich nochmals zu überraschen: Dort, wo ich nun wenigstens XML-Code erwartet hatte, erschien nämlich gar nichts. Offenbar wurde beim Druck des XML-Dokuments auch der XML-Baum intern in HTML umgewandelt, und da es für die enthaltenen Elemente keine Darstellungsinformationen gab (wie zum Beispiel <b> als “fett” definiert ist), wurden sie schlicht “unsichtbar” dargestellt.
![]()
Ich “löste” das Problem, indem ich ein (nämlich oben stehendes) Bildschirmfoto des XML-Dokuments ausdruckte, was auch funktionierte. Warum aber ein einfacher Ausdruck von XML-/HTML-Code partout nicht klappte, ist für mich unergründlich. Erfahrungsgemäß würde ich jetzt einfach mal Dell die Schuld geben. Dass Firefox zu blöd sei, so etwas wie den Quellcode einer Webseite als Reintext an einen Drucker zu senden, bezweifle ich nämlich dann doch.


Nerd.
Sag ich doch!