XSLT mit PHP4
umsetzung
Allen beschriebenen funktionen müssen die pfade zu den XML- und XSL-dateien übergeben werden. Damit das auch auf jedem webspace funktioniert, muss erst einmal das stammverzeichnis ermittelt und in einer variable gespeichert werden.
<?php $filepath = $_SERVER['DOCUMENT_ROOT']; ?>
An diese variable wird der relative pfad zur datei angehängt.
libxslt
XSLT mit libxslt sieht wie folgt aus:
<?php $domXmlObj = domxml_open_file($filepath . '/rss.xml'); $domXsltObj = domxml_xslt_stylesheet_file($filepath . '/rss2html.xsl'); $domTranObj = $domXsltObj->process($domXmlObj); echo $domXsltObj->result_dump_mem($domTranObj); ?>
In der ersten zeile wird die xml-datei eingelesen, in der zweiten der stylesheet. Danach wird erstere durch zweiteren transformiert. Zuletzt wird das ergebnis ausgegeben. Diese methode liefert je nach ausgangsdateien nicht nur utf-8 sondern auch iso-kodierungen.
Auch in PHP5 gibt es die libxslt noch; sie ist auch dort unsere bevorzugte methode. Wer also von PHP4 auf PHP5 übersiedelt, braucht seine skripte nicht gleich umzuschreiben.
Sablotron
Für den parser Sablotron sieht der aufruf wie folgt aus:
<?php $zeiger = xslt_create(); $html = xslt_process($zeiger, $filepath . '/rss.xml', $filepath . '/rss2html.xsl'); xslt_free($zeiger); print $html;
Hier ist der ablauf nicht so einfach nachzulesen. Wir empfehlen copy-and-paste.
Achtung: Ohne rücksicht auf die ausgangsdateien liefert Sablotron ausnahmslos utf-8 zurück.
Sablotron ist als parser für XSLT umstritten und in PHP5 nicht mehr standard. Er neigt oft zu nicht nachvollziehbaren mätzchen und ist nicht wirklich schnell. Der webspace-provider der blechtrottel brodaktschns hat sich aus eigenem entschlossen, unsere seiten auf PHP5 zu übersiedeln, um den problemen mit Sablotron aus dem weg zu gehen. (An dieser stelle noch einmal danke an Viennaweb.)