Dynamische Inhalte und Formate Seminar Document Engineering Dennis Busch [email protected] Institut für Softwaretechnologie Fakultät für Informatik Universität der Bundeswehr München Dynamische Inhalte und Formate – p. 1/3 XML in 10 Points ”3. XML is text, but isn’t meant to be read” http://www.w3.org/XML/1999/XML-in-10-points Dynamische Inhalte und Formate – p. 2/3 Gliederung 1. Problemstellung 2. XSL (a) XSLT (b) XPath (c) XSL-FO (d) CSS als Alternative? 3. LATEX 4. Joining Together Dynamische Inhalte und Formate – p. 3/3 Problemstellung XML ist nicht dafür gedacht, von Menschen gelesen zu werden Dynamische Inhalte und Formate – p. 4/3 Problemstellung XML ist nicht dafür gedacht, von Menschen gelesen zu werden XML bildet lediglich Struktur der Daten ab Dynamische Inhalte und Formate – p. 4/3 XML im Browser Dynamische Inhalte und Formate – p. 5/3 Lösung Hinzufügen von Layoutinformation oder Dynamische Inhalte und Formate – p. 6/3 Lösung Hinzufügen von Layoutinformation oder Transformation in darstellbare Formate Dynamische Inhalte und Formate – p. 6/3 XSL Die Extensible Stylesheet Language (XSL) ist eine W3C Spezifikation um Transformationen von XML-Sprachen zu definieren. Dynamische Inhalte und Formate – p. 7/3 XSL Die Extensible Stylesheet Language (XSL) ist eine W3C Spezifikation um Transformationen von XML-Sprachen zu definieren. XSL besteht aus drei Sprachen: Dynamische Inhalte und Formate – p. 7/3 XSL Die Extensible Stylesheet Language (XSL) ist eine W3C Spezifikation um Transformationen von XML-Sprachen zu definieren. XSL besteht aus drei Sprachen: XSL Transformations (XSLT) XML Path Language (XPath) XSL Formatting Objects (XSL-FO) Dynamische Inhalte und Formate – p. 7/3 XSLT XSLT beschreibt Transformationen von XML Dokumenten in andere Formate, z.B.: Dynamische Inhalte und Formate – p. 8/3 XSLT XSLT beschreibt Transformationen von XML Dokumenten in andere Formate, z.B.: HTML Dynamische Inhalte und Formate – p. 8/3 XSLT XSLT beschreibt Transformationen von XML Dokumenten in andere Formate, z.B.: HTML Plain Text Dynamische Inhalte und Formate – p. 8/3 XSLT XSLT beschreibt Transformationen von XML Dokumenten in andere Formate, z.B.: HTML Plain Text LATEX Dynamische Inhalte und Formate – p. 8/3 XSLT XSLT beschreibt Transformationen von XML Dokumenten in andere Formate, z.B.: HTML Plain Text LATEX SVG Dynamische Inhalte und Formate – p. 8/3 XSLT Verarbeitung Dynamische Inhalte und Formate – p. 9/3 XML Baumstruktur Quelle: http://www.fujitsu.com/img/XML/tech/pictxpath1.gif Dynamische Inhalte und Formate – p. 10/3 XSLT Baumtransformation Quelle: http://www.w3.org/TR/2001/REC-xsl-20011015/tree1-2.gif Dynamische Inhalte und Formate – p. 11/3 Aufbau von Stylesheets XSLT Stylesheets bestehen aus drei Arten von Befehlen: Dynamische Inhalte und Formate – p. 12/3 Aufbau von Stylesheets XSLT Stylesheets bestehen aus drei Arten von Befehlen: Root-Elemente: Wurzel des Dokumentenbaums Dynamische Inhalte und Formate – p. 12/3 Aufbau von Stylesheets XSLT Stylesheets bestehen aus drei Arten von Befehlen: Root-Elemente: Wurzel des Dokumentenbaums Toplevel-Elemente: erzeugen z.B. Vorlagen oder Funktionsdeklarationen Dynamische Inhalte und Formate – p. 12/3 Aufbau von Stylesheets XSLT Stylesheets bestehen aus drei Arten von Befehlen: Root-Elemente: Wurzel des Dokumentenbaums Toplevel-Elemente: erzeugen z.B. Vorlagen oder Funktionsdeklarationen Instruktionen sind Befehle wie Anwedung von Vorlagen, Bedingungen oder Schleifen Dynamische Inhalte und Formate – p. 12/3 XSLT Beispiel: example.xml <?xml version="1.0"?> <shout>XSL is great!</shout> Dynamische Inhalte und Formate – p. 13/3 XSLT Beispiel: example.xsl <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3c.org/1999/XSL/(...)"> <xsl:template match="/"> <html> <body> <h1>Let’s shout:</h1> <p><xsl:value-of select="shout"/></p> </body> </html> </xsl:template> </xsl:stylesheet> Dynamische Inhalte und Formate – p. 14/3 XSLT Beispiel: example.html <html> <body> <h1>Let’s shout:</h1> <p>XSL is great!</p> </body> </html> Dynamische Inhalte und Formate – p. 15/3 XPath Die XML Path Language (XPath) ist eine Abfrage-Sprache, um Teile eines XML-Dokumentes zu adressieren. Dynamische Inhalte und Formate – p. 16/3 XPath Die XML Path Language (XPath) ist eine Abfrage-Sprache, um Teile eines XML-Dokumentes zu adressieren. XPath bildet in der Version 2.0 eine Teilmenge und die Grundlage der XML Query Language (XQuery). Dynamische Inhalte und Formate – p. 16/3 XPath Die XML Path Language (XPath) ist eine Abfrage-Sprache, um Teile eines XML-Dokumentes zu adressieren. XPath bildet in der Version 2.0 eine Teilmenge und die Grundlage der XML Query Language (XQuery). Grundlage für die Adressierung: Darstellung des XML-Dokuments als Baum. Dynamische Inhalte und Formate – p. 16/3 XPath Syntax URI-ähnliche Syntax Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Location Steps bestehen aus: Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Location Steps bestehen aus: Achsenbezeichner Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Location Steps bestehen aus: Achsenbezeichner Knotentest Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Location Steps bestehen aus: Achsenbezeichner Knotentest Prädikat (optional) Dynamische Inhalte und Formate – p. 17/3 XPath Syntax URI-ähnliche Syntax Pfad besteht aus einem oder mehreren Location Steps, die durch ”/” getrennt werden Location Steps bestehen aus: Achsenbezeichner Knotentest Prädikat (optional) achsenbezeichner::knotentest()[prädikat] Dynamische Inhalte und Formate – p. 17/3 XPath Achsen Tabelle 1: Example XPath Axis Specifiers specifier selected nodes self child descendant parent anchestor attribute the current node children of the current node all descendants of the current node parents of the current node all ancestors of the current node attribute nodes Dynamische Inhalte und Formate – p. 18/3 XPath Beispiel /descendant::contact[string="Jiro Kawasaki"] /following-sibling::note /child::node()/child::contact[attribute::no=’’2’’] Dynamische Inhalte und Formate – p. 19/3 XPath Abkürzungen Tabelle 2: Common XPath Shortcuts expression shortcut child::test self::node() parent::node() descendant-or-self::node() attribute:: test . .. // @ Dynamische Inhalte und Formate – p. 20/3 XSL-FO XSL Formatting Objects (XSL-FO) ist eine XML-Sprache, mit der XML-Dokumente für die Druckausgabe auf Papier oder Monitor formatiert werden können. Dynamische Inhalte und Formate – p. 21/3 XSL-FO XSL Formatting Objects (XSL-FO) ist eine XML-Sprache, mit der XML-Dokumente für die Druckausgabe auf Papier oder Monitor formatiert werden können. Quelle: http://www.w3.org/TR/2001/REC-xsl-20011015/two-process.gif Dynamische Inhalte und Formate – p. 21/3 XSL-FO Beispiel <?xml version="1.0"> <fo:root xmlns:fo="http://www.w3c.org/1999/XSL/F <fo:layout-master-set> <fo:simple-page-master master-name="only"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="only"> <fo:flow flow-name="xsl-region-body"> <fo:block>XSL-FO is great!</block> </fo:flow> </fo:page-sequence> </fo:root> Dynamische Inhalte und Formate – p. 22/3 CSS Cascading Stylesheets (CSS) ist keine XML-Sprache, aber definiert Formatanweisungen für HTML- oder XML-Dokumente. Dynamische Inhalte und Formate – p. 23/3 CSS Cascading Stylesheets (CSS) ist keine XML-Sprache, aber definiert Formatanweisungen für HTML- oder XML-Dokumente. Die Dokumente werden nicht transformiert, den Elementen werden bestimmte Eigenschaften zugewiesen. Dynamische Inhalte und Formate – p. 23/3 CSS XSL uses a XML notation, CSS uses its own. In CSS, the formatting object tree is almost the same as the source tree, and inheritance of formatting properties is on the source tree. In XSL, the formatting object tree can be radically different from the source tree, and inheritance of formatting properties is on the formatting object tree. Quelle: Kreulich 2003 Dynamische Inhalte und Formate – p. 24/3 CSS Beispiel shout { font-style: bold; color: red; background-color: white; } Einbinden in ein XML-Dokument: <?xml-stylesheet href="example.css" type="text/css"?> Dynamische Inhalte und Formate – p. 25/3 CSS - Alternative zu XSL? Dynamische Inhalte und Formate – p. 26/3 CSS - Alternative zu XSL? CSS ist keine Alternative zu XSL - die beiden Konzepte ergänzen sich! Dynamische Inhalte und Formate – p. 26/3 CSS - Alternative zu XSL? CSS ist keine Alternative zu XSL - die beiden Konzepte ergänzen sich! CSS kann Dokumente nicht neu anordnen Dynamische Inhalte und Formate – p. 26/3 CSS - Alternative zu XSL? CSS ist keine Alternative zu XSL - die beiden Konzepte ergänzen sich! CSS kann Dokumente nicht neu anordnen CSS kann Dokumente für die Darstellung im Browser anpassen, aber nicht für den Druck Dynamische Inhalte und Formate – p. 26/3 CSS - Alternative zu XSL? CSS ist keine Alternative zu XSL - die beiden Konzepte ergänzen sich! CSS kann Dokumente nicht neu anordnen CSS kann Dokumente für die Darstellung im Browser anpassen, aber nicht für den Druck Aber: CSS macht das Design von Webseiten einfacher durch Trennung von Designvorlagen und Design Dynamische Inhalte und Formate – p. 26/3 LATEX LATEX ist ein Makropaket für das Textsatzsystem TEX. Dynamische Inhalte und Formate – p. 27/3 LATEX LATEX ist ein Makropaket für das Textsatzsystem TEX. It offers programmable desktop publishing features and extensive facilities for automating most aspects of typesetting and desktop publishing, including numbering and cross-referencing, tables and figures, page layout, bibliographies, and much more. LATEX was originally written in 1984 by Leslie Lamport and has become the dominant method for using TeX; few people write in plain TeX any more. (from Wikipedia, the free encyclopedia) Dynamische Inhalte und Formate – p. 27/3 LATEX Syntax LATEX ist eine Markupsprache wie XML, ist allerdings ausschließlich zum Textsatz geeignet. \overlays{2}{ \begin{slide}{Problemstellung} \begin{itemstep} \item XML ist nicht dafür gedacht, von Menschen geles \item XML bildet lediglich Struktur der Daten ab \end{itemstep} \end{slide} } Dynamische Inhalte und Formate – p. 28/3 Joining Together Alle gezeigten Konzepte haben einen speziellen Einsatzbereich. Dynamische Inhalte und Formate – p. 29/3 Joining Together Alle gezeigten Konzepte haben einen speziellen Einsatzbereich. Durch Kombination erhält man effiziente Systeme um Dokumente Dynamische Inhalte und Formate – p. 29/3 Joining Together Alle gezeigten Konzepte haben einen speziellen Einsatzbereich. Durch Kombination erhält man effiziente Systeme um Dokumente zu erstellen Dynamische Inhalte und Formate – p. 29/3 Joining Together Alle gezeigten Konzepte haben einen speziellen Einsatzbereich. Durch Kombination erhält man effiziente Systeme um Dokumente zu erstellen in verschiedensten Formaten zu nutzen Dynamische Inhalte und Formate – p. 29/3 Joining Together Alle gezeigten Konzepte haben einen speziellen Einsatzbereich. Durch Kombination erhält man effiziente Systeme um Dokumente zu erstellen in verschiedensten Formaten zu nutzen zu archivieren Dynamische Inhalte und Formate – p. 29/3 Beispiel - Webportal (1) Dokumente sollen nur im Browser angezeigt werden Dynamische Inhalte und Formate – p. 30/3 Beispiel - Webportal (1) Dokumente sollen nur im Browser angezeigt werden Klassischer Ansatz: statisches HTML Dynamische Inhalte und Formate – p. 30/3 Beispiel - Webportal (1) Dokumente sollen nur im Browser angezeigt werden Klassischer Ansatz: statisches HTML Problem: Änderung des Corporate Design erfordert schlimmstenfalls Änderung aller Dateien Dynamische Inhalte und Formate – p. 30/3 Beispiel - Webportal (1) Dokumente sollen nur im Browser angezeigt werden Klassischer Ansatz: statisches HTML Problem: Änderung des Corporate Design erfordert schlimmstenfalls Änderung aller Dateien Lösung: Designvorlagen mit CSS nutzen Dynamische Inhalte und Formate – p. 30/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Klassischer Ansatz: Dokumente in mehreren Formaten vorrätig halten Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Klassischer Ansatz: Dokumente in mehreren Formaten vorrätig halten Problem: Redundanzen Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Klassischer Ansatz: Dokumente in mehreren Formaten vorrätig halten Problem: Redundanzen Lösung: Dokumente XML-basiert Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Klassischer Ansatz: Dokumente in mehreren Formaten vorrätig halten Problem: Redundanzen Lösung: Dokumente XML-basiert XSLT zur Transformierung in gewünschtes Zielformat ”on demand” Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (2) Dokumente sollen ausgedruckt oder im Browser angeschaut werden können Klassischer Ansatz: Dokumente in mehreren Formaten vorrätig halten Problem: Redundanzen Lösung: Dokumente XML-basiert XSLT zur Transformierung in gewünschtes Zielformat ”on demand” CSS regelt weiter das Layout von erzeugten HTML-Dateien Dynamische Inhalte und Formate – p. 31/3 Beispiel - Webportal (3) Dokumente sollen nach der Nutzung Archiviert werden Dynamische Inhalte und Formate – p. 32/3 Beispiel - Webportal (3) Dokumente sollen nach der Nutzung Archiviert werden Klassischer Ansatz: Dokumente im vorhandenen Format abspeichern Dynamische Inhalte und Formate – p. 32/3 Beispiel - Webportal (3) Dokumente sollen nach der Nutzung Archiviert werden Klassischer Ansatz: Dokumente im vorhandenen Format abspeichern Problem: Migration/Emulation Dynamische Inhalte und Formate – p. 32/3 Beispiel - Webportal (3) Dokumente sollen nach der Nutzung Archiviert werden Klassischer Ansatz: Dokumente im vorhandenen Format abspeichern Problem: Migration/Emulation Lösung: Archivierung der XML-Dokumente, Stylesheets etc. Dynamische Inhalte und Formate – p. 32/3 Beispiel - Webportal (3) Dokumente sollen nach der Nutzung Archiviert werden Klassischer Ansatz: Dokumente im vorhandenen Format abspeichern Problem: Migration/Emulation Lösung: Archivierung der XML-Dokumente, Stylesheets etc. Automatisierte Migration möglich (solange XML verstanden wird) Dynamische Inhalte und Formate – p. 32/3 Danke für’s Zuhören! Fragen? Dynamische Inhalte und Formate – p. 33/3