Bereits im Jahr 2011 habe ich einen Blog Artikel über eine XSLT Template Engine veröffentlicht. Mittlerweile schreiben wir das Jahr 2020 und seitdem hat sich natürlich einiges getan. Aus diesem Grund gibt es ein Refactoring und die XSLT Template Engine erscheint im neuen Glanz.
Am Thema XSLT selbst hat sich in den letzten Jahren relativ wenig getan. Mit XSLT ist nach wie vor XSL Transformation gemeint. Bei XSL handelt es sich um Extensible Stylesheet Language. Diese Stylesheets, die in der Template Engine als Templates funktionieren, werden durch den PHP eigenen XSLT Prozessor eingelesen. Der Prozessor verarbeitet dann XML Daten und bringt diese dann in das in den XSL Templates definierte Ausgabeformat. Für die Verwendung der Template Engine wird die aktiviert XSL Extension in PHP benötigt.
Die praktische Anwendung
Da ich in der Vergangenheit viel mit dem BiPRO Format zu tun hatte, bot es sich hier natürlich an einen XSLT Prozessor als Template Engine zu verwenden. BiPRO Daten werden im XML Format gesendet und empfangen. Anstatt diese Daten für die Darstellung auf dem Bildschirm aufwendig aus dem XML zu extrahieren und an eine View Instanz zu übergeben, bietet es sich an die XML Daten direkt über einen XSLT Prozessor in XSL Templates zu verarbeiten. In diesem Fall spart man sich die Verarbeitung der XML Requests und Responses vor der Ausgabe auf dem Bildschirm, weil diese direkt von einem XSLTProzessor verarbeitet werden.
Aber mal losgelöst von BiPRO lässt sich XSLT natürlich in allen Bereichen anwenden, in denen es darum geht XML Daten anzuzeigen.
Die Vorteile von XSLT
Im Vergleich zu anderen Template Engines wie Mustache oder Twig handelt es sich bei XSLT um ein Format, welches direkt von der W3C heraus gegeben wurde. Ein nativer, definierter Web-Standard und keine weitere Template Syntax, die zusätzlich implementiert werden muss. Sie ist eigentlich von Hause aus da. Ich habe also keinen Overhead durch eine weitere Library, die die Verarbeitung von eigens definierter Template-Syntax erst mit der angewendeten Programmiersprache umsetzt, um darüber dann Ausgaben zu erzeugen.
Das GitHub Repository
Natürlich teile ich die XSLT Template Engine auch dieses mal mit Euch. Ich habe hierfür ein GitHub Repository eingerichtet, so dass ihr die Dateien von dort aus bequem beziehen könnt (z.B. über Composer).
https://github.com/ezkimo/xslt-template-engine
Ich werde das Repository von Zeit zu Zeit mal erweitern. Über Composer könnt ihr dann das entsprechende Update automatisch beziehen. Die Verwendung der XSLT Template Klasse steht Euch natürlich frei. Solltet ihr Vorschläge für die Weiterentwicklung haben, immer her damit.
Habt Spaß damit.