Transformieren und Formatieren



Ähnliche Dokumente
WEBSEITEN ENTWICKELN MIT ASP.NET

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

HTML5. Wie funktioniert HTML5? Tags: Attribute:

... MathML XHTML RDF

Einführung Responsive Webdesign

Übungsaufgaben zu XML:

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

4 Aufzählungen und Listen erstellen

Online-Publishing mit HTML und CSS für Einsteigerinnen

Workflow, Business Process Management, 4.Teil

HTML Programmierung. Aufgaben

Robot Karol für Delphi

XSL Templates. Mit Templates arbeiten. XSL Templates

IAWWeb PDFManager. - Kurzanleitung -

Qt-Projekte mit Visual Studio 2005

Kostenstellen verwalten. Tipps & Tricks

1 Mathematische Grundlagen

teischl.com Software Design & Services e.u. office@teischl.com

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Primzahlen und RSA-Verschlüsselung

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Speicher in der Cloud

Wie Sie mit Mastern arbeiten

Aufklappelemente anlegen

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Anleitung BFV-Widget-Generator

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

3. GLIEDERUNG. Aufgabe:

Übung: Verwendung von Java-Threads

Grundfunktionen und Bedienung

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an.

In S-Firm wird nur angeboten die Datei auf Diskette zu exportieren; die Einstellung für HBCI ist ausgegraut.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

XSL und XSLT. Inhalt. Mathias Heilig XSL Übersicht. Formatierungsprozess. Sprachbeschreibung. Vorführung Resümee

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Buddy - Algorithmus Handbuch für Endnutzer Stand

Beschreibung des MAP-Tools

CASCADING STYLE SHEETS WEBSEITEN-GESTALTUNG MIT CSS

einrichtung in den kaufmännischen Programmen der WISO Reihe

Ihr CMS für die eigene Facebook Page - 1

PowerPoint 2010 Mit Folienmastern arbeiten

Arbeiten mit UMLed und Delphi

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

BSV Ludwigsburg Erstellung einer neuen Internetseite

OP-LOG

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

31. März 2015 L A TEX Struktur und Formatieren

Handbuch ZfEditor Stand

XML-Praxis. XML-Anwendungen. Jörn Clausen

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

Bilder zum Upload verkleinern

CSS. Cascading Stylesheets

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Datensicherung. Beschreibung der Datensicherung

Generelle Einstellungen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Design anpassen eine kurze Einführung

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Content Management System. «Rainbow Basis» Grundlagen. Einfache Kursverwaltung

DB2 Kurzeinführung (Windows)

STANDORT SOEST FACHBEREICH AGRARWIRTSCHAFT. Arbeiten mit Word Erstellung einer Formatvorlage

Einführung in. Logische Schaltungen

1 topologisches Sortieren

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Microsoft Access 2013 Navigationsformular (Musterlösung)

YouTube: Video-Untertitel übersetzen

mehr funktionen, mehr e-commerce:

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Skript Pilotphase für Arbeitsgelegenheiten

Dokumentation von Ük Modul 302

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

TYPO3 Flip Book. TYPO3 Modul für Online-PDFs auf Basis von HTML5. System-Voraussetzungen: WebSite mit TYPO3 ab Version 4.5

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Allgemeiner Leitfaden zum Einfügen suchmaschinenoptimierter Texte

Serien- mit oder ohne Anhang

Vergleich automatisierbarer XML-Satzsysteme

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Herstellen von Symbolen mit Corel Draw ab Version 9

Hilfe zur Urlaubsplanung und Zeiterfassung

Benutzerhandbuch TABLE OF CONTENTS 1. Benutzerhandbuch Bedienung

IINFO Storyboard

impact ordering Info Produktkonfigurator

- Google als Suchmaschine richtig nutzen -

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

Guide DynDNS und Portforwarding

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Transkript:

Transformieren und Formatieren Dokumentation zum Vortrag Oberseminar XML von Michael Weiser

Transformieren und Formatieren: Dokumentation zum Vortrag Oberseminar XML von Michael Weiser Lehrender: Prof. Klaus Bastian Betreuer: Dipl.Inf. Stefan Kost Veröffentlicht 28.11.2002 Das vorliegende Dokument erläutert den Vortrag zum Thema Transformieren und Formatieren von XML im Rahmen des Oberseminars XML des Wintersemesters 2002/2003. [xml-os-pres]

Inhaltsverzeichnis 1.Einführung... 1.1.Gliederung...1 1.2. Wiederholung XML...1 1.3. Beispiel XML...1 2.Darstellung... 2.1.Einführung...3 2.2. Implizite Interpretation...3 2.3.CSS...3 2.3.1.Einführung...4 2.3.2. Beispiel XML...4 2.3.3. Rendering ohne CSS... 4 2.3.4.Stylesheet...5 2.3.5. Beispiel XML mit CSS... 5 2.3.6. Rendering mit CSS... 6 2.3.7.Pro/Contra...6 2.4. Indirektes Rendern...7 3.Transformieren... 3.1.Einführung...8 3.2. Beispiel XSLT...8 3.2.1.Einführung...8 3.2.2. Beispiel XML...9 3.2.3.Stylesheet...9 3.2.4.Output...10 3.3.Weiterführendes...10 3.4.Mehrfachtransformation...11 3.4.1. Stylesheet 1...11 3.4.2. Output 1...11 3.4.3. Stylesheet 2...11 3.4.4. Output 2...12 3.5. Generierung von Stylesheets... 12 3.5.1.Stylesheet...12 3.5.2.Output...13 3.6.Pro/Contra...13 4.Formatieren... 4.1.Einführung...14 4.2. Beispiel XML...14 4.3.Stylesheet...14 4.4.Transformations-Output...15 4.5.Formatierungs-Output...16 4.6.Pro/Contra...16 5.Zusammenfassung... 6.Referenzen... iv

Abbildungsverzeichnis 1.1.Beispiel-XML...1 2.1. Verarbeitungskette Implizite Interpretation... 3 2.2. Verarbeitungskette CSS...4 2.3. Beispiel-XML für CSS... 4 2.4. Rendering von XML in mozilla... 5 2.5. Beispiel-CSS für XML... 5 2.6. Beispiel-XML mit CSS... 6 2.7. Rendering von XML in mozilla... 6 3.1. Transformation mittels XSLT... 8 3.2. Vorstellung des Dokumentbaumes in XSLT... 9 3.3. XSLT Beispiel-XML...9 3.4.Beispiel-Stylesheet...9 3.5. XSLT output...10 3.6. Stylesheet 1 für Mehrfachtransformation... 11 3.7. Output Transformation 1 der Mehrfachtransformation... 11 3.8. Stylesheet 2 für Mehrfachtransformation... 12 3.9. Output Transformation 2 der Mehrfachtransformation... 12 3.10. Stylesheet zur Generierung eines Stylesheets... 13 3.11. Generiertes Stylesheet...13 4.1. Beispiel-XML für Formatierung mittels XSL... 14 4.2. Stylesheet zur Erzeugung von FO's... 14 4.3. Repräsentation mittels FO's... 15 4.4. Formatierung mittels FOP... 16 4.5. Rendering des PDF... 16 5.1.Gesamtüberblick...18 v

Kapitel 1. Einführung Zusammenfassung Die folgenden Abschnitte geben einen Überblick über den Aufbau dieses Dokumentes sowie eine Wiederholung der benötigten Grundlagen. 1.1. Gliederung Da XML [bib-xml] eine reine Strukturbeschreibungssprache darstellt, besteht Bedarf nach speziellen Mechanismen zur ansprechenden Darbietung von XML-Dokumenten für Endnutzer und Abbildung auf andere Medien. Im folgenden sollen hierzu verschiedene Möglichkeiten vorgestellt und diskutiert werden. Zuerst wird jedoch eine kurze Wiederholung zu XML die benötigten Grundlagen auffrischen, wonach der Einstieg in die verschiedenen Aspekte der verwendeten Techniken erfolgen kann. Dabei soll es insbesondere um die direkte Formatierung mittels CSS sowie indirekt durch Konvertierung in bereits vorhandene Formate gehen. In diesem Zusammenhang werden generische Mechanismen zu Transformation (XSLT/XPath), und Formatierung (XSL) eingeführt. 1.2. Wiederholung XML Die XML als extensible Markup Language dient allein der Strukturbeschreibung mit dem Ziel einer strikten Trennung von Inhalt und Präsentation. Hierzu werden sogenannte Tags verwendet, deren Namen frei wählbar sind und denen von vorn herein keinerlei implizite Bedeutung zugeordnet wird. Sie sind streng hierarchisch ineinander verschachtelt und spannen so einen Baum auf. Dadurch ergibt sich eine Unterscheidung von logischer und physischer Dokumentstruktur in dem Sinne, daß die Tags logisch physische Objekte, sogenannte Entities, beschreiben. Weiterhin können die Begriffe well-formed und valid erklärt werden: Sind alle Tags syntaktisch korrekt notiert und ordnungsgemäß ineinander verschachtelt, so spricht man von einem wohlgeformten XML-Dokument (well-formed XML document). Entsprechen logische und physische Dokumentstruktur einem bestimmten festgelegten Dokumenttyp, so ist das Dokument valid. Zur Definition dieser Dokumenttypen und ihrer Strukturen werden sogenannte Dokumenttypdefinitionen (document type definitions - DTDs) verwendet. Ein weiteres wichtiges Ausdrucksmittel stellen in XML die Namespaces dar, die helfen Kollisionen von Tagnamen zwischen Dokumenttypen zu vermeiden. Diese werden dem Tagnamen vorangestellt und mittels Doppelpunkt davon getrennt (<tag/> - <ns:tag/>). XML entwickelt sich rasant weiter, wie an den aktuell in (Weiter-)Entwicklung befindlichen Standards rund um XInclude, XPath, XML Schema, XML Query, XLink und XPointer zu ersehen ist. 1.3. Beispiel XML Der in Abbildung 1.1. Beispiel-XML dargestellte Ausschnitt aus dem Quelltext der Präsentation stellt ein typisches XML-Dokument mit Versionsnummer, DTD und verschiedenen Tags dar und soll im weiteren als Beispiel zur Erläuterung dienen. Abbildung 1.1. Beispiel-XML <?xml version='1.0'?> <!DOCTYPE slides PUBLIC "-//Norman Walsh//DTD Slides XML V3.0b2//EN" "http://d... e/slides/3.0b2/slides.dtd"> <slides> <slidesinfo> 1

Kapitel 1. Einführung <title>transformieren und Formatieren</title> <author> <firstname>michael</firstname> <surname>weiser</surname> </author> </slidesinfo> <foilgroup> <title>einführung</title>... </foilgroup> </slides> 2

Kapitel 2. Darstellung Zusammenfassung Im folgenden sollen allgemeine Konzepte zur Anzeige von XML-Dokumenten vorgestellt und motiviert werden. Diese haben teilweise Grundlagencharakter, geben aber auch, insbesondere am Beispiel von CSS, Einblick in Möglichkeiten einer konkreten aber dennoch abstrakten wie strukturierten Realisierung. 2.1. Einführung Da ein Programm den Tags eines beliebigen XML-Dokumentes durch deren freie Wählbarkeit nicht automatisiert Bedeutungen zuordnen und sie damit auch nicht formatieren kann, werden Mechanismen zu einer programmunabhängigen Zuordnung von Formatierungsanweisungen zu Strukturelementen benötigt. Hierbei spricht man auch vom sogenannten Rendering, bei dem Tags zumindest Formatierungsinformationen, meist sogar konkrete Bedeutungen, zugeordnet werden, sodaß sie dem Benutzer strukturiert dargeboten werden können. Dabei kann es sich um farbliche Hervorhebung, Änderung der Schriftgröße aber auch durchaus eine geänderte Betonung eines Sprachsynthesizers handeln. 2.2. Implizite Interpretation Eine der einfachsten und intuitivsten Methoden zur Darstellung von Dokumenten ist sicherlich eine implizite Annahme von Bedeutungen der verschiedenen Strukturelemente direkt im Anzeigeprogramm und darauf basierende Formatierung der Anzeige. Diese Verknüpfungen werden üblicherweise fest im anzeigenden Programm, dem sogenannten renderer, implementiert und realisiert, wie in Abbildung 2.1. Verarbeitungskette Implizite Interpretation skizziert. Abbildung 2.1. Verarbeitungskette Implizite Interpretation 2.3. CSS Fast sämtliche klassischen Dateiformate für Bild, Text und Ton folgen diesem Paradigma. Aber auch relativ junge und auf Dokumentstrukturierung ausgerichtete Beschreibungssprachen wie HTML und LaTeX werden meist so angezeigt. Eine derartige Behandlung wäre nun durchaus auch für XML-Dokumente denkbar. Insbesondere hinreichend klar spezifizierte Dokumenttypen, wie z.b. DocBook, ließen sich auf diese Weise mit speziellen Anzeigeprogrammen versehen, die sämtliche Strukturelemente kennen und entsprechend anzeigen können. Dieses bringt jedoch die üblichen damit verbundenen Nachteile mit sich. So steckt die Formatierungsintelligenz im Renderer und muß entsprechend für andere Einsatzzwecke oder Plattformen immer wieder neu implementiert werden. Dies bringt meist eine schleichende Ausrichtung auf ein konkretes Ausgabemedium schon auf Dokumentstrukturebene mit sich, wie bereits bei LaTeX und dessen Seitenorientiertheit und dem Fehlen eines Druckseitenkonzeptes in HTML zu beobachten. Nicht zuletzt ist ein in zahlreichen Programmen fest implementierter Standard nur noch schwer zu pflegen und Inkompatibilitäten zwischen verschiedenen Herstellern sind vorprogrammiert. Dennoch wird eine solche Umsetzung auch im Bereich XML angewandt, jedoch nur mit gutem Grund und bei elementaren Basisformaten, wie z.b. Vektorgraphiken mit SVG und Beschreibung mathematischer Formeln mittels MathML. Bei letzterem handelt es sich sogar um einen der ersten klaren Standards zur Beschreibung und Anzeige solcher Dokumente, was eine Implementation entsprechender Anzeigeroutinen fast schon bedingt. 3

Kapitel 2. Darstellung 2.3.1. Einführung Äquivalent zu HTML können cascading Stylesheets (CSS) zur Formatierung von XML verwendet werden. Hierbei handelt es sich um einen generischen Mechanismus zur Verknüpfung von Tags mit Formatierungsinformationen. Abbildung 2.2. Verarbeitungskette CSS Wie in Abbildung 2.2. Verarbeitungskette CSS angedeutet, findet die Anwendung der Formatierungsinformationen üblicherweise direkt im Anzeigeprogramm, dem sogenannten user agent, statt. CSS sind hier besonders auf graphische Darstellung durch z.b. Web Browser ausgerichtet, wobei von sogenannten visual user agents gesprochen wird. Mit CSS2 werden jedoch auch andere Medien wie Audio, Braille und Druck eingeführt. Grundkonzept bleibt jedoch, daß den XML-Tags nur Formatierungsinformationen jedoch keine Bedeutungen zugewiesen werden. 2.3.2. Beispiel XML Das in Abbildung 2.3. Beispiel-XML für CSS dargestellte, gegenüber Abbildung 1.1. Beispiel-XML leicht geänderte XML-Dokument soll im weiteren als Beispiel zur Formatierung von XML mittels CSS dienen. Abbildung 2.3. Beispiel-XML für CSS <?xml version='1.0'?> <slides> <slidesinfo> <title>transformieren und Formatieren</title> </slidesinfo> <foilgroup> <title>einfuehrung</title> <para>dieser Text ist durch den <tag>para</tag>-tag auf Block-Ebene angesiedelt. Die <tag>tag</tag>-tags sind dagegen inline.</para> </foilgroup> </slides> 2.3.3. Rendering ohne CSS Abbildung 2.4. Rendering von XML in mozilla soll verdeutlichen, daß auf Basis nur der XML-Datei keinerlei Formatierung möglich ist, da nichts über deren Interpretation gesagt werden kann. Dazu wird die in Abbildung 2.3. Beispiel-XML für CSS gezeigte XML-Datei im Web Browser mozilla geöffnet. Dieser erkennt, daß es sich um ein XML-Dokument handelt, kann aber keine Formatierungsinformationen dazu finden, weswegen er alle Elemente 4

Kapitel 2. Darstellung ohne Formatierung als Fließtext ausgibt. Abbildung 2.4. Rendering von XML in mozilla 2.3.4. Stylesheet Abbildung 2.5. Beispiel-CSS für XML zeigt ein Beispiel für ein Cascading Stylesheet zur Formatierung von XML. Wichtiger Unterschied gegenüber den für HTML verwendeten Formatvorlagen ist die Notwendigkeit zur Definition sämtlicher gewünschter Formatierungsinformationen bis hin zur Frage, ob ein Tag ein Block- oder Inlineelement beschreibt, der Renderer also z.b. einen neuen Absatz starten muß oder nicht. Daneben stehen alle in CSS1 und 2 definierten Formatierungsmöglichkeiten zur vollen Verfügung. Abbildung 2.5. Beispiel-CSS für XML slides { font-size: 150%; } title { display:block; color: blue; font-size: 1.2em; } para { display: block; } tag { font-style: italic; display: inline; } 2.3.5. Beispiel XML mit CSS Um einem Renderer mitzuteilen, aus welcher Datei die CSS-Formatierungsinformationen zu laden sind, wird das XML-Metatag?xml-stylesheet wie in Abbildung 2.6. Beispiel-XML mit CSS gezeigt zur anzuzeigenden XML- Datei hinzugefügt. 5

Kapitel 2. Darstellung Abbildung 2.6. Beispiel-XML mit CSS <?xml version='1.0'?> <?xml-stylesheet type="text/css" href="cssex.css"?> <slides> <slidesinfo> <title>transformieren und Formatieren</title> </slidesinfo> <foilgroup> <title>einfuehrung</title> <para>dieser Text ist durch den <tag>para</tag>-tag auf Block-Ebene angesiedelt. Die <tag>tag</tag>-tags sind dagegen inline.</para> </foilgroup> </slides> 2.3.6. Rendering mit CSS Wird die in Abbildung 2.6. Beispiel-XML mit CSS dargestellte geänderte XML-Datei in mozilla geöffnet, ergibt sich das in Abbildung 2.7. Rendering von XML in mozilla zu sehende Bild. Der Browser kann nun das Stylesheet nachladen und die darin enthaltenen Formatierungsinformationen auf die weiterhin nichtssagenden XML-Tags anwenden. Abbildung 2.7. Rendering von XML in mozilla 2.3.7. Pro/Contra Gegenüber dem in Abschnitt 2.2 vorgestellten impliziten Interpretieren der XML-Dokumente bietet die Verwendung 6

Kapitel 2. Darstellung von CSS den Hauptvorteil der Wahrung der Trennung von Inhalt und Präsentation. Es ist weiterhin ein generischer Algorithmus, der extrem einfach zu handhaben und intuitiv verständlich ist. Durch seine Herkunft aus dem Bereich HTML und Webdesign handelt es sich bei CSS um eine etablierte Technik zu der sich in der Anwendergemeinde bereits großes Know-How bilden konnte. Nachteilig ist die Bindung des Layouts an die Struktur des XML-Dokumentes. Nur was bereits im Quelldokument vorliegt, kann formatiert werden und erscheint starr am Ort seines Vorkommens im XML-Baum. Weiterhin muß der verwendete User Agent, beispielsweise ein Web Browser, XML und CSS unterstützen was der Technik kaum noch einen Vorteil gegenüber der Verbindung von HTML und CSS beläßt. 2.4. Indirektes Rendern Auf Basis der in Abschnitt 2.2 und Abschnitt 2.3 angestellten Überlegungen liegt die Idee nahe, XML nicht direkt zu rendern, sondern in bereits etablierte Formate mit existierenden Anzeigeprogrammen zu konvertieren. In diesem Zusammenhang spricht man auch vom Formatieren des XML-Dokumentes in ein Darstellungsformat. Die Vorteile liegen auf der Hand: Man kann existierende Programme weiterverwenden, bei der Formatierung erweiterte Möglichkeiten des Ausgabeformates nutzen, die mit reinem XML nicht zugänglich gewesen wären und die Daten vor der Ausgabe anreichern. Letzteres bezeichnet das Generieren neuer Daten aus den bereits im Dokument vorhandenen oder Einbinden aus externen Quellen. Aufgrund der freien Definierbarkeit von Dokumenttypen müßten diese Formatierungsprogramme, sogenannte formatter, nun jedoch entweder für jede neue DTD neu implementiert oder mit Importfiltern versehen werden. Es wäre also wünschenswert, hierfür eine generelle und nicht für jedes Programm neu zu implementierende Lösung zu finden. Eine extrem elegante stellt hier die sogenannte Transformation von XML-Dokumenten ineinander dar. Für einen Einsatzzweck wird nur noch ein hinreichend universeller Eingabedokumenttyp für die formatter spezifiziert und einmal eine generische Methode zum Transformieren beliebiger XML-Dokumente in beliebige andere, womit sie sich problemlos an die vom formatter benötigte Eingabe-DTD anpassen lassen. Die dadurch motivierten Konzepte des Transformierens und Formatierens werden in Kapitel 3. Transformieren und Kapitel 4. Formatieren im Detail am Beispiel von XSL und damit XSLT und XSL:fo vorgestellt. 7

Kapitel 3. Transformieren Zusammenfassung Dieses Kapitel gibt einen Überblick über die Thematik des Transformierens von XML am Beispiel der XSLT von XSL. 3.1. Einführung Neben den in Abschnitt 2.4 angestellten Überlegungen sprechen auch ganz praktische Gründe für die Einführung eines generischen Mechanismus zur Transformation von XML-Dokumenten ineinander. So entstehen mit steigender Beliebtheit und Verbreitung von XML immer neue XML-basierte Dateiformate, teilweise bereits mit entsprechenden Anzeige- (renderer) oder Konvertierungsprogrammen (formatter). Auch sind bereits bestehende Formate wie HTML schon fast XML-konform und unterscheiden sich nur durch kleine Ausnahmen, wie dem br-tag (<br/> vs. <br>) in HTML. Nicht zuletzt ist ein solcher Transformationsschritt der richtige Ort zur Beeinflussung der Dokumentstruktur beziehungsweise Anreicherung. 3.2. Beispiel XSLT 3.2.1. Einführung XSLT steht für extensible Stylesheet Language Transformations und wurde als Teil der in Kapitel 4. Formatieren besprochenden Formatierung mittels der extensible Stylesheet Language (XSL) [bib-xsl] eingeführt. Es handelt sich dabei um eine templatebasierte Sprache zur Beschreibung von Transformationen beliebiger XML-Dokumente in neue XML-Dokumente. Ein Schema dieses Ablaufes ist in Abbildung 3.1. Transformation mittels XSLT dargestellt. Von besonderer Bedeutung ist hier der Begriff des XSL processor als Bezeichnung für das Transformationsprogramm. Abbildung 3.1. Transformation mittels XSLT Zusätzlich zu XML wurden HTML und Text als Ausgabeformate definiert, ersteres wegen seiner Nähe zu HTML und letzteres zur Kontrolle der Transformation (debugging) und Brücke zu anderen Markupsprachen mit nicht Tagbasierter Quelltextsyntax. Zur eigentlichen Transformation wird das XML-Dokument als Baum aufgefaßt und eine Transformation des Quellin den Zielbaum durchgeführt. Dabei können wie in Abbildung 3.2. Vorstellung des Dokumentbaumes in XSLT an- 8

Kapitel 3. Transformieren gedeutet auch weitreichende Eingriffe in die Dokumentstruktur wie das Entfernen, Verschieben oder Duplizieren ganzer Teilbäume vorgenommen werden. Abbildung 3.2. Vorstellung des Dokumentbaumes in XSLT XSLT selbst benutzt die Möglichkeiten von XPath zum Selektieren und Aggregieren von Elementen, deren Integration und Mächtigkeit in den Entwürfen zu XSLT 2.0 und XPath 2.0 noch weiter vorangetrieben wurden. 3.2.2. Beispiel XML Abbildung 3.3. XSLT Beispiel-XML zeigt eine XML-Beispiel-Datei auf die im folgenden XSL-Stylesheets angewandt werden sollen. Abbildung 3.3. XSLT Beispiel-XML <?xml version='1.0'?> <slides> <slidesinfo> <title>transformieren und Formatieren</title> </slidesinfo> <foilgroup> <title>einfuehrung</title> <para>elefanten spielen kein Schach!</para> </foilgroup> </slides> 3.2.3. Stylesheet Das in Abbildung 3.4. Beispiel-Stylesheet gezeigte XSL-Stylesheet definiert Transformationen für die wichtigsten Tags des in Abbildung 3.3. XSLT Beispiel-XML dargestellten XML-Dokumentes. Hierbei betrifft jedes xsl:template-element durch sein match-attribut ein bestimmtes Tag des Quelldokumentes und definiert dafür eine Ersetzung, in diesem Fall durch übliche HTML-Tags. Abbildung 3.4. Beispiel-Stylesheet 9

Kapitel 3. Transformieren <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="slides"> <html><xsl:apply-templates/></html> <xsl:template match="slidesinfo"> <head> <title><xsl:value-of select="title"/></title> <meta author="me"/> </head> <xsl:template match="title"> <h2><xsl:value-of select="."/></h2> </xsl:stylesheet> 3.2.4. Output Abbildung 3.5. XSLT output zeigt den Aufruf des XSL processors xsltproc und dessen Ausgabe. Zu beachten ist, daß dieser das Ausgabeformat aufgrund der Tagnamen automatisch als HTML angenommen und ein entsprechendes Meta-Tag zum Inhaltstyp hinzugefügt hat. Schön erkennen kann man auch die Ausnahme von der XML-Syntax am author-meta-tag, das in XML normalerweise als <meta... /> dargestellt werden müßte. Abbildung 3.5. XSLT output $ xsltproc xsltex.xsl xsltex.xml <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>transformieren und Formatieren</title> <meta author="me"> </head> <h2>einfuehrung</h2> Elefanten spielen kein Schach! </html> $ 3.3. Weiterführendes Im folgenden sollen auf Basis des bisher eingeführten Transformationsmechanismus' zwei weiterführende, sich aus dem Konzept von selbst ergebende Bearbeitungsmöglichkeiten als Beispiele für dessen Mächtigkeit und Flexibilität vorgestellt werden. Mehrfachtransformation Generieren von Stylesheets beschreibt das mehrmalige Anwenden von verschiedener oder des selben Stylesheets, so daß eine Kette von Transformationen entsteht. bezieht sich auf die Möglichkeit, mittels Stylesheets neue Stylesheets zu generieren. Dies wird möglich, da es sich bei Stylesheets selbst um XML-Dokumente mit entspre- 10

Kapitel 3. Transformieren chenden Namespaces handelt. 3.4. Mehrfachtransformation 3.4.1. Stylesheet 1 Das in Abbildung 3.6. Stylesheet 1 für Mehrfachtransformation gezeigte Stylesheet transformiert das in Abbildung 3.3. XSLT Beispiel-XML vorgestellte XML-Dokument beispielhaft in eine dokumentzentristische Darstellung Abbildung 3.6. Stylesheet 1 für Mehrfachtransformation <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="slides"> <doc><xsl:apply-templates/></doc> <xsl:template match="title"> <title><xsl:value-of select="."/></title> <xsl:template match="foilgroup"> <sect><xsl:apply-templates/></sect> <xsl:template match="para"> </xsl:stylesheet> 3.4.2. Output 1 Abbildung 3.7. Output Transformation 1 der Mehrfachtransformation zeigt den Aufruf und die Ausgabe der Transformation des in Abbildung 3.3. XSLT Beispiel-XML eingeführten XML-Dokumentes mittels des Stylesheets aus Abbildung 3.6. Stylesheet 1 für Mehrfachtransformation. Abbildung 3.7. Output Transformation 1 der Mehrfachtransformation $ xsltproc mxsltex1.xsl xsltex.xml <?xml version="1.0"?> <doc> <title>transformieren und Formatieren</title> <sect> <title>einfuehrung</title> </sect> </doc> 3.4.3. Stylesheet 2 Aus dem in Abbildung 3.7. Output Transformation 1 der Mehrfachtransformation gezeigten Output der ersten Transformation soll das in Abbildung 3.8. Stylesheet 2 für Mehrfachtransformation abgebildete Stylesheet eine 11

Kapitel 3. Transformieren HTML-Darstellung erzeugen. Abbildung 3.8. Stylesheet 2 für Mehrfachtransformation <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="doc"> <html> <head> <title><xsl:value-of select="title"/></title> </head> <body> <xsl:apply-templates/> </body> </html> <xsl:template match="title"> <h2><xsl:value-of select="."/></h2> </xsl:stylesheet> 3.4.4. Output 2 Abbildung 3.9. Output Transformation 2 der Mehrfachtransformation zeigt den mittels des Stylesheets aus Abbildung 3.8. Stylesheet 2 für Mehrfachtransformation erzeugten HTML-Output. Wie man am Aufruf der XSL- Prozessoren ersehen kann, wird die Ausgabe der einen Stufe direkt der zweiten als Eingabe übergeben, sodaß eine Verarbeitungskette entsteht, die das Quelldokument in mehreren Schritten in das Zieldokument transformiert. Abbildung 3.9. Output Transformation 2 der Mehrfachtransformation $ xsltproc mxsltex1.xsl xsltex.xml \ \ xsltproc mxsltex2.xsl - <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>transformieren und Formatieren</title> </head> <body> <h2>transformieren und Formatieren</h2> <h2>einfuehrung</h2> </body> </html> 3.5. Generierung von Stylesheets 3.5.1. Stylesheet Abbildung 3.10. Stylesheet zur Generierung eines Stylesheets definiert ein Stylesheet welches ein weiteres generiert. Zum Einsatz kommt hierzu ein weiterer Namespace namens oxsl der mittels des speziellen xsl:namespace-alias als Ausgabenamespace definiert wird. Dadurch wird ihm im Ausgabedokument wie in Abbildung 3.11. Generiertes Stylesheet zu sehen der URI des Eingabenamespaces zugeordnet. 12

Kapitel 3. Transformieren Abbildung 3.10. Stylesheet zur Generierung eines Stylesheets <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:oxsl="dummy"> <xsl:namespace-alias stylesheet-prefix="oxsl" result-prefix="xsl"/> <xsl:template match="slides"> <oxsl:stylesheet version="1.0"> <oxsl:template match="slides"> <xsl:apply-templates/> </oxsl:template> </oxsl:stylesheet> </xsl:stylesheet> 3.5.2. Output Abbildung 3.11. Generiertes Stylesheet zeigt das mittels des Stylesheets aus Abbildung 3.10. Stylesheet zur Generierung eines Stylesheets generierte neue Stylesheet. Gut ist der nun mittels des Präfixes oxsl definierte XSLT- Namespace zu sehen. Abbildung 3.11. Generiertes Stylesheet $ xsltproc mxsltex1.xsl xsltex.xml <?xml version="1.0"?> <oxsl:stylesheet version="1.0" xmlns:oxsl="http://www.w3.org/1999/xsl/transform"> <oxsl:template match="slides"> Transformieren und Formatieren Einfuehrung Elefanten spielen kein Schach! </oxsl:template> </oxsl:stylesheet> 3.6. Pro/Contra Wie aus den vorangegangenen Abschnitten zu ersehen, stellt XSLT einen generischen Mechanismus zur Transformationen beliebiger XML Dokumente und deren unterschiedlicher Dokumentstrukturen ineinander dar. Er ist wesentlich mächtiger als reine Formatierungswerkzeuge wie das in Abschnitt 2.3 erläuterte CSS und ermöglicht, den selben Inhalt auf verschiedenste Art und Weise aufzubereiten wie zum Beispiel dieses Dokument als HTML [../html/xml-os-doc.html] und gegliedertes HTML [../chunked/xml-os-doc.html] oder die zugrundeliegende sen- Prätation [xml-os-pres] in noch unterschiedlicheren Formaten. Dies wird jedoch erkauft durch die vergleichsweise hohe Komplexität der Templates und Hilfsmittel wie XPath, nicht zuletzt durch deren teilweise kryptische und unübersichtliche Notation. Auch sind immer zusätzliche Bearbeitungsschritte zur Transformation notwendig, wobei hier die immer weiter voranschreitende Integration der XSLT- Prozessoren in Web Browser und andere Programme Abhilfe schaffen könnte. 13

Kapitel 4. Formatieren Zusammenfassung Im diesem Kapitel soll am Beispiel von XSL eine Einführung in die Formatierung von XML gegeben werden. 4.1. Einführung Im folgenden soll anhand von XSL das Konzept der Formatierung von XML näher erläutert werden. XSL steht dabei für extensible Stylesheet Language und stellt einen zweigeteilten Standard dar. Während es sich beim ersten Teil um die bereits in Kapitel 3. Transformieren vorgestellten Transformationen im Namespace xsl handelt, definiert der zweite Teil einen Katalog von Formatierungsobjekten, sogenannte formatting objects, die entsprechend im Namespace fo angesiedelt sind. Entsprechend ist auch die Formatierung wie in Abschnitt 2.4 motiviert zweistufig aufgebaut: ein XSL processor erzeugt durch Anwendung des Stylesheets auf ein XML-Dokument eine Repräsentation als Formatting Objects und ein XSL formatter interpretiert diese FO's im Rahmen seiner Möglichkeiten und erzeugt die formatierte Ausgabe. Zu beachten ist, daß die FO's insbesondere auf Druck und seitenorientierte Medien ausgerichtet, dennoch aber recht allgemein gehalten sind. 4.2. Beispiel XML Abbildung 4.1. Beispiel-XML für Formatierung mittels XSL zeigt noch einmal das bereits in Abschnitt 2.3.2 eingeführte Beispiel, das im folgenden mittels Formatting Objects als PDF formatiert werden soll. Abbildung 4.1. Beispiel-XML für Formatierung mittels XSL <?xml version='1.0'?> <slides> <slidesinfo> <title>transformieren und Formatieren</title> </slidesinfo> <foilgroup> <title>einfuehrung</title> <para>dieser Text ist durch den <tag>para</tag>-tag auf Block-Ebene angesiedelt. Die <tag>tag</tag>-tags sind dagegen inline.</para> </foilgroup> </slides> 4.3. Stylesheet In Abbildung 4.2. Stylesheet zur Erzeugung von FO's ist ein minimales Stylesheet zur Erzeugung einer formatierbaren Repräsentation mittels Formatting Objects dargestellt. Abbildung 4.2. Stylesheet zur Erzeugung von FO's 14

Kapitel 4. Formatieren <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:fo="http://www.w3.org/1999/xsl/format"> <xsl:template match="slides"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="page" page-height="40mm" page-width="150mm" margin-top="5mm" margin-bottom="5mm" margin-left="10mm" margin-right="10mm"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:flow flow-name="xsl-region-body"> <xsl:apply-templates/> </fo:flow> </fo:page-sequence> </fo:root> <xsl:template match="slidesinfo"> <fo:block font-weight="bold" font-size="20pt"> <xsl:value-of select="title"/> </fo:block> <xsl:template match="title"> <fo:block font-weight="bold" font-size="15pt"> <xsl:apply-templates/> </fo:block> <xsl:template match="para"> <fo:block> <xsl:apply-templates/> </fo:block> <xsl:template match="tag"> <fo:inline font-style="italic"> <xsl:apply-templates/> </fo:inline> </xsl:stylesheet> 4.4. Transformations-Output Abbildung 4.3. Repräsentation mittels FO's zeigt das Beispiel aus Abbildung 4.1. Beispiel-XML für Formatierung mittels XSL transformiert mit Hilfe des Stylesheets in Abbildung 4.2. Stylesheet zur Erzeugung von FO's. Man erkennt eine Zweiteilung in den Definitionsteil des fo:layout-master-set und Datanteil der fo:page-sequence. Abbildung 4.3. Repräsentation mittels FO's $ xsltproc xslex.xsl xslex.xml \ \ tidy -q -xml -i >xslex.fo $ cat xslex.fo <?xml version="1.0"?> <fo:root xmlns:fo="..."> 15

Kapitel 4. Formatieren <fo:layout-master-set> <fo:simple-page-master master-name="page"...> <fo:region-body /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:flow flow-name="xsl-region-body"> <fo:block font-weight="bold" font-size="20pt"> Transformieren und Formatieren</fo:block> <fo:block font-weight="bold" font-size="15pt"> Einfuehrung</fo:block><fo:block>Dieser Text ist durch den <fo:inline font-style="italic"> para</fo:inline>-tag auf... </fo:flow> </fo:page-sequence> </fo:root> $ 4.5. Formatierungs-Output In Abbildung 4.4. Formatierung mittels FOP wird die Formatierung mittels des freien FOP [bib-apache-xml] skizziert. Abbildung 4.5. Rendering des PDF zeigt einen Ausschnitt der letztendlichen Bildschirmaunzeige zum Vergleich mit Abbildung 2.7. Rendering von XML in mozilla. Abbildung 4.4. Formatierung mittels FOP $ fop.sh -fo xslex.fo -pdf xslex.pdf [INFO] FOP 0.20.4 [INFO] building formatting object tree [INFO] [1] Abbildung 4.5. Rendering des PDF 4.6. Pro/Contra Die vorangegangenen Abschnitte haben versucht, herauszuarbeiten, daß es sich bei XSL um einen grundlegenden und durchdachten Standard handelt, der die Abbildung auch kompliziertester Formatierungen ermöglicht. 16

Kapitel 4. Formatieren Dies bedingt schon fast eine extrem hohe Komplexität und damit Entwicklungsaufwand für entsprechende Werkzeuge. Hauptsächlich deswegen existiert bisher auch nur ein freier XSL formatter (FOP) und selbst dieser implementiert XSL nicht vollständig. Auch ist momentan nur PDF wirklich als Zielformat verfügbar, sogar in kommerziellen Programmen. HTML dagegen wird bereits von XSLT vollständig abgedeckt. 17

Kapitel 5. Zusammenfassung Abbildung 5.1. Gesamtüberblick gibt einen abschließenden Überblick der verschiedenen glichkei- Formatierungsmöten. Abbildung 5.1. Gesamtüberblick 18

Kapitel 6. Referenzen Resourcen zu XSLT, XSL und DocBook [xml-os-pres] Transformieren und Formatieren. Vortrag Oberseminar XML. Michael Weiser. 28.11.2002. http://fachschaft.imn.htwk-leipzig.de/~mweiser/download/stud/xml-os-pres/ (besucht 13.1.2003). CSS [bib-css] World Wide Web Consortium (W3C). CSS2 Specification - A brief CSS2 tutorial for XML. 12. Mai 1998. http://www.w3.org/tr/rec-css2/intro.html#q2 (besucht 26.11.2002). xml.com. On Display: XML Web Pages with Mozilla. 29. März 2000. http://www.xml.com/pub/a/2000/03/29/tutorial/ (besucht 26.11.2002). XSL/XSLT [bib-xsl] World Wide Web Consortium (W3C). The Extensible Stylesheet Language (XSL). http://www.w3.org/style/xsl/ (besucht 26.11.2002). [bib-apache-xml] Apache Software Foundation. Apache XML Project - XML-, XSL- und Publishing-Tools. http://xml.apache.org/ (besucht 26.11.2002). Daniel Veillard. The XML C library for Gnome. libxml/libxslt. http://www.xmlsoft.org/ (besucht 28.11.2002). Axel Hecht. Building TransforMiiX standalone. http://www.mozilla.org/projects/xslt/standalone.html (besucht 28.11.2002). XML [bib-xml] World Wide Web Consortium (W3C). Extensible Markup Language (XML). http://www.w3.org/xml/ (besucht 26.11.2002). DocBook Norman Walsh. DocBook Open Repository. http://docbook.sourceforge.net/ (besucht 26.11.2002). Organization for the Advancement of Structured Information Standards (OASIS). DocBook Technical Committee. http://www.oasis-open.org/committees/docbook/ (besucht 26.11.2002). Norman Walsh und Leonard Muellner. DocBook: The Definitive Guide. Oktober 1999. 1st. 1-56592-580-7. http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html (besucht 26.11.2002). DocBookDocumentation. DocBook Dokumentationen. http://docbook.org/wiki/moin.cgi/docbookdocumentation (besucht 26.11.2002). 19