Der Plan

Die Idee war, die XML-Quellen möglichst unabhängig von späteren Strukturen speichern zu können und die Bezüge zwischen den einzelnen Texten automatisch auflösen zu können. Es werden dabei drei Ebenen unterschieden: die Speicherung der Texte im Dateisystem, die Verbindungen der Einzeltexte untereinander und die spätere Struktur auf dem Webserver.

Die lokale Speicherung erfolgte in einem Verzeichnis pro Kapitel, in das auch die Leser-Kommentare abgelegt werden. Die Struktur, in der diese Kapitel eingebunden ist, wird über eine getrennte XML-Datei festgelegt: zum Zwischenschieben oder Entfernen von Kapiteln ist es so nicht notwendig, die vorherigen oder nachfolgenden Artikel zu ändern. Es werden lediglich Einträge in der Struktur-Dateien hinzugefügt oder entfernt.

Auch wenn die Struktur, wie sie sich dem Betrachter zeigt, baumförmig ist, wurde die Artikel auf dem Server in einer flachen Hierarchie (keine Unterverzeichnisse) abgelegt. Dies vereinfacht vor allem den Upload geänderter Texte und die Umstellung auf andere Technologien. (Die erzeugten Namen werden durchaus aus der Baumstruktur der Texte generiert, dies aber nur aus Faulh^w^wzur Vereinfachung der Skripten und um "lesbare" URIs zu erhalten) Weiterhin gibt es keine Extensions (.html, .shtml, .xml, etc), was die Änderung von HTML auf SHTML und von dort auf die Ausgabe eines Servlets sehr vereinfacht hat. Lesenswert zu dem Thema ist übrigens "Cool URIs don't change" von Tim Berners-Lee.

Die Neuimplementierung behält einige der Abstraktionen bei, auch wenn alles inzwischen in einer Datenbank gespeichert wird. Die Artikel liegen weiterhin in einem DocBook-ähnlichen XML-Format vor, allerdings pro Artikel, nicht mehr als Einzelkapitel. Eine Änderung des XML triggert die Generierung der einzelnen Kapitel, deren Absätze dann als fertige HTML-Fragmente in einer eigenen Struktur abgelegt werden. Dies erlaubt die Beibehaltung der alten Struktur, Erzeugung der "Digest"-Versionen (alle Kapitel auf einer Seite), und dynamische Einbindung von Kommentaren, ohne das ursprüngliche XML bei jedem Zugriff neu zu parsen. Dazu lassen sich Kommentare, Begriffsdefinitionen und Links im Redaktionssystem bequem bearbeiten. Aber weiter mit der Historie.