14. August 2007 XSLT als Template Engine in PHP - Teil 1
Tags: PHP, Template Engine, XML & Co, XSLT
XSLT bietet enorm viele Einsatzmöglichkeiten. Eine davon ist der Einsatz als Template Engine in PHP. XSLT–Neulinge sollten sich zuerst den Beitrag »Einführung in XSLT« ansehen. In dieser Beitragsreihe werde ich die Vorteile und Eigenheiten von XSLT in diesem Einsatzgebiet erläutern.
Im ersten Teil dieser Reihe möchte ich die Möglichkeiten erläutern wie die Template Engine aufzubauen ist und einen Überblick schaffen. Dies ist wichtig, denn die nächsten Beiträge werden sich dann im Detail mit diesen Dingen befassen.
Was ist eine Template Engine?
Eine Template Engine dient in PHP dazu den HTML–Output — die Präsentation — weitestgehend vom PHP–Code — der eigentlichen Applikationslogik — zu trennen. Gründe dies zu tun gibt es viele:
- die Arbeit im Team erleichtern
Aufteilung in PHP–Entwickler und Webdesigner - bessere Stukturierung und Übersichtlichkeit
- Refactoring
eine Website ein komplett neues Aussehen erhalten ohne in die Applikationslogik eingreifen zu müssen
Wer bereits die Template Engine »Smarty« verwendet hat, dem sollte das Konzept vertraut sein und sollte den folgenden Beiträgen gut folgen können.
Eine Übersicht
Die obige Grafik zeigt den groben Aufbau der XSLT Template Engine. Der Client / Browser ruft ein PHP–Script unserer Website auf. Hier greifen wir nun auf die Datenbank zu, validieren irgendwelche Eingaben des Users oder führen sonstige Aktionen aus. Evtl. benötige wir für die aufgerufene Seite dynamische Inhalte, die wir z.B. gerade aus der Datenbank gelesen haben, um diese nun weiter verwenden zu können generieren wir mit Hilfe der »DOM Extension« eine XML–Datei in die wir unsere dynamischen Inhalte ablegen.
Nun wird dem XSLTProcessor aus der »XSL Extension« in PHP die zuvor dynamisch generierten XML–Daten übergeben und zudem laden wir auch hier unser gewünschtes XSL–Stylesheet. Das Stylesheet kann zudem noch weitere XML–Dateien einfügen, was in einem anderen Teil dieser Reihe behandelt wird. Der XSLTProcessor generiert nun die HTML–Ausgabe, die wir an den Browser senden können.
Moderne Browser könnten den Vorgang den der XSLTProcessor serverseitig ausführt auch selbst erledigen indem wir ihm die XML–Datei und das XSL–Stylesheet übergeben, aber da wir uns nicht darauf verlassen können, dass der User mit einem modernen Browser surft ist diese Methode unumgänglich. Die Serverlast kann zudem mit Hilfe von Caching wesentlich reduziert werden, was in einem extra Beitrag behandelt werden wird.
Um XSLT als Template Engine in PHP zu verwenden benötigen wir die DOM Extension und die XSL Extension, die beide standardmäßig in PHP5 enthalten sind. Im nächsten Teil geht es dann um die dynamische Generierung der XML–Daten.
weiter zum zweiten Teil dieser Beitragsreihe »
Ähnliche Artikel
Der Beitrag wurde am Dienstag, den 14. August 2007 um 13:47 Uhr veröffentlicht und wurde unter PHP, XML & Co abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

Der Link auf den XSLT-Prozessor unter PHP scheint falsch zu sein, statt XSK ist wohl XSL gemeint:
http://www.php.net/xsl
Du hast natürlich recht!
Hallo,
mein Kompliment - ein wirklich sehr nützliches, gut strukturiertes und ausführliches Tutorial zum diesem Themenkomplex.
Danke schon mal für die tolle Arbeit!
Ich versuche eine System wie hier vorgestellt aufzubauen allerdings muss das System noch zusätzlich neben der HTML Ausgabe eine PDF-Ausgabe auch beinhalten.
Könnt ihr mir dazu Tipps und Hilfestellung geben, was für Erweiterungen und Konfigurationen ich noch benötige?
Gibt es da eventuell zu diesem ein Tutorial?
Ich hätte da noch eine Bitte, wenn es möglich ist: Da die Konfiguration eines WAMP- oder LAMP-Systems nicht gerade einfach ist (gibt es immer wieder Probleme …) und bei jeder neuen Erweiterung neue Problemquellen entstehen, wäre ich dankbar, wenn das WAMP System (Konfiguration) beschrieben würde, auf dem dieses Tutorial einwandfrei funktioniert.
Ich habe zuerst ein WAMP System aufgebaut, leider hat es immer zur Fatal Error geführt:
Fatal error: Class ‘XsltProcessor’ not found …
Jetzt habe ich ein XAMPP für Windows installiert und es geht einwandfrei.
Danke nochmal für das schöne Tutorial
Gruß
Thomas
Im wesentlichen werden nur die zwei beschriebenen Extensions benötigt. Ansonsten habe ich keine speziellen zusätzlichen Konfigurationen getroffen. Zur Einrichtung eines WAMP-Systems kann ich leider keine Tipps geben, da habe ich selbst auch nicht mehr Erfahrung, als XAMPP zu installieren. Bei der Konfiguration unter Linux habe ich lediglich die Option –with-xsl[=DIR] angegeben, wobei DIR evtl. für den Pfad zu libxslt zu setzen ist. Wie sich das ganze unter Windows verhält kann ich leider nicht sagen.
Zum Export in PDF muss zusätzlich XSL-FO verwendet werden. Das ist eine Formatierungssprache, die für den PDF-Export verwendet werden kann. Danach kann dieses FO-Dokument über einen FO-Prozessor (z.B. Apache FOP http://xmlgraphics.apache.org/fop/) in PDF konvertiert werden.
Mich würde interessieren, wo genau, das ganze bei Ihnen zum Einsatz kommt. Haben Sie einen Link für mich, wenn die erste Version online geht?
Hallo,
zunächst vielen Dank für die prompte Antwort.
Ich werde erstmal mit XAMPP weiterarbeiten und bei Gelegenheit werde ich mich nochmal mit der Konfiguration eines selbst aufgesetzten WAMP-Systems auseinandersetzen.
Ich habe bisher XSL-FO innerhalb von XML-Editoren wie Stylus Studio, Altova eingesetzt und PDFs generiert (relativ einfaches Verfahren …), in XSL-FO in Kombination mit PHP habe ich bisher leider noch keine Erfahrung, deshalb suche ich nach einem Tutorial dafür - ich werde etwas weiter recherchieren und wenn ich Erfolg habe, werde ich hier davon berichten.
Das System, welches ich programmieren möchte, wird sich innerhalb vom Intranet einer Firma befinden, auf dem von Außen kein Zugriff gestattet ist, deshalb kann ich leider keinen Link nennen ;-(
Gruß
Thomas