XSL - Dokumente mit Stil
Download
Report
Transcript XSL - Dokumente mit Stil
XSL - Dokumente mit Stil
Ein Vortrag im Rahmen des
Seminars
„ WWW und Datenbanken“
SS 2001
Referent: Fabian Wleklinski
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
2
Einleitung
Tagesordnung:
Informationswirrwarr
XSL
XSLT
XPath
XSL FO
XSL – Ein Beispiel
XSL – Zusammenfassung
Ausblick
Software
Literatur
10. Mai 2001
XSL - Dokumente mit Stil
3
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
4
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 QuasiStandards
HTML, PowerPoint, Excel, ...
10. Mai 2001
XSL - Dokumente mit Stil
5
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
6
Informationswirrwarr
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
10. Mai 2001
physische Auszeichnungen sind: Schriftfarbe, -größe,
kursiv, ...
logische Auszeichnungen
sind:
XSL - Dokumente
mit StilÜberschrift, Absatz,
7
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
8
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
9
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
10
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
11
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
12
XSL
3 Bestandteile:
XSLT
XPath
XSL FO
(XSL Transformations)
(XML Path Language)
(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
13
XSL
Status:
XSL 1.0
XSLT 1.0
XSLT 1.1
XSLT 2.0 req.
XPATH 1.0
XPATH 2.0 req.
10. Mai 2001
Candidate Recommendation
Recommendation
Working Draft
Working Draft
Recommendation
Working Draft
XSL - Dokumente mit Stil
14
XSL
SGML
DSSSL
XSL
XML
XHTML
CSS
HTML
10. Mai 2001
XSL - Dokumente mit Stil
15
XSL
XML
XSL
XSLT
XSL FO
10. Mai 2001
XSL - Dokumente mit Stil
XPath
16
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
17
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
18
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
19
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
20
XSLT
XSLT=XSL Transformations
XML Sprache, realisiert durch Namensraum
„xsl“
xmlns:xsl=http://www.w3.org/1999/XSL/Transf
orm
10. Mai 2001
XSL - Dokumente mit Stil
21
XSLT
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Tr
ansform"/>
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
22
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 XMLProzessors
Aber wie sehen die XSLT-Anweisungen aus... ???
10. Mai 2001
XSL - Dokumente mit Stil
23
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
24
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
25
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
26
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
27
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
28
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
29
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
30
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
31
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
32
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
33
XSLT
<img>
<xsl:attribute name="src">
<xsl:value-of select="img/imgname"/>
</xsl:attribute>
</img>
Im Beispiel wird das entsprechende Muster aus dem
XML-Quellbaum geholt, und eine Ausgabe
generiert:
<img src="img/imgname"/>
10. Mai 2001
XSL - Dokumente mit Stil
34
XSLT
<xsl:template match="MeinElement">
<xsl:copy>
<xsl:attribute name="kopiert">
true
</xsl:attribute>
</xsl:copy>
</xsl:template>
Im Beispiel wird das Element „MeinElement“
kopiert und ein Attribut „kopiert“ mit dem Wert
„true“ hinzugefügt
10. Mai 2001
XSL - Dokumente mit Stil
35
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
36
XPath
XPath-Abfrage liefert node-set zurück
(Menge von Knoten)
Besitzt keine XML-Syntax
Syntax eher vergleichbar mit
Dateisystem („location paths“)
(„/usr/local/...“)
Dient auch für XPointer
10. Mai 2001
XSL - Dokumente mit Stil
37
XPath
Knoten eines XML Baumes/Dokumentes
Wurzelknoten (root)
Elemente
Attribute
Texte
Namespace-Attribute
Processing instructions
Kommentare
für XSL werden im Wesentlichen die fettmarkierten Knotenarten benötigt
10. Mai 2001
XSL - Dokumente mit Stil
38
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
39
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
40
XPath
Formale Definition des
location path
[/]location_step(/ location_step)*
location step
10. Mai 2001
entspricht Verzeichnis/Datei im
Dateisysten
wirkt wie ein Filter: bekommt
eine Knotenmenge als Eingabe,
und liefert eine Teilmenge zurück
XSL - Dokumente mit Stil
41
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
42
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
43
XPath
Richtungen (1)
10. Mai 2001
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
...
XSL - Dokumente mit Stil
44
XPath
Richtungen (2)
10. Mai 2001
...
attribute: nicht-NamespaceAttribute
namespace: Namespace-Attribute
preceding-sibling: Vorgänger
following-sibling: Nachfolger
preceding: Alle Vorgänger
following: Alle Nachfolger
XSL - Dokumente mit Stil
45
XPath
Vorgabewert für die Richtung:
child
abgekürzte Ausdrücke für Richtungen:
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
46
XPath
Typen (1)
*
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
47
XPath
Typen (2)
comment()
Alle Kommentarknoten
processinginstruction()
Alle Processing-Instruction-Knoten
processingAlle Processing-Instruction-Knoten mit Expandedinstruction(name) Name name
node()
10. Mai 2001
Alle Knoten
XSL - Dokumente mit Stil
48
XPath
abgekürzte Ausdrücke für Tests:
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
49
XPath
abgekürzte Ausdrücke für location steps:
abgekürzter location step
location step
child::
attribute::
@
self::node()
.
parent::node()
..
descendant-or-self::node()/ //
10. Mai 2001
XSL - Dokumente mit Stil
50
XPath
Beispiele für location paths (1):
location path
Abkürzung Beschreibung
child:text()
text()
Kinder-Textelemente
/child:html
/html
Elemente „html“ unterhalb vom
Wurzelknoten
/descendant-or//table
self::node()/child::
table
Elemente „table“ überall im Dokument
/parent::node()/chi ../table/@wi Attribute „ WIDTH“ aller Tabellen, die
ld::table/attribute:: dth
Kinder des Eltern-Knotens sind
width
10. Mai 2001
XSL - Dokumente mit Stil
51
XPath
einige, beispielhafte Funktionen in XPath:
last(), position(), count(), id(), name(),
substring(), concat(), true(), round(), translate()
10. Mai 2001
XSL - Dokumente mit Stil
52
XPath
Beispiele für location paths (2):
location path
Abkürzung Beschreibung
/child::html/child::
body/child::html[2]
/html/body/t Die zweite Tabelle im HTML-Body
able[2]
/descendant-or//table[@wi Alle Tabellen, die "50%" Breite haben
self::table[attribute:: dth =
width = "50%"]
"50%"]
//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
53
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
54
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
55
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
56
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
57
XSL FO
für verschiedene Ausgabemedien können
dank XSL verschiedene FO definiert werden
z.B. seitenorientiert für Druck, nichtseitenorientiert für HTML
z.B. komplex für HTML, simpel für WAP/WML
10. Mai 2001
XSL - Dokumente mit Stil
58
XSL FO
Bessere
Internationalisierung als
bei CSS
10. Mai 2001
XSL - Dokumente mit Stil
Unterstützung für alle
Kombinationen von
vertikaler und horizontaler
Schreibrichtung
bei logischen
Richtungsangaben „start“,
„end“, ... statt „left“,
„bottom“, ...
59
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
60
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
61
XSL FO
XSL Formatting Object
„layout master set“
Definition der
Seitenklassen
Die möglichen Abfolgen
von Seitenklassen
Die Seiten und ihre Inhalte
10. Mai 2001
XSL - Dokumente mit Stil
62
XSL FO
cover
10. Mai 2001
leftPage
XSL - Dokumente mit Stil
rightPage
63
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
64
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
65
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
66
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
67
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
68
XSL FO
areas
regions
block areas
line areas
inline areas
charakter areas
10. Mai 2001
XSL - Dokumente mit Stil
69
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 XSLTAnwendung
10. Mai 2001
XSL - Dokumente mit Stil
70
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
71
XSL – Ein Beispiel
telemallCOMMUNITY
benutzt XML/XSL
10. Mai 2001
warum?
5 Gründe für den Einsatz von
XML!
XSL - Dokumente mit Stil
72
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 WorkFlow-Prozesse, z.B. können Implementierung und
Webdesign „zeitgleich“ beginnen
10. Mai 2001
XSL - Dokumente mit Stil
73
XSL – Ein Beispiel
Grund 2: Personalisierung
Jeder Benutzer des Systems kann sich sein
„Lieblings-Stylesheet“ auswählen
Grund 3: Erweiterbarkeit
XML/XSLT als ausgegebenes Datenformat
garantiert die Erweiterbarkeit auf alternative
Ausgabemedien wie WAP/WML, Windows CEund Palm-Geräte, Print-Medien etc.
10. Mai 2001
XSL - Dokumente mit Stil
74
XSL – Ein Beispiel
Grund 4: Strenge Modularisierung durch offene
Protokolle
Einzelne Bestandteile des Systems sind autarke
Applikationen, und bieten ihre Dienste durch eine XMLSchnittstelle (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
75
GIF, JPG, NSK-TIFF etc.
AVI, AU, WAV,
WMA, MP3 etc.
Veröffentlicher
DOC, HTML,
PDF, etc.
MPG, WMV,
RM, etc.
JPEG, GIF etc.
10. Mai 2001
XSL - Dokumente mit Stil
76
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
77
<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
78
XSL – Ein Beispiel
Schauen wir uns nun das Ergebnis der
Umwandlung mittels drei verschiedener
XSL-Stylesheets an:
10. Mai 2001
XSL - Dokumente mit Stil
79
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
80
XSL – Ein Beispiel
10. Mai 2001
XSL - Dokumente mit Stil
81
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
82
XSL – Ein Beispiel
10. Mai 2001
XSL - Dokumente mit Stil
83
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
84
XSL – Ein Beispiel
10. Mai 2001
XSL - Dokumente mit Stil
85
XSL – Ein Beispiel
10. Mai 2001
XSL - Dokumente mit Stil
86
XSL – Ein Beispiel
Informationen werden
umgewandelt und
mehrfach
verwendet
XML
ermöglicht
heterogene
Lieferkanäle!
10. Mai 2001
XSL - Dokumente mit Stil
87
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
88
XSL - Zusammenfassung
Vorteile gegenüber CSS
ein erweitertes Formatierungsmodell
bessere Internationalisierung und mehr SchreibModi
Unterstützung von Linking
10. Mai 2001
XSL - Dokumente mit Stil
89
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
90
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
91
Software
SAXON home page
http://users.iclway.co.uk/mhkay/saxon/
Sablotron: XSL Transformations
Processor
http://www.gingerall.com/charliebin/get/webGA/act/sablotron.act
FOP (Apache)
http://xml.apache.org/fop/
10. Mai 2001
XSL - Dokumente mit Stil
92
Software
Unicorn XML Toolkit
http://www.unicornenterprises.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
93
Software
Übersicht von Free XML Tools
http://www.garshol.priv.no/download/xmltools/name
_ix.html
XML 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
94
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
95
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
96
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.fhwedel.de/~si/seminare/ws00/Ausarbeitung/3.xlin
k/xlink0.htm
10. Mai 2001
XSL - Dokumente mit Stil
97
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/inde
x.html
ZVON.org
http://www.zvon.org
10. Mai 2001
XSL - Dokumente mit Stil
98
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
99
Literatur
Jens Wilke: Abfragesprachen für XML-Dokumente
http://www3.informatik.tumuenchen.de/public/lehre/lehre.WS00/HS00Ausarbeitungen/HS00-Ausarbeitung8.pdf
Heiko Faasch: XSLT- Die XSL
Transformationssprache
http://www.fhwedel.de/~si/seminare/ws00/Ausarbeitung/5.xslt/xslt0.ht
m
10. Mai 2001
XSL - Dokumente mit Stil
100
Literatur
Eugen Dück: Proseminar Datenmodellierung Vortrag über XML
http://www3.informatik.tumuenchen.de/public/lehre/lehre.WS00/PS00Ausarbeitungen/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
101
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
102
Kontakt & Downloads
Fabian Wleklinski:
[email protected]
Quellcodes und Folien im PPT-, PDF-, PSund HTML-Format verfügbar unter:
http://www.stormzone.de/uni/Hauptstudium/
seminare/wwwdb/list.php3
10. Mai 2001
XSL - Dokumente mit Stil
103
Ende
Das war‘s!
10. Mai 2001
XSL - Dokumente mit Stil
104