[bxmlt] Chris Hübsch: Webbasiertes Management semistrukturierter Daten mit X*-Technologien

Chris Hübsch versucht, das Dokumentenmanagement der TU Chemnitz zu XMLisieren, um den Dschungel aus Word, PDFs, HTML, AmiPro und verwandten Technologien zu beseitigen. Das Projekt heißt FOBERON (Forschungsbericht Online).

Ein CMS anzupassen, ist ihm zu aufwändig. LAMP mag er nicht. Relationale Datenbanken hält er für unangebracht für sein Problem, da seine Daten semistrukturiert sind und die Schemata sich zu oft ändern.

Seine Lösung ist technisch minimalistisch: eine einzige XML-Datei dient als Datenspeicher (dürfte in 10 Jahren 120 MB groß sein, mit libxml in 10 Sekunden im RAM). Alles wird als DOM-Baum im RAM gehalten, eine SOAP-Schnittstelle dient zur Manipulation, XPath zum Finden.

Allerdings kann man einen solchen DOM-Baum nicht mehr in Echtzeit per XSLT manipulieren. HTML-Seiten werden aus Templates (HTML mit Zusatztags) generiert. Aus URL-Parametern werden XPath-Ausdrücke, die Teile des DOM-Baums zurückliefern, welche dann per XSLT transformiert werden.

Statische HTML- und PDF-Versionen gibt es ebenfalls. Für PDF wird XSL:FO via Apache FOP benutzt.

Die Bearbeitung der Daten erfolgt über eine Webschnittstelle, in Python implementiert. Der Dienst kopiert den zu bearbeitenden Teil des DOM-Baums in einen temporären Speicher, die Manipulation erfolgt dort. Die Formulare selbst werden per XSLT aus dem Teilbaum erzeugt. Zusätzlich gibt es XML-Fragmente als Templates für neue Knoten.

8000 Zeilen Code, davon 6400 XSLT. Je ein Drittel für Output-HTML, XSL/FO, und HTML-Formulare. Alles sehr stark entkoppelt, dadurch robust und halbwegs skalierbar. Schlecht: 80% der Verarbeitungszeit geht für TCP und HTTP drauf. Daher nicht für viele Kunden geeignet.

Eine Python-Klasse lässt sich mit zwei Zeilen Code zu einem Webservice machen (SOAPpy).

Demo: Alles läuft flott, einigermaßen reiche Navigation. Von jeder Stelle der Navigation kann ein PDF erstellt werden. Die Bearbeitungsschnittstelle ist aus Usability-Sicht bedenklich, aber das war sicher kein Schwerpunkt.

Recht beeindruckend. Interessante, pragmatische Lösung, die anscheinend den 80/20-Punkt trifft.

This entry was posted in German/Deutsch. Bookmark the permalink.