phpbar.de logo

Mailinglisten-Archive

[php] Template Engine / XSLT

[php] Template Engine / XSLT

Ralf Müller r_mueller at imp-ag.de
Mon Jan 24 10:17:25 CET 2005


On Sat, 22 Jan 2005 16:44:38 +0100
David Molineus <david at molineus.de> wrote:

> Hi Liste,
> 
> ich bin momentan dabei mein bisheriges Framework neu für PHP 5 zu 
> schreiben / zu planen. Dabei überlege ich mir, ob eine Template Engine 
> sinnvoll wäre. Bisher habe ich als Templatesprache PHP selbst verwendet 
> und bin damit auch recht gut gefahren. Da ich jetzt aber verschiedene 
> Ausgabetypen (XHTML, XUL, eventuell PDF) unterstützen will, überlege ich 
> mittels XML eine eigene Templatesyntax zu erstellen.
> 
> Das Grundgerüst meines Frameworks sind Komponenten, die verschiedene 
> Aufgaben übernehmen. Meine Idee für die Neuplanung ist es, die 
> Komponenten im Template mittels spezifischen XML-Tags darzustellen. Dann 
> gibt es für jede Ausgabeart ein Stylesheet, um die Transformation 
> durchzuführen. Um die Performance zu erhöhen, würde ich die Templates in 
> PHP compilieren lassen, ähnlich wie es Smarty macht.
> 
> Meine Fragen richten sich jetzt hauptsächlich wie die Transformation 
> durchzuführen ist. Dabei überlege ich entweder XLST zu verwenden oder 
> das Compilieren mit PHP's Expat Extension durchzuführen. Welche Variante 
> würdet ihr empfehlen? Ist die Verwendung von XLST überhaupt sinnvoll, 
> wenn das Ergebnis PHP-Code ist? Was sind eure Erfahrungen mit der 
> Performance beider Varianten?
> 
> Gruß,
> David

Hallo David,
Habe schon einige Stylesheets mit XLTS geschrieben und dabei immer bestimmte Funktionalität vermisst:
Zum Beispiel kann XSLT nativ keine for-Schleifen über integer Parameter. So etwas kann zwar implementiert werden, ist aber grausig. XSLT ist KEIN Ersatz für eine Scriptsprache sondern nur eine Stylesheet-Engine. Unter diesen Einschränkungen ist XSLT sehr leistungsfähig. Generel kannst du mit XSLT reine Texte erzeugen, also auch PHP, aber für so etwas ist XSLT MMN nicht gemacht. Die PHP-Scripte sind doch im eigentlichen Sinne keine reinen Dokumente.

Dann stellt sich noch die Frage, welche Implementierung von XSLT du benutzt: da gibt es die libxslt (eine C++-Library), xalan ( von Apache-Projekt), sablotron, saxon, oder die in PHP 5 eingebaute Engine (ein API für sablotron).

Zur Performance kann ich wenig schreiben, weil meine xml-Quelldatei etwa 31000 Zeilen hatte. Der Umgang mit kleinen Dateien ist daraus wohl nicht gut abzuleiten. Ich habe das Kommandozeilen-Tool der libxslt benutzt, was für einen Template-Genertor eher nicht praktikabel ist.

Generell scheint es verlockend, PHP-Dateien generieren zu lassen. 
Ein automatisches Ereugungen von Dateien, die wiederum per Interpreter html-Dateinen erzeugen... Das klingt recht fehleranfällig. Stell' dir nur mal vor, Du musst auch noch JavaScript erzeugen? 
Du willst mehrere Sprachen vermischen (PHP eingebettet in XSLT), und zumindest bei XSLT glaube ich, dass Du damit die Grenzen des sinnvollen überschreitest. Es gibt bestimmt gut getestete Enginges, die deinen Zwecken genügen. 

Wenn du bereit bist, XSLT zu lernen, dann kannst Du ja auch eine andere Sprachen lernen. Und dann gibt es wahrlich genug template-Engines, z.B. www.rubyonrails.org wäre da mein Favorit.

gruss
ralf


php::bar PHP Wiki   -   Listenarchive