![]() |
|
URL dieses Artikels:
zu Ausgabe:
5.2006
Multi Channel Publishing mit Cocoon und InBetween
Tischlein deck dich
Falk Wolsky
Die Verwaltung von Daten für Produkt- und Unternehmenspräsentation ist in vielen Unternehmen bereits gut organisiert. Es kommen Datenbanken wie DB2, MSSQL oder MySQL zum Einsatz. Auch XML-Datenbanken werden bereits eingeführt und genutzt. Content-Management-Systeme erleichtern dabei die Verwaltung und den redaktionellen Ablauf beim Sammeln und Qualifizieren der Daten. Wie aber werden die vorhandenen Daten so effizient wie möglich für verschiedene Output-Medien genutzt? Dieser Artikel stellt eine Lösung mit dem XML-Framework Cocoon und der Software InBetween vor, die vorhandene Mediendaten flexibel für verschiedene Publikationen in verschiedenen Medien verfügbar macht.
Der Geschäftsbereich Linde Gas der Linde AG [1] in Deutschland stellt seinen Kunden zyklisch einen gedruckten Produktkatalog zur Verfügung. Der Produktkatalog wurde bisher in akribischer Handarbeit gesetzt. Man entschied sich dann, eine automatisierte Lösung auf Basis von Cocoon und InBetween [2] in Zusammenarbeit mit der e-pro solutions GmbH [3] einzuführen. Damit steht dem Unternehmen nun eine flexible Output-Management-Lösung für die Produktion des Produktkatalogs zur Verfügung. Für die Darstellung und Verwaltung des Internetauftritts und des Online-Produktkatalogs verwendet Linde Gas in Deutschland eine MySQL-Datenbank mit einem CMS. Das CMS wird für die Pflege und für die Ausgabe der Daten im Internet genutzt. Die Erstellung von Druckwerken, die Produktdaten beinhalten, wurde schon immer von Hand durchgeführt. In Zukunft sollen die qualifizierten Daten aus der MySQL-Datenbank aber auch für andere Publikationen genutzt werden. Der zyklisch erscheinende Produktkatalog für die Produktsparte "Spezialgase" wurde als Einstiegsprojekt genutzt, um neue Software und Prozesse zu installieren. Die Software InBetween macht als Java-Software betriebssystemunabhängig die automatisierte Erzeugung von Druckwerken in DTP-Programmen, aber auch die Erstellung von Online- oder Office-Inhalten (z.B. Word oder PowerPoint-Dokumente) möglich. InBetween arbeitet dazu für den Datenaustausch und im Kern der Anwendung mit XML. In der Übersicht gestaltet sich der neue Prozess so: Daten werden im Linde Gas CMS gepflegt, über Cocoon nach XML gewandelt und als XML-Datei gespeichert. In InBetween werden Gestaltungsvorlagen und das Katalogdesign erstellt und mit den Daten aus der XML-Datei verbunden. Dann wird über InBetween eine Ausgabe gestartet. In diesem Fall wird InDesign CS2 (durch InBetween gesteuert) verwendet, um das gesamte Dokument automatisiert zu setzen. Als Bindeglied zwischen der MySQL-Datenbank und InBetween wurde das Cocoon-Framework gewählt. Auf einfache Weise lies sich mit Cocoon ein Mapping mit kundenindividuellen Funktionen erstellen. Eine besondere Stärke spielte Cocoon mit der leichten Änderbarkeit des Mappings und insbesondere der Funktionsdefinitionen im Mapping aus. Es ist natürlich abzusehen, dass in einem Einführungsprojekt an den Daten oft nachjustiert werden muss. Aufgrund dieser Eigenschaft wurde letztlich Cocoon für das Mapping verwendet. Als Austauschdialekt wurde Media-XML verwendet. Obwohl dank InBetween eine freie Auswahl des XML-Dialekts möglich ist, bietet Media-XML als Austauschformat für die Präsentation von Produktdaten einen fast idealen Raum. Media-XML bietet Strukturierungsmöglichkeiten für Kapitel, Gruppen, Produkte und reine Informationscontainer. Neben der einfachen hierarchischen Strukturierung sind in Media-XML zusätzlich noch Beziehungen zwischen den beschriebenen Inhaltstypen möglich. Beispielsweise lassen sich damit sehr gut Produktbeziehungen oder Beziehungen von "losen" Informationen zu Produkten abbilden. Der Produkt-Katalog wurde nach der Kataloganalyse in ganz ähnliche Strukturen untergliedert. Es gab Kapitel, Gruppen, Produkte und Zusatzinformationen. Jeweils eine Gruppe von Produkten sollte auf maximal einer Doppelseite platziert werden. Abb. 1: Die Bedienoberfläche von InBetween Die MySQL-Datenbank wurde für das Cocoon-Framework über den JDBC-Treiber verfügbar gemacht. Der Eintrag in der zentralen Konfigurationsdatei sorgt anschließend dafür, dass auf die Datenbank einfach über den SQL-Transformer zugegriffen werden kann. Nun konnte mit dem Aufbau der Mapping-Anwendung begonnen werden. In insgesamt sechs XSLT-Dateien wurde eine Mapping-Anwendung zusammengestellt. Nach dem Start der Anwendung wurden zunächst alle relevanten Daten aus der Datenbank ausgelesen und standen somit virtuell als XML-Baum in der Anwendungspipeline zur Verfügung. Nacheinander wurden in einem Rutsch die sechs XSL-Transformationsdateien verarbeitet und der XML-Baum somit mehrmals umsortiert und Stück für Stück transformiert. Nach dem fünften Schritt lagen die Daten in der gewünschten Form und Sortierung vor. Im letzten Schritt wurde die Media-XML-Struktur aufgebaut und mit den Daten gefüllt. In der Media-XML-Datei sind somit eine Anzahl Kapitel mit vielen Gruppen und Produkten angelegt. InBetween ermöglicht die Erstellung von Gestaltungsvorlagen. Vorlagen sagen, an welchem Platz welche Daten angezeigt werden und wie diese in Form und Design gestaltet werden sollen. Nicht geklärt ist noch, wann welche Vorlage für die Erstellung eines ganzen Produktkatalogs zum Einsatz kommen soll. InBetween arbeitet von Grund auf mit XML und bietet flexible Möglichkeiten, um die Vorlagen mit den Daten zusammenzubringen. Dabei spielt es kaum eine Rolle, welches XML-Format bzw. welcher Dialekt verwendet werden soll. Möglich wird das durch die geschickte Auswertung der jeweiligen XML-DTD. Als Benutzer von InBetween hat man die Möglichkeit, eine XML-Daten-Datei zu laden. Anschließend können über einen Dialog diejenigen Elemente aus der XML-Datei gewählt werden, die für die Struktur des geplanten Druckwerkes bedeutsam sind. In Media-XML finden wir zum Beispiel XML-Elemente vom Typ Treegroup. Diese Elemente speichern die Kapitelinformationen, also teilen wir InBetween mit, dass es diese Elemente bei der Erstellung des internen Datenstapels berücksichtigen soll. Ebenso sind für die Zusammenstellung des Druckwerks "Produktkatalog" die XML-Elemente vom Typ Product wichtig. Somit stellt man über die Bedienoberfläche die Anweisungen zusammen, um aus der Vielzahl der geladenen XML-Elemente die bedeutsamen herauszufiltern und sie in einem Datenstapel zur Verfügung zu stellen. Datensätze und Vorlagen InBetween stellt eine Liste von unterschiedlichen Datensätzen zur Verfügung. Treegroups und Products lassen sich durch Attribute typisieren und liegen in der Reihenfolge im Datenstapel, in der sie in der XML-Datei aufgefunden werden. Neben dem "Stapel" der Datensätze aus der XML-Datei wird ein Datenkatalog aufgebaut. Er ordnet die Vorlagen den unterschiedlichen Typen der Datensätze im Datenstapel zu. So wird beispielsweise einer Treegroup vom Typ Chapter die Vorlage für Kapitel zugeordnet. Dem Produkt vom Typ Standard wird die Vorlage für die Produkttabelle zugeordnet. Auf diese einfache Weise können unterschiedlichste Druckwerke wie Mailings, Produktflyer, Kundenkarten, Preisschilder, Listen, Plakate oder Visitenkarten automatisiert erstellt werden. Im letzten Schritt werden die Vorlagen gestaltet. Sie enthalten Informationen über einzelne Layout-Objekte wie Textrahmen, Grafikrahmen oder Tabellen. In der Vorlage wird auch bestimmt, welcher Datenwert in welches Layout-Objekt gesetzt werden soll. Die Templates bzw. Layoutvorlagen definieren den Layout-Aufbau, Platzhalter für Datenwerte sowie das Design und die Styles für die Platzhalter. Zudem sorgen Templates für die benötigten Regeln, mit denen aus dem reinen Ausgeben der Daten im Zielmedium eine detaillierte Steuerung von dynamischem Layout möglich wird. Vorlagen und das Programmieren mit der Maus Daten mit XSL und FOP auszugeben ist sehr flexibel und ermöglicht hochautomatisierte Layouts mit gutem gestalterischen Anspruch. Nachteil ist, dass das Layout programmiert werden muss. Eine Lösung, in der ein Benutzer oder Kunde nicht alle Möglichkeiten zur Einflussnahme auf Layout und Datenbindung erhält, muss sorgfältig erwägt werden. InBetween bietet hier als Standardsoftware für Database Publishing eine elegantere Möglichkeit an. Durch die Bedienoberfläche können Nutzer volle Kontrolle über alle Datenbindungen ausüben, diese erweitern, umstellen oder den eigenen Bedürfnissen, z.B. einem veränderten Datenmodell, anpassen. Ermöglicht wird dies durch einen Assistenten für Datenabfragen. Dieser Assistent verwendet die DTD der geladenen Daten-XML, um eine komprimierte Sicht auf die Datenstruktur darzustellen. In dieser Darstellung lassen sich dann direkt die benötigten Datenwerte selektieren und für den ersten Teil einer XPath-ähnlichen Datenabfrage auswählen. Nachdem also z. B. das Attribut eines Produktelements gewählt wurde, wird in einem zweiten Schritt eine Bedingung zusammengestellt. Diese Bedingung erlaubt die Eingrenzung des Datenabfrageausdrucks auf einzelne Knoten oder Knoten mit bestimmten Informationen und so weiter. Über den Datenabfrageassistent kann ein Benutzer, der XML in den Grundzügen versteht, ohne eine Zeile Code "programmieren". An automatisierende Publishing-Systeme wird meist von vornherein ein geringerer Anspruch an gestalterische Freiheiten gestellt. Natürlich gelten auch für InBetween gestalterische Grenzen. Der Template-Aufbau, die Layout-Objekte und die strenge Orientierung an DTP-Programm-Features ermöglichen in vielen Fällen bis zu 100 % Automatisierung. Der Produktkatalog von Linde Gas ist in Layout und Typografie in klaren Formen gestaltet. InBetween war in der Lage, den gestalterischen Anspruch zu erfüllen und auch im Bereich der feinen Typografie alle Anforderungen zu meistern. Auf diese Weise wurde auch für den Linde-Gas-Produktkatalog eine nahezu hundertprozentige Automatisierung erreicht. Dabei entspricht die erzielte Ausgabe exakt den strengen Vorgaben des "Linde Gas CI/CD-Books". Jedes Layoutobjekt kann im Grunde mit allen Feinheiten herkömmlicher DTP-Programme ausgestattet werden. InBetween speichert die Templates in einem eigenen XML-Format. Im Prinzip handelt es sich dabei um FOP-ähnliche Strukturen. Das Besondere an InBetween ist, dass diese Vorlagen über die Bedienoberfläche fast wie in einem DTP-Programm bedient und gesteuert werden können. Es gibt Gruppen, Ebenen und Schichtung bzw. Überdeckung der einzelnen Layout-Objekte. Das Setzen gestaltet sich dabei analog zu der Arbeitsweise in den führenden DTP-Programmen. Layout-Objekte wie Textrahmen, Bildrahmen oder Kombinationsrahmen (Text und Bild in einem gemeinsamen Rahmen) sind sehr nützliche Werkzeuge. Unverzichtbar für fast jede Präsentation von Daten sind jedoch Tabellen. Das Zusammenstellen von Tabellen erfolgt in InBetween ebenso ausschließlich über die Bedienoberfläche. Dynamische Tabellen erlauben im Gegensatz zu statischen Tabellen die Ausdehnung und das Füllen der Tabellen über die Daten selbst. So bestimmen zum Beispiel die Anzahl von Produkten in einer Gruppe oder die Anzahl der entsprechenden Produktattribute die Menge der Zeilen und Spalten einer Tabelle. Für den Produktkatalog wurden dadurch nur drei Tabellenvorlagen für die verschiedenen Datenspalten benötigt. Zellenpaare, die aufgrund gleicher Werte zusammengezogen werden können, oder Tabellenverdichtung über Multi-Column- oder Multi-Row sowie die Funktionalität für Matrix bzw. Kreuztabellen erweitern die Möglichkeiten von Tabellen. Für eine normale Tabelle mit Produkten einer Gruppe und pro Produkt mit jeweils allen Attributen reicht bereits eine einfach anzulegende Tabellenstruktur. Ein linker und oberer Tabellenkopf wird in dem Dialog mit wenigen Klicks angelegt. Dazu wird ein Content-Bereich definiert und die drei Elemente erhalten die jeweiligen Datenabfragen. Der linke Tabellenkopf speichert die Produktnummern, der obere Tabellenkopf die Bezeichner der Attribute. Über diese Konstellation werden automatisch alle benötigten XML-Abfragen, die für jede Zeile und Spalte benötigt werden, erzeugt. Die sonst umständliche Programmierung lässt sich damit umgehen, und erste Ergebnisse sind bereits in der Vorschau sichtbar. Ausgabe des Druckwerks Die Daten wurden aus der Datenbank ausgelesen, nach XML transformiert und in die Software InBetween geladen. Anschließend wurde eingestellt, wie die Daten zu "verstehen" sind und welche Vorlagen verwendet werden sollen. In den Vorlagen wurden Platzhalter für Datenwerte, Tabellen und Gestaltungsvorlagen definiert. Nun sollen die Daten zusammen mit Layout und Design druckreif ausgegeben werden. InBetween kann allein mit den Bordmitteln Ausgaben für Word, PowerPoint, PDF und HTML erstellen. Mit den DTP-Programmen InDesign und QuarkXPress stehen zwei weitere Ausgabemöglichkeiten "ferngesteuert" zur Verfügung. Die gesamten 140 Produktseiten des Linde-Gas-Katalogs "Technische Gase" wurden in nur 45 Minuten in InDesign ausgegeben. Eine direkte Ausgabe nach PDF über den integrierten PDF-Renderer benötigte sogar nur etwa 5 Minuten. Listing 1 ... <map:match pattern="Database_Mapping">Die Cocoon-Mapping-Anwendung im Detail Zunächst wurden wie beschrieben alle relevanten Daten der MySQL-Datenbank in die Pipeline geladen, um anschließend durch die Transformationen umgewandelt zu werden (Listing 1). Dazu diente eine XSLT-Datei mit Anweisungen für den SQL-Transformer von Cocoon und den herkömmlichen SQL-Abfragen (Listing 2). Listing 2 <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:CSQL="http://apache.org/cocoon/SQL/2.0">Die Daten stehen nun in Listenform in einem großen XML-Baum in der Pipeline (also im Speicher) zur Verfügung (Listing 3). In den ersten Transformationen wird die Anordnung und die Verbindung von Gruppen aufgelöst und neu geordnet. Auch eine neue Verbindung in der Gruppenhierarchie musste angelegt werden. Leider war noch kein Distinct in XPath-Abfragen möglich. Listing 3 <CSQL:rowset xmlns:CSQL="http://apache.org/cocoon/SQL/2.0" nrofrows="9" name="Catalogs">Der Distinct wurde über einen einfachen Trick mit weiteren kleinen Transformationsschritten gelöst (Listing 4). Natürlich ließe sich das inzwischen mit XSLT 2 eleganter lösen. Nach den Vorbereitungen wurde die Media-XML-Struktur aufgebaut. Listing 4 Step1_Datas.xslt – "Umschichten" durch Sortieren der "TreegroupLink"-ElementeDie vergleichsweise großen Templates definieren einzelne Elementgruppen der Media-XML-Struktur. Zum Beispiel gibt es Vorlagen für den Treegroup-, den Product-, Text- oder Attribute-Node. Diese Knoten enthalten in Media-XML jeweils wieder viele Kind-Knoten, um den jeweiligen Datentyp bis ins Detail zu beschreiben. In Media-XML werden die Vorteile von hierarchischen Strukturen und flachen Datenlisten vereint. Dies geschieht über eine Verlinkung innerhalb der XML-Datei. Aus diesem Grund musste die eigentliche Erstellung des Media-XML-Baums in mehrere Schritte unterteilt werden. Der Vorteil dieser Struktur ist, dass die Masse der Daten in einer flachen Datenliste rasch über Abfragen ausgelesen werden kann, ohne dass die Struktur der Datenmenge verloren gehen würde. Links & Literatur
|
||
|