XML based CMS in der Praxis

Autor:
Matthias Born
Orientation in Objects GmbH
Matthias Born
Matthias Born
Datum:Juni 2002

Abstract

In diesem Artikel möchten wir die technologischen Hintergründe und Vorgehensweise bei der XML basierten Erzeugung der OIO Homepage vorstellen. Dabei gehen wir kurz auf die Technologie an sich, Konzepte, eingesetze Open Source Tools und mögliche Alternativen ein.

Inhalt

Motivation

Große Mengen häufig wechselnder Internet-Seiten erfordern bei der Pflege und Aktualisierung sehr viel Aufwand. Sehr schnell können wesentliche Information auf den Seiten veraltet sein. Eine Lösung basiert auf relationalen Datenbanken oder nativen XML Datenbanken bei Dokument zentrischen und semi-strukturierten Inhalten. Gleichartige Daten können ausgelesen und mit Servlets oder CGI Skripten angezeigt und abgefragt werden. Entscheidende Nachteile an dieser Lösung sind zum einen die Kosten und der Aufwand eine solche Lösung zu entwickeln. Diese können dabei schnell den eigentlichen Pflegeaufwand übersteigen. Eine einfachere und flexiblere Lösung stellt die Repräsentation der Inhalte in XML dar, die mittels XSL und XSLT Stylesheets in die gewünschten Ausgabeformate transformiert werden. Dieses Verfahren wurde bei der Erstellung der OIO-Homepage eingesetzt und wird hier ausführlich beschrieben.

Aufgabenstellung:

Die Erzeugung der OIO-Homepage entstand in mehreren Ausbaustufen, die zugleich als Teilaufgaben angesehen werden können:

Ausbaustufe 1: XML Content

Ausbaustufe 2: PDF

Generieren von

im PDF Format

Ausbaustufe 3: Automatisierung

Ausbaustufe 4: WML, WAP

Architektur I

Der erste Schritt ist unabhängig vom Zielformat: Eine einheitliche Quelle, die 'page.xml', wird durch ein XSLT Stylesheet generiert. Dazu werden die Inhalte der verschiedenen XML Dateien zu einer einzigen Datei transformiert. Wie der Prozessor vorgeht, welche Quellen er benutzt und welche Struktur die resultierende XML Datei hat, steht in einer XML Datei, die den Aufbau der Seite beschreibt ('sitemap.xml'). Mit dieser Sitemap ist ein zentrales Management der Site möglich. Wenn man bedenkt, dass verschiedene XPATH Operationen, wie z.B. das Zählen von Knoten (Nodes) nur möglich sind, wenn dem Transformationsprozess eine einheitliche Quelle vorliegt, erkennt man schnell den Vorteil dieser Vorgehensweise. Da wir aber auf der anderen Seite die verschiedenen Inhalte aus Gründen der Übersichtlichkeit auch in verschiedenen Dateien vorhalten wollen, erzeugen wir uns einfach automatisiert eine große XML Datei aus den einzelnen XML Files.

Single Input

Architektur II

Im nächsten Schritt werden auf diese eine Quelle verschiedene XSL oder XSLT Stylesheets angewandt. Das Stylesheet all2html.xslt übernimmt die Erzeugung und Formatierung der HTML Seiten. Auf Grund der Komplexität werden einzelne Funktionen und Templates wie Navigation, Sitemap oder eine Liste aller verfügbaren Seminare in eigene Dateien ausgelagert und von all2html.xslt importiert. Für verschiedene Datumsoperationen wurde der XSLT Prozessor XALAN über Schnittstellen um Funktionalität erweitert (Extensions). Das betrifft vor allem Datumsoperationen zur Erzeugung der Seminartermine und Listen ausgehend vom aktuellen Datum.

Ein weiterer wesentlicher Schritt war die Bereitstellung von Seminarbeschreibungen im PDF Format. Es wurde eine weiteres Stylesheet (sem2fo.xsl) geschrieben, dass die Quellen in das inzwischen vom W3C verabschiedete FO Format (Formating Objects) transformiert. Aus diesem Format werden dann mit dem Formating Objects Prozessor FOP die PDF Dokumente generiert. Gleiches geschieht mit den Terminlisten(term2fo.xsl) und den Anmeldefaxen (fax2fo.xsl)

Ein ebenfalls vollkommen eigenständiger Schritt zur Generierung einer weiteren Präsentation ist das Stylesheet all2wml.xslt. Es generiert eine Minimalversion der OIO Homepage im WML Format, die mit den immer beliebter werdenden WAP Handys angezeigt werden kann. Da diese Form der Darstellung natürlich nicht den Umfang einer HTML Seite repräsentieren kann, muss schon in den XML Quellen gekennzeichnet werden, welche Daten die WML Version der Homepage haben soll, und welche nicht. Das wird mit einem zusätzlichem Attribut wml='true' erreicht.

Singe Input, Multiple Output

Tools

ANT

Einfach gesagt: ANT ist ein XML basiertes plattformunabhängiges Java Build Tool. ANT wird eingesetzt, um die Verwaltung in Projekten mit Build, Testen und Deploy zu reduzieren und vor allem zu automatisieren. Der gesamte Build Prozess läuft in einer einzigen VM ab, welches enorme Geschwindigkeitsvorteile gegenüber anderen Build Tools wie z.B. MAKE bringt. ANT lässt sich problemlos in IDE's wie JBuilder, Forte oder VisualAge integrieren und beliebig um eigene Tasks erweitern.
Die im Projekt benutzte Version ist 1.4.

XALAN

XALAN ist ein in Java oder C++ geschriebener XSLT Prozessor für die Transformation von XML Dokumenten in HTML, Text oder anderen XML Dokumenten. Er implementiert die W3C Empfehlung für XSL Transformation (XSLT) und die XML Navigationssprache XPATH. Xalan kann von der Command Line, in Applets, Servlets oder als Modul in anderen Programmen (XMLSpy) benutzt werden.
Im Projekt wurden die Xalan-Java Version 2 benutzt.
Alternativen zu Xalan sind XSLT Prozessoren wie Saxon und XT

FOP

Der Formatting Objects Processor FOP ist ein in Java geschriebener Formatierer für XSL Formating Objects. Er interpretiert den Formatting Object Tree und erzeugt daraus PDF Dateien. Dabei ist zu beachten, dass FOP nicht einmal annähernd alle Formating Objects und deren Attribute implementiert, wie sie vom W3C als Empfehlung vom 15 Oktober 2001 für die eXtensible Stylesheet Language XSL vorgeschlagen werden.
0.20.1 ist die im Projekt verwendete Version.

CVS

Das CVS ist ein aus der Open Source Welt bekanntes Versionskontroll- bzw. Überwachungssystem. Der große Vorteil besteht darin, dass das Projekt von mehreren Personen gleichzeitig bearbeitet werden kann und dennoch sicher gestellt ist, dass jeder mit der jeweils aktuellsten Version arbeitet und die Mitarbeiter sich nicht gegenseitig behindern. Alle Änderungen am Projekt werden dokumentiert, so dass bei Problemen jede Änderung wieder rückgängig gemacht werden kann. Zudem kann sich jeder Mitarbeiter über aktuelle Änderungen informieren.
Im Projekt wird die Version 1.11 verwendet.

Alternativen und Ausblick

Cocoon

Zum Batch Job bietet Cocoon eine echte Alternative.
Cocoon ist ein 100%-iges Java Publishing Framework um Webinhalte zur Verfügung zu stellen. Cocoon arbeitet mit einem Pipeline System und ist dadurch vollkommen dynamisch. Wird an einer XML Quelle irgend etwas geändert, erkennt Cocoon dies und generiert eine neue Präsentation des Inhaltes (HTML, SVG...). Schon Sekunden später kann sich der User die aktuelle Version auf der Seite anschauen. Für überschaubare Seiten mit häufig wechselnden oder gar zeitkritischen Inhalten ist Cocoon das optimale Tool.
Wesentlich für die Arbeit mit Cocoon und eXtensible Server Pages ist aber eine konsequente Trennung von Content, Logic und Style.

XML Datenbanken

Bei noch größeren, einheitlichen (dokumentzentrisch) Datenbeständen kann es sich lohnen, diese in XML Datenbanken vorzuhalten. Zu erwähnen sind dabei kommerzielle Produkte wie XHIVE oder Tamino. Eine Open Source Alternative ist DBXML. Wer sich mit XSL bzw. XSLT auskennt, sollte sich auch darin schnell zurecht finden: Abfragesprachen sind XPath und XQuery. Grafische Oberflächen und Formulare erleichtern das Arbeiten.

Zusammenfassung

Single Content / Multiple Output

Inhalte müssen immer wieder in verschiedenen Datenformaten dargestellt werden. Single Content verhindert Inkonsistenzen zwischen den Formaten, da diese auf ein und die selbe Quelle zurückgreifen.

Trennung von Content, Logic und Style

Die Trennung dieser drei Gebiete ermöglicht eine effiziente Arbeitsteilung. Es muss nicht mehr jeder alles können, Inhalte können problemlos von verschiedenen Seiten eingepflegt werden. Der Webentwickler bzw. Webdesigner kann sich voll und ganz auf seine eigentliche Arbeit konzentrieren, ohne sich Gedanken über Inhalte machen zu müssen.

Zum Geschaeftsbreich Competence Center
Schulung
Die Kenntnisse für eine XML Content Management Lösung wie hier beschrieben, können Sie folgenden Schulungen erwerben: