Xplate ist ein nahe an den XML-Standards implementierter XML-Prozessor. Hauptzweck ist das Verarbeiten von Web-Requests und Generieren von dynamischen Web-Inhalten, wobei Xplate nicht darauf eingeschränkt ist.
Aktueller Stand der Technik#
Es gibt eine Vielzahl von Frameworks für den Aufbau von Web-Seiten, selbst wenn man nur Java-basierte Systeme betrachtet. Allen gemeinsam ist, dass ein neues System erfunden wurde, das sehr spezielles und tiefes Know-How verlangt. Dabei unterscheiden sich die Frameworks untereinander so stark, das ein Umstieg fast einem Neueinstieg gleicht.Das erste XML-basierten System war XSLT, das auch heute noch eine Rolle spielt. Die Anwendung für Web-Seiten und HTML hat bis auf einige Spezialfälle fast vollständig an Bedeutung verloren. Es wurde hauptsächlich durch JSP und deren Nachfolgersysteme, sowie rein Java-basierte Systeme verdrängt.
Diese Frameworks weisen inzwischen eine enorme Komplexität auf und sind selbst für langjährige Experten schwerlich einsehbar. Die Systeme sind gewachsen, mit der Anforderung auf Abwärtskompatibilität. Einige Teile, wie zum Beispiel die Tag-Unit ist in JSF derart tief verbaut, das auf dieser Ebene der Eingriff so gut wie nicht mehr möglich ist.
Das Verständnis, wann ein Tag aufgebaut wird, in welchen Phasen welche Variablen zur Verfügung stehen, wie weit andere Tags instantiiert sind, ist kaum mehr nachvollziehbar. Ein Effekt ist, dass das Verhalten von <c:forEach>, <ui:repeat> oder anderen dynamischen Elementen gerade in komplizierten Situationen nicht verstanden wird. Kleine Änderungen können ein unvoraussagbares Verhalten der Anwendung bewirken.
Auch das Einsatzgebiet ist stark eingeschränkt. Factories und viele statische Elemente sind so mit dem Web-Request verbunden, dass selbst das einfache Laden oder Rendern einer XHTML-Datei zum Verhängnis wird.
Idee#
XML ist eine recht ausgereifte Sprache, die sowohl von Computer und Maschine gut verstanden wird. Vor allem gibt es für XML-Dateien die Möglichkeit ein Schema zu definieren (oder mehrere), die beschreiben, welche Tags auftauchen können und welche Attribute diese enthalten können. Diese Schema-Dateien haben die Endung .xsd und werden direkt von den XML-Editoren der Entwicklungsumgebungen unterstützt, wie zum Beispiel von Eclipse.Für eine Tag-Library inklusive Content-Assist und Hilfe-Texte ist nichts weiter nötig, als eine XSD-Datei zu generieren. Die Frameworks zum Einlesen von XML-Dateien liegen auch bereits lange vor, diese prüfen sogar auf Verstöße gegen diese Schema-Dateien.
Entsprechende Java-Klassen können anhand des XML-Namespace gefunden werden, dies können durch Konfiguration oder Annotationen zur Verfügung gestellt werden. Für das Abwickeln von Web-Requests ist dann nur noch ein kleines System erforderlich, das einen Kontext bereit hält, mit dem eine derart gestaltete XHTML-Seite abgearbeitet und das Ergebnis ausgegeben werden kann.