Ein Vortrag im Rahmen des Seminars
„ WWW und Datenbanken“
SS 2001
XSL - Dokumente mit Stil
Referent: Fabian Wleklinski
10. Mai 2001 XSL - Dokumente mit Stil 2
Einleitung
Ziele des Vortrags: Warum XSL? XSLT?
XSL FO? XPath? Grundverständnis wichtigste Elemente
nicht Ziel des Vortrags: Syntax pauken
XSL lernt sich wie HTML am Besten „in der Praxis“
10. Mai 2001 XSL - Dokumente mit Stil 3
Einleitung
Tagesordnung: Informationswirrwarr XSL XSLT XPath XSL FO XSL – Ein Beispiel XSL – Zusammenfassung Ausblick Software Literatur
10. Mai 2001 XSL - Dokumente mit Stil 4
Informationswirrwarr
unzählige Formate für Informationen
teils standardisiert, teils proprietär
.html, .ps, .pdf, .doc, .rm, .mp3, .wma, .jpg, .png, .ppt, .lyx, .bmp, .lwp, .vcf, ....
10. Mai 2001 XSL - Dokumente mit Stil 5
Informationswirrwarr
Informationsaustausch im Alltag? erschwert durch inkompatible Formate oft ist Datenkonvertierung nötig je nach Format spezifisches Vorgehen „unlösbares“ Problem für exotische Formate
Für Teilbereiche existieren Quasi-Standards HTML, PowerPoint, Excel, ...
10. Mai 2001 XSL - Dokumente mit Stil 6
Informationswirrwarr
60er Jahre: Entwicklung der GML bei IBM Generalized Markup Language
80er Jahre: Entwicklung der SGML Standard Generalized Markup Language 1986 zum ISO-Standard setzt sich nur in wenigen Bereichen durch, da
komplex und Software schwer zu programmieren
populärste Anwendung: HTML
10. Mai 2001 XSL - Dokumente mit Stil 7
1996: DSSSL wird ISO-Standard Stilsprache für SGML erlaubt Umwandlung von SGML Dokumenten, z.B.
SGML HTML genauso kompliziert wie SGML selber
1996: W3C verabschiedet CSS Zuweisen von physischen zu logischen
Auszeichnungen physische Auszeichnungen sind: Schriftfarbe, -größe, kursiv, ... logische Auszeichnungen sind: Überschrift, Absatz, Fußzeile, ...
Informationswirrwarr
10. Mai 2001 XSL - Dokumente mit Stil 8
Informationswirrwarr
1997: W3C verabschiedet XML Teilmenge von SGML Notbehelf: Formatierung mittels CSS
1997: XSL- Vorschlag bei W3C eingereicht Microsoft, ArborText, Inso, Henry Thompson,
James Clark (DSSSL-Engine „Jade“)
Aber was ist XSL... ???
10. Mai 2001 XSL - Dokumente mit Stil 9
XSL
Stilsprache von XML in XML-Syntax ähnlich zu DSSSL „XSL is based on
DSSSL, which is based on Lisp. It is amazing what people will do to avoid Lisp“
10. Mai 2001 XSL - Dokumente mit Stil 10
XSL
Forderungen: einfache Nutzung über das Internet XML-Syntax deklarative Sprache für Textformatierungen wie
bei CSS oder DSSSL vorhanden „als letzte Möglichkeit“eine Skriptsprache, um
komplexe Formatierungen und Erweiterbarkeit zu garantieren
10. Mai 2001 XSL - Dokumente mit Stil 11
XSL
Forderungen: schnelle Entwicklung von XSL-Anwendungen XSL-Dokumente sollen intuitiv lesbar sein Im Allgemeinen in .xsl-Dateien enthalten
10. Mai 2001 XSL - Dokumente mit Stil 12
XSL
Einfaches Beispiel:
<?xml version="1.0" encoding="UTF-8"?><xsl:template xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <html><body> <xsl:value-of select="mail/autor/name"/> </body></html></xsl:template>
10. Mai 2001 XSL - Dokumente mit Stil 13
XSL
3 Bestandteile: XSLT (XSL Transformations) XPath (XML Path Language) XSL FO (XSL Formatting Objects)
XSLT ist die „revolutionärste Neuerung“ XSLT ist nur 1 der 3 Komponenten von XSL XSL FO gehören nicht zu XSLT, sondern zu XSL! XPath gehört nicht zu XSLT, auch nicht zu XSL,
sondern ist eigenständig! (vgl. XLink)
10. Mai 2001 XSL - Dokumente mit Stil 14
XSL
Status: XSL 1.0 Candidate Recommendation XSLT 1.0 Recommendation XSLT 1.1 Working Draft XSLT 2.0 req. Working Draft XPATH 1.0 Recommendation XPATH 2.0 req. Working Draft
10. Mai 2001 XSL - Dokumente mit Stil 15
XSL
SGML
XML
DSSSL
XSL
HTML CSS
XHTML
10. Mai 2001 XSL - Dokumente mit Stil 16
XSL
XML XSL
XSL FO
XSLT
XPath
10. Mai 2001 XSL - Dokumente mit Stil 17
XSL
Streng genommen muss man einen XSL- und einen XSLT-Prozessor unterscheiden
„XSLT-Prozessor“ ist der übliche Ausdruck Ein „XSL Prozessor“ ist eine Software die
ein XML Quelldokument und ein XSL Dokument liest die XSL-Befehle auf das XML Quelldokument anwendet ein XML Zieldokument erzeugt
10. Mai 2001 XSL - Dokumente mit Stil 18
XSL
Wie arbeitet ein XSL Prozessor? aus dem XML Quelldokument eine
Baumstruktur erzeugen, den „Quellbaum“ XSL-Befehle anwenden, dabei „Zielbaum“
aufbauen aus erzeugtem Zielbaum die XML Zieldatei
schreiben Schritt 3: Zielbaum interpretieren, um
Formatierung zu ermöglichen Die meisten XSL Anwendungen
unterstützen keine XSL FO!
10. Mai 2001 XSL - Dokumente mit Stil 19
XSL
Zielbaum kann völlig andere Struktur besitzen als original-XML-Baum!
Hinzufügen weiterer Strukturen z.B. Erzeugung von Inhaltsverzeichnis eines
Dokumentes „on the fly“
XSL-Datei enthält „Baumkonstruktionsregeln“
10. Mai 2001 XSL - Dokumente mit Stil 20
XSL
Baumkonstruktionsregeln bestehen aus zwei Teilen: 1. ein Muster zum Vergleich mit den Elementen
des Quellbaumes 2. Anweisungen zum Erzeugen von Elementen
für den Zielbaum
10. Mai 2001 XSL - Dokumente mit Stil 21
XSLT
XSLT=XSL TransformationsXML Sprache, realisiert durch Namensraum
„xsl“ xmlns:xsl=http://www.w3.org/1999/XSL/
Transform
10. Mai 2001 XSL - Dokumente mit Stil 22
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/> muß das XML-Wurzelelement sein darf nur ein einziges Mal im XML Dokument stehen Alle XSLT-Anweisungen müssen unterhalb stehen xsl:transform gilt als Synonym
10. Mai 2001 XSL - Dokumente mit Stil 23
XSLT
Mögliche Attribute: default-space: Sollen Leerzeichen im Originaldokument
erhalten bleiben? Vorgabewert: „preserve“ indent-result: Sollen in der Ausgabe die Leerzeichen
erhalten werden? Vorgabewert: „yes“ language: im Stylesheet benutzte Skriptsprache.
Vorgabewert: „JScript“ result-ns: Namensraum der Ausgabe des XML-
Prozessors Aber wie sehen die XSLT-Anweisungen aus... ???
10. Mai 2001 XSL - Dokumente mit Stil 24
XSLT
XSLT besteht aus „Template Rules“ Template Rules sind XML-Elemente
Eine Template-Rule besteht aus Regeln/Muster, die eine bestimmte Menge von
XML Elementen beschreiben, ähnlich wie ein regulärer Ausdruck eine bestimmte Menge von Texten beschreibt
Einem „Template“
10. Mai 2001 XSL - Dokumente mit Stil 25
XSLT
Was macht eine Template Rule? Die Regeln/Muster filtern bestimmte XML Elemente aus
dem XML Quelldokument heraus Das in der Template Rule enthaltene Template wird auf
die herausgefilterten XML Elemente angewendet Was macht ein Template?
Template ist gewissermaßen die Vorlage für das Zieldokument
Ein Template kann den Prozeß rekursiv fortführen Ergebnis der Verarbeitung bildet den Zielbaum
10. Mai 2001 XSL - Dokumente mit Stil 26
XSLT
<xsl:template match="/"/> Abfrage des Elementes im Quellbaum ist
zwingend!<xsl:template match="muster"/>
Alle Knoten vom Typ „muster“, wobei „muster“ ein XPath Ausdruck ist
was XPath genau bedeutet, dazu kommen wir später!
10. Mai 2001 XSL - Dokumente mit Stil 27
XSLT
Template != Template Rule Template Rule: Regeln für den
Transformationsprozess, enthält ein Template
Template: ein Stück Stylesheet, wird im Zieldokument instanziiert
10. Mai 2001 XSL - Dokumente mit Stil 28
XSLT
<xsl:apply-templates/> Verarbeitung der Nachfahren des aktuellen Knotens
<xsl:apply-templates select="muster"/> Verarbeitung der Nachfahren des aktuellen Knotens, die
vom Typ „muster“ sind Vorgabewert für „select“ ist „node()“, d.h. alle Knoten
außer Attributen <xsl:apply-templates order-by=„-krit1;+krit2"/> Sortierung der Knoten zuerst nach „krit1“ aufsteigend,
dann nach „krit2“ absteigend
10. Mai 2001 XSL - Dokumente mit Stil 29
XSLT
<xsl:value-of/> Einfügen des Wertes des aktuellen Knotens als
Text (+Unterknoten)<xsl:value-of select="muster"/>
Einfügen des Wertes der ausgewählten Knoten „muster“ als Text. Vorgabewert ist „.“ (Inhalt des aktuellen Knotens)
10. Mai 2001 XSL - Dokumente mit Stil 30
XSLT
<xsl:for-each> Anwendung des Template auf eine Menge von Knoten</xsl:for-each>
<xsl:for-each select="muster" order-by="elem"/> Anwendung eines Template auf alle Knoten vom
Typ „muster“, sowie Sortierung nach dem Wert von „elem1“
10. Mai 2001 XSL - Dokumente mit Stil 31
XSLT
Bedingte Anweisungen mit Attribut „test“ <xsl:if/> nur für einfache Vergleiche
<xsl:if test="name[."'abc']"> <h1>abc</h1> <xsl:apply-templates/></xsl:if>
Attribute: expr=script-expression muss TRUE zurückgeben language=lang-name Vorgabewert: JScript test
10. Mai 2001 XSL - Dokumente mit Stil 32
XSLT
<xsl:choose/> Äquivalent zu „select case“, „switch case“, ... aus C,JAVA,... <xsl:choose> <xsl:when test="name[.='a']"> ... </xsl:when> <xsl:when test="name[.='b']"> ... </xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose>
10. Mai 2001 XSL - Dokumente mit Stil 33
XSLT
Benutzung innerhalb von Templates, die Ausgaben produzieren, xsl:copy
Hinzufügen von Elementen <xsl:element name="xsl.template"/>
Hinzufügen von Attributen <xsl:attribute name="match">cost</xsl:attribute>
kann auch ohne xsl:element benutzt werden bevor Kinderknoten zum Element gefügt werden,
müssen alle Attribute erzeugt worden sein
10. Mai 2001 XSL - Dokumente mit Stil 34
XSLT
Im Beispiel wird das entsprechende Muster aus dem XML-Quellbaum geholt, und eine Ausgabe generiert:
<img src="img/imgname"/>
<img> <xsl:attribute name="src"> <xsl:value-of select="img/imgname"/> </xsl:attribute></img>
10. Mai 2001 XSL - Dokumente mit Stil 35
XSLT
Im Beispiel wird das Element „MeinElement“ kopiert und ein Attribut „kopiert“ mit dem Wert „true“ hinzugefügt
<xsl:template match="MeinElement"> <xsl:copy> <xsl:attribute name="kopiert"> true </xsl:attribute> </xsl:copy></xsl:template>
10. Mai 2001 XSL - Dokumente mit Stil 36
XPath
seit November 1999 Empfehlung vom W3C
operiert auf der XML Baumstruktur
lokalisiert Knoten z.B. „erster Absatz des
dritten Abschnittes“
10. Mai 2001 XSL - Dokumente mit Stil 37
XPath
XPath-Abfrage liefert node-set zurück (Menge von Knoten)
Besitzt keine XML-SyntaxSyntax eher vergleichbar mit
Dateisystem („location paths“) („/usr/local/...“)
Dient auch für XPointer
10. Mai 2001 XSL - Dokumente mit Stil 38
XPath
Knoten eines XML Baumes/Dokumentes Wurzelknoten (root) Elemente Attribute Texte Namespace-Attribute Processing instructions Kommentare
für XSL werden im Wesentlichen die fett-markierten Knotenarten benötigt
10. Mai 2001 XSL - Dokumente mit Stil 39
XPath
location paths (1) location path entspricht einer Dateisystem-Pfadangabe man nennt die Komponenten aber nicht „Dateien“ oder
„Verzeichnisse“, sondern location steps location steps sind die Namen der XML Elemente der Pfadtrenner ist "/" ein Pfad wird von links nach rechts abgearbeitet
10. Mai 2001 XSL - Dokumente mit Stil 40
XPath
location paths (2) Pfade beginnend mit "/" sind absolute Pfade, d.h.
der Kontextknoten ist der Wurzelknoten. Andere Pfade sind relative Pfade, d.h. Kontextknoten bleibt unverändert
Pfade enthalten Platzhalter genau wie im Dateisystem, aber wesentlich flexibler
10. Mai 2001 XSL - Dokumente mit Stil 41
XPath
Formale Definition des location path [/]location_step(/ location_step)*
location step entspricht Verzeichnis/Datei im
Dateisysten wirkt wie ein Filter: bekommt
eine Knotenmenge als Eingabe, und liefert eine Teilmenge zurück
10. Mai 2001 XSL - Dokumente mit Stil 42
XPath
Es gibt genau einen „Kontext-Knoten“ entspricht dem Arbeitsverzeichnis des
Dateisystems genau wie im Dateisystem navigiert man von der
aktuellen Position aus „vor“ und „zurück“ („cd xyz“, „cd ..“)
aber: XPath kennt mehr als 2 Richtungen der Navigation!
10. Mai 2001 XSL - Dokumente mit Stil 43
XPath
Ein location step wählt aber nicht wie im Dateisystem einen bestimmten Unterknoten aus, sondern ist wie folgt aufgebaut: richtung::typ([prädikat])*
Das Prädikat ist eine boolesche Bedingung Die Richtung der Navigation, der Typ der Knoten
und das Prädikat verfeinern jeweils die Abfrage, d.h. verkleinern die Teilmenge der Knoten
10. Mai 2001 XSL - Dokumente mit Stil 44
XPath
Richtungen (1) self: aktueller Knoten child: direkte Kinderknoten descendant: Kinderknoten, aber keine
Attribute! descendant-or-self: Kinderknoten
oder aktueller Knoten, aber keine Attribute!
parent: direkte Elternknoten ancestor: Elternknoten ancestor-or-self: Elternknoten oder
aktueller Knoten ...
10. Mai 2001 XSL - Dokumente mit Stil 45
XPath
Richtungen (2) ... attribute: nicht-Namespace-
Attribute namespace: Namespace-Attribute preceding-sibling: Vorgänger following-sibling: Nachfolger preceding: Alle Vorgänger following: Alle Nachfolger
10. Mai 2001 XSL - Dokumente mit Stil 46
Vorgabewert für die Richtung: child
abgekürzte Ausdrücke für Richtungen:
XPath
Abkürzung Beschreibung
Keine Achse child::
@ attribute::
. Der aktuelle Knoten, anstatt self::node()
.. Der Mutter (Vater? Elter?) Knoten, anstatt parent::node()
[2] anstatt [position()=2]
10. Mai 2001 XSL - Dokumente mit Stil 47
Typen (1)
XPath
* Alle Knoten vom Typ der Achse. Achsentyp ist immer Element außer bei attribute und namespace.
namespace Alle Knoten im Namespace namespace
namespace:typ Alle Knoten mit Namen namespace:typ
typ Alle Knoten mit Namen typ und NULL-Namespace
text() Alle Textknoten
10. Mai 2001 XSL - Dokumente mit Stil 48
Typen (2)
XPath
comment() Alle Kommentarknoten
processing-instruction()
Alle Processing-Instruction-Knoten
processing-instruction(name)
Alle Processing-Instruction-Knoten mit Expanded-Name name
node() Alle Knoten
10. Mai 2001 XSL - Dokumente mit Stil 49
abgekürzte Ausdrücke für Tests:
XPath
Test Beschreibung
'Name' Testet, ob Knoten diesen Namen hat
* Knoten mit beliebigem Namen
text() Ein Text Knoten
..[..] Zusätzliches Prädikat (z.B. boolescher Ausdruck), das erfüllt sein muss
10. Mai 2001 XSL - Dokumente mit Stil 50
abgekürzte Ausdrücke für location steps:
XPath
abgekürzter location step location step
child::
attribute:: @
self::node() .
parent::node() ..
descendant-or-self::node()/ //
10. Mai 2001 XSL - Dokumente mit Stil 51
Beispiele für location paths (1):
XPath
location path Abkürzung Beschreibung
child:text() text() Kinder-Textelemente
/child:html /html Elemente „html“ unterhalb vom Wurzelknoten
/descendant-or-self::node()/child::table
//table Elemente „table“ überall im Dokument
/parent::node()/child::table/attribute::width
../table/@width
Attribute „ WIDTH“ aller Tabellen, die Kinder des Eltern-Knotens sind
10. Mai 2001 XSL - Dokumente mit Stil 52
einige, beispielhafte Funktionen in XPath: last(), position(), count(), id(), name(),
substring(), concat(), true(), round(), translate()
XPath
10. Mai 2001 XSL - Dokumente mit Stil 53
Beispiele für location paths (2):
XPath
location path Abkürzung Beschreibung
/child::html/child::body/child::html[2]
/html/body/table[2]
Die zweite Tabelle im HTML-Body
/descendant-or-self::table[attribute::width = "50%"]
//table[@width = "50%"]
Alle Tabellen, die "50%" Breite haben
//td[position() != last()]
Alle „TD“-Elemente im Dokument mit Ausnahme des letzten
//ex:head Alle HEAD-Elemente, die im Namespace ex deklariert sind
10. Mai 2001 XSL - Dokumente mit Stil 54
XSL FO
formatierender Bestandteil von XSL
ermöglicht Zuweisung von Schriftformatierungen fett, kursiv, Überschrift,
... in XML-Syntax Anlehnungen an CSS
10. Mai 2001 XSL - Dokumente mit Stil 55
XSL FO
XSL FO=XSL Formatting Objects XML Sprache, realisiert durch Namensraum „fo“
xmlns:fo=„http://www.w3.org/1999/XSL/Format“ Alle XSL FO Elemente stehen unter </fo:root> Unter </fo:root> dürfen stehen:
</fo:layout-master-set> </fo:page-sequence>
10. Mai 2001 XSL - Dokumente mit Stil 56
XSL FO
Ist eine von vielen, denkbaren Formatierungssemantiken! CSS eine andere z.B. können Verlagshäuser eine eigene
definieren bzw. XSL FO erweitern
Wird von den meisten XSL Anwendungen (noch) nicht unterstützt!
10. Mai 2001 XSL - Dokumente mit Stil 57
XSL FO
Viel mehr Auszeichnungen gegenüber HTML+CSS Horizontal und vertikal gespiegelter Text Fußnoten Seitenzahlen in Querverweisen Silbentrennung „Aurale Auszeichnungen“ für Sprachausgabe ...
Breitere Verwendung vorgesehen als bei CSS CSS primär für WWW XSL FO für WWW, WAP, Printmedien, ...
10. Mai 2001 XSL - Dokumente mit Stil 58
XSL FO
für verschiedene Ausgabemedien können dank XSL verschiedene FO definiert werden z.B. seitenorientiert für Druck, nicht-
seitenorientiert für HTML z.B. komplex für HTML, simpel für WAP/WML
10. Mai 2001 XSL - Dokumente mit Stil 59
XSL FO
Bessere Internationalisierung als bei CSS
Unterstützung für alle Kombinationen von vertikaler und horizontaler Schreibrichtung
bei logischen Richtungsangaben „start“, „end“, ... statt „left“, „bottom“, ...
10. Mai 2001 XSL - Dokumente mit Stil 60
XSL FO
XSL FO ist viel „Schreibarbeit“ wird in der Praxis i.A. nur von XSL-Prozessoren erzeugt
Bei CSS: em {font-weight:bold}
Bei XSL FO:
<style-rule> <target-element type="emph"/> <apply font-weight="bold"/> </style-rule>
10. Mai 2001 XSL - Dokumente mit Stil 61
XSL FO
XSL FO unterstützt die Definition von „Seitenklassen“
Definition von Seitenklassen im „master layout set“ dort können auch die möglichen Reihenfolgen festgelegt
werden Dazu ein Beispiel: Die Seiten eines Buches
Eine Coverseite, anschließend alternierend beliebig viele links- und rechtsliegende Seiten
Außer Coverseite werden alle Seiten auf Papier mit Kopfzeile gedruckt
10. Mai 2001 XSL - Dokumente mit Stil 62
XSL FO
XSL Formatting Object
„layout master set“
Definition derSeitenklassen
Die möglichen Abfolgenvon Seitenklassen
Die Seiten und ihre Inhalte
10. Mai 2001 XSL - Dokumente mit Stil 63
XSL FO
cover leftPage rightPage
10. Mai 2001 XSL - Dokumente mit Stil 64
XSL FO
Definition der Seitenklassen:
<fo:layout-master-set> <fo:simple-page-master master-name="cover" margin-top="0.5cm" margin-bottom="0.5cm" margin-right="0.5cm" margin-left="1cm"/> <fo:simple-page-master master-name="leftPage" margin-top="2cm" margin-bottom="0.5cm" margin-right="1cm" margin-left="0.5cm"/> <fo:simple-page-master master-name="rightPage" margin-top="2cm" margin-bottom="0.5cm" margin-right="0.5cm" margin-left="1cm"/></fo:layout-master-set>
10. Mai 2001 XSL - Dokumente mit Stil 65
XSL FO
Festlegung der Seitenreihenfolge:
<fo:page-sequence-master master-name="contents"> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference master-name="leftPage" odd-or-even="even"/> <fo:conditional-page-master-reference master-name="rightPage" odd-or-even="odd"/> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master>
10. Mai 2001 XSL - Dokumente mit Stil 66
XSL FO
Seiteninhalte und Zuweisung zu Seitenklassen:
<fo:page-sequence master-name="contents"initial-page-number="2"> <fo:static-content flow-name="xsl-region-before"> <fo:block font-size="14pt">Kopfzeile</fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block font-align="left">Fließtext</fo:block>
</fo:flow> </fo:page-sequence>
10. Mai 2001 XSL - Dokumente mit Stil 67
XSL FO
</fo:block> enthält Formatierungsinformationen, die an eine
Textstruktur geknüpft sind (z.B. Absatz- und Zeilenabstände, Textausrichtung, Numerierungs- und Gliederungsanweisungen,...)
entspricht in etwa einem „Absatz“ Der Name sagt es: Blockcharakter
</fo:inline> enthält Formatierungsinformationen, die keinen
Zusammenhang zur Textstruktur haben (z.B. fett, kursiv, ...)
10. Mai 2001 XSL - Dokumente mit Stil 68
XSL FO
XSL FO erlaubt noch viel, viel mehr... Definition von Einzügen, Schriftarten, -farben, -größen,
Textauszeichnungen, Abständen, ... Eine unvollständige Auflistung unter
http://www.ibiblio.org/xml/books/bible/updates/15.html enthält 246 Attribute!
Hier die Auswahl einiger „c...“-Attribute caption-side, case-name, case-title, character,
clear, clip, color, color-profile-name, column-count, column-gap, column-number, column-width, content-height, content-type, content-width, country, cue, cue-after, cue-before
10. Mai 2001 XSL - Dokumente mit Stil 69
XSL FO
areas
regions
block areas
line areas
inline areas
charakter areas
10. Mai 2001 XSL - Dokumente mit Stil 70
XSL FO
Erstellung von XSL FO-Strukturen nur per XSL-Prozessor sinnvoll (zu viel Schreibarbeit sonst)
Instanzen der Formatierungsobjekte (xsl:fo) sind die Knoten des Zielbaumes der XSLT-Anwendung
10. Mai 2001 XSL - Dokumente mit Stil 71
XSL – Ein Beispiel
Software telemallCOMMUNITY der Firma telemall AG (Frankfurt) Standardsoftware für Internet-Communities basierend auf XML/XSLT entwickelt im Frühjahr 2001 von Kai Klüber,
Martin Klossek und Fabian Wleklinski
10. Mai 2001 XSL - Dokumente mit Stil 72
XSL – Ein Beispiel
telemallCOMMUNITY benutzt XML/XSL warum? 5 Gründe für den Einsatz von
XML!
10. Mai 2001 XSL - Dokumente mit Stil 73
XSL – Ein Beispiel
Grund 1: Trennung Implementierung und Design XML/XSLT erhöht die Wiederverwendbarkeit der
Software XML/XSLT macht unabhängig(er) von den Entwicklern XML/XSLT beschleunigt unternehmensinterne Work-
Flow-Prozesse, z.B. können Implementierung und Webdesign „zeitgleich“ beginnen
10. Mai 2001 XSL - Dokumente mit Stil 74
XSL – Ein Beispiel
Grund 2: Personalisierung Jeder Benutzer des Systems kann sich sein
„Lieblings-Stylesheet“ auswählenGrund 3: Erweiterbarkeit
XML/XSLT als ausgegebenes Datenformat garantiert die Erweiterbarkeit auf alternative Ausgabemedien wie WAP/WML, Windows CE- und Palm-Geräte, Print-Medien etc.
10. Mai 2001 XSL - Dokumente mit Stil 75
XSL – Ein Beispiel
Grund 4: Strenge Modularisierung durch offene Protokolle Einzelne Bestandteile des Systems sind autarke
Applikationen, und bieten ihre Dienste durch eine XML-Schnittstelle (via http-Protokoll) an
Grund 5: Offene Schnittstellen Schaffung universeller Schnittstellen für SOAP, NewsML,
RDF etc. Austausch von Content zwischen Nachrichtenagenturen und
Community-Betreibern Das folgende Diagramm soll die Idee verdeutlichen...
10. Mai 2001 XSL - Dokumente mit Stil 76
MPG, WMV, MPG, WMV, RM, etc.RM, etc.
AVI, AU, WAV, AVI, AU, WAV, WMA, MP3 etc.WMA, MP3 etc.
DOC, HTML, DOC, HTML, PDF, etc.PDF, etc.
JPEG, GIF JPEG, GIF etc.etc.
GIF, JPG, NSK-TIFF etc.GIF, JPG, NSK-TIFF etc.
VeröffentlicherVeröffentlicher
10. Mai 2001 XSL - Dokumente mit Stil 77
XSL – Ein Beispiel
Eine Internet-Community beinhaltet viele, viele Datensätze Nachrichtenbeiträge Diskussionsbeiträge Einträge im Kleinanzeiger, schwarzen Brett, etc... Veröffentlichungen im Presseboard ...
Schauen wir uns nun exemplarisch einen Datensatz dieses Systems an, zum Beispiel eine Nachrichtenmeldung:
10. Mai 2001 XSL - Dokumente mit Stil 78
<record ikey="1000" parentid="100"> <v_1 ikey="1000"> <date>2001-03-09 17:36:49</date> <authorid>12364</authorid> <authorname>Manfred Mustermann</authorname> <authoremail> [email protected] </authoremail> <authorinitials>MM</authorinitials> <nodeicon src="http:.."/> <subject src="http:.."> Datenschützer warnen vor gläsernem Internet-Nutzer </subject> <newlink src="http:..">neu</newlink> <dellink src="http:..">loeschen</dellink> </v_1></record>
10. Mai 2001 XSL - Dokumente mit Stil 79
XSL – Ein Beispiel
Schauen wir uns nun das Ergebnis der Umwandlung mittels drei verschiedener XSL-Stylesheets an:
10. Mai 2001 XSL - Dokumente mit Stil 80
XSL – Ein Beispiel
Da das ganze System auf XML/XSL aufbaut, werden natürlich viel mehr XML Anweisungen erzeugt, als nur die, die wir gesehen haben
Der gesamte XML Output sieht ungefähr so aus...
10. Mai 2001 XSL - Dokumente mit Stil 81
XSL – Ein Beispiel
10. Mai 2001 XSL - Dokumente mit Stil 82
XSL – Ein Beispiel
Erstellen der XSL-Stylesheets ist eine Designaufgabe, die nicht von dem Entwicklerteam übernommen werden muß bzw. sollte ;-)
Während der Entwicklung wurde daher „ohne Layout“ gearbeitet, nur mit minimaler Darstellung
Die Konvertierung von XML in HTML funktionierte zwar, aber das Ergebnis sah entsprechend übel aus, in etwa so...
10. Mai 2001 XSL - Dokumente mit Stil 83
XSL – Ein Beispiel
10. Mai 2001 XSL - Dokumente mit Stil 84
XSL – Ein Beispiel
Nachdem die Design-Abteilung ihre Arbeit beendet hatte, standen entsprechende Stylesheets zur Verfügung
Keine weitere Entwicklung, nur noch auswählen des neuen Stylesheet!
Das Layout sieht dann besser aus, zum Beispiel so...
10. Mai 2001 XSL - Dokumente mit Stil 85
XSL – Ein Beispiel
10. Mai 2001 XSL - Dokumente mit Stil 86
XSL – Ein Beispiel
10. Mai 2001 XSL - Dokumente mit Stil 87
XMLermöglichtheterogeneLieferkanäle!
Informationen werden umgewandelt und
mehrfachverwendet
XSL – Ein Beispiel
10. Mai 2001 XSL - Dokumente mit Stil 88
XSL - Zusammenfassung
Vorteile gegenüber CSS 90% der Formatierungseigenschaften aus XSL
Formatting Objects sind in CSS in ähnlicher Form enthalten, aber:
XSL bietet weitreichendere und mächtigere Selektoren als CSS, es sind efektivere Baumkonstruktionen möglich
ein Seitenlayout-Modell
10. Mai 2001 XSL - Dokumente mit Stil 89
XSL - Zusammenfassung
Vorteile gegenüber CSS ein erweitertes Formatierungsmodell bessere Internationalisierung und mehr Schreib-
Modi Unterstützung von Linking
10. Mai 2001 XSL - Dokumente mit Stil 90
XSL - Zusammenfassung
Vorteile gegenüber CSS XSL ist XML Sprache Die Möglichkeiten von CSS werden durch XSL FO
bereitgestellt, sogar übertroffen. Eine Umstrukturierung des XML Quellbaumes wie durch XSLT fehlt bei CSS.
Kombination von XSL und XSS? Denkbar ist eine hybride Lösung: XSL auf dem Server,
CSS auf dem Client
10. Mai 2001 XSL - Dokumente mit Stil 91
Ausblick
Bedeutung alternativer Plattformen steigt Handheld-PCs, Mobiltelefone, Kabel-TV, ...
Rendering auf dem Client Betrachter hat „Lieblings-Stylesheet“
XML/XSL hat auf dem Server bereits unbemerkt Bedeutung erlangt große Websites benutzen teilweise
XML/XSL, z.B. www.microsoft.com
10. Mai 2001 XSL - Dokumente mit Stil 92
Software
SAXON home page http://users.iclway.co.uk/mhkay/saxon/
Sablotron: XSL Transformations Processor http://www.gingerall.com/charlie-bin/
get/webGA/act/sablotron.actFOP (Apache)
http://xml.apache.org/fop/
10. Mai 2001 XSL - Dokumente mit Stil 93
Software
Unicorn XML Toolkit http://www.unicorn-enterprises.com/products
_xmlkit.html
Antenna House XSL Formatter http://www.antennahouse.com/xslformatter.
html
Übersicht von Free XML Tools http://www.garshol.priv.no/download/
xmltools/name_ix.html
10. Mai 2001 XSL - Dokumente mit Stil 94
Software
Übersicht von Free XML Tools http://www.garshol.priv.no/download/
xmltools/name_ix.htmlXML Software Guide: Specialized XML
Software http://wdvl.com/Software/XML/special.html
XML Software Guide: Additional XML Software Resource Lists http://wdvl.com/Software/XML/resources.html
10. Mai 2001 XSL - Dokumente mit Stil 95
Software
XMLSOFTWARE XML Editors http://xmlsoftware.com/editors/
XMLSOFTWARE XML Browsers http://www.xmlsoftware.com/browsers/
XML Software Guide: XML and XSL Editors http://wdvl.com/Software/XML/editors.html
XML.com Editors http://www.xml.com/pub/pt/3
10. Mai 2001 XSL - Dokumente mit Stil 96
Literatur
Extensible Markup Language (XML) http://www.w3.org/TR/REC-xml
Extensible Stylesheet Language (XSL) http://www.w3.org/Style/XSL/
XSLT.com - Resource site for tools , events , books , tutorials and other resources related to xslt , xsl , xml http://www.xslt.com/
10. Mai 2001 XSL - Dokumente mit Stil 97
Literatur
XSL Transformations (XSLT) http://www.w3.org/TR/xslt
XML Path Language (XPath) http://www.w3.org/TR/xpath
Robert Wruck: XLink, XPath & XPointer http://www.fh-wedel.de/~si/seminare/ws00/
Ausarbeitung/3.xlink/xlink0.htm
10. Mai 2001 XSL - Dokumente mit Stil 98
Literatur
ix 1/2001: „XSLT-Tutorial“ http://www.heise.de/ix/artikel/2001/01/167/
XML.com: What is XSLT? http://www.xml.com/pub/a/2000/08/holman/
index.html
ZVON.org http://www.zvon.org
10. Mai 2001 XSL - Dokumente mit Stil 99
Literatur
XMLNews.org: XML and the news industry http://www.xmlnews.org/
XSLINFO http://www.xslinfo.com/
xml.org http://xml.org/
10. Mai 2001 XSL - Dokumente mit Stil 100
Literatur
Jens Wilke: Abfragesprachen für XML-Dokumente http://www3.informatik.tu-muenchen.de/public/lehre/
lehre.WS00/HS00-Ausarbeitungen/HS00-Ausarbeitung8.pdf
Heiko Faasch: XSLT- Die XSL Transformationssprache http://www.fh-wedel.de/~si/seminare/ws00/
Ausarbeitung/5.xslt/xslt0.htm
10. Mai 2001 XSL - Dokumente mit Stil 101
Literatur
Eugen Dück: Proseminar Datenmodellierung - Vortrag über XML http://www3.informatik.tu-muenchen.de/public/lehre/
lehre.WS00/PS00-Ausarbeitungen/dueck-xmlproseminar.html
Andreas Kempf, Mario Ganter, Jörg Knaust, Markus Kurczek: Extensible Style Language http://stio1.sari.fh-wuerzburg.de/student/i199/xsl/
10. Mai 2001 XSL - Dokumente mit Stil 102
Literatur
XML in der Praxis - von Henning Behme und Stefan Mintert http://www.mintert.com/xml/buch/
XT http://www.jclark.com/xml/xt.html
Mario Jeckle: XML http://www.jeckle.de/xml
10. Mai 2001 XSL - Dokumente mit Stil 103
Kontakt & Downloads
Fabian Wleklinski: [email protected]
Quellcodes und Folien im PPT-, PDF-, PS- und HTML-Format verfügbar unter: http://www.stormzone.de/uni/
Hauptstudium/seminare/wwwdb/list.php3
10. Mai 2001 XSL - Dokumente mit Stil 104
Ende
Das war‘s!
Top Related