1 präsentation von xml- dokumenten durch browser mit stylesheets thomas schramm mai 2003

39
1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

Upload: hrodwulf-dreisbach

Post on 05-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

1

Präsentation von XML-Dokumenten durch

Browser mit Stylesheets

Thomas SchrammMai 2003

Page 2: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

2

EinleitungWie kann ich meine XML-Dokumente im Browser darstellen?

Antwort :

• DSSSL (Document Style Semantics and Specification Language)

• CSS (Cascading Stylesheets)

• XSL (Extensible Style Language)

Page 3: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

3

CSS (Cascading Stylesheets) Allgemein

• ...eine Sprache, bei der die Auszeichnung des XML-Dokuments nicht verändert wird, es werden lediglich Stile auf den Inhalt angewand, der bereits existiert.

• ...eine nicht-XML-Syntax, die benutzt wird, um das Aussehen bestimmter Elemente in einem Dokument zu beschreiben.

• ...eine direkte Sprache (es ist keine Umwandlung des XML-Dokumentes nötig).

CSS ist....

Page 4: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

4

CSS (Cascading Stylesheets) Level

Im Moment gibt es 3 Level (Versionen) von CSS:

• Level 1: Anwendung nur auf HTML

• Level 2: Erweiterung auf XML

• Level 3: Erweiterung der Funktionalität

Page 5: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

5

CSS (Cascading Stylesheets) Syntax

Element1, Element2, ... { EigenschaftA : WertA; EigenschaftB : WertB; ...}

Element3, ... { EigenschaftC : WertC; ...}...

Wie sieht die Syntax von CSS aus?

Liste von Elementen

Gruppierung von Elementen mit gleichen Eigenschaften

Wertzuweisung

Page 6: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

6

CSS (Cascading Stylesheets) Beispiel zur Syntax

pcdarstellung.css

computer { font-size: 12pt; }

name { display: block; /*Zeilenumbruch*/ font-family: Helvetica, Arial, sans-serif; font-size: 20pt; font-weight: bold; text-align: center;}

ip, betriebssystem { display: block; text-align: center;}

Page 7: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

7

CSS (Cascading Stylesheets) Verbindung mit XML-Dokumenten

Für die Verbindung gibt es eine XML-Anweisung:

<?xml:stylesheet Parameter?>

Es gibt folgende Parameter:

• type: der MIME-Typ des Stylesheets, bei CSS text/css• href: die relative oder absolute URL, unter der das

Stylesheet gefunden werden kann• title: Benennung des Stylesheets• media: Medientyp (z.B. handheld, print oder screen)• charset: verwendeter Zeichensatz

Wie verknüpfe ich die CSS-Datei mit dem XML-Dokument ?

Page 8: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

8

CSS (Cascading Stylesheets) Beispiel zur Verbindung

Xml-beispiel1.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><?xml:stylesheet type="text/css" href="pcdarstellung.css" media="screen" alternate="no" title="Für Webbrowser"

charset="ISO-8859-1"?>

<computer> <name>Hyper-Base</name><ip>127.0.0.1</ip><betriebssystem>Windows 2000</betriebssystem></computer>

Ausgabe im Browser:

Hyper-Base127.0.0.1

Windows 2000

Page 9: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

9

CSS (Cascading Stylesheets) Selektoren

Wie kann ich Elemente auswählen, um auf sie eine bestimmte Regel anzuwenden?

Bezeichnung Muster Beschreibung Universal-Selektor

* J edes Element passt

Typ-Selektor E Passt zu jedem Element E Abkömmlings-Selektor

E F Passt zu jedem Element F, welches Abkömmling von E ist

Kind-Selektor E > F Passt zu jedem F, welches direkter Nachfahre von E ist

E:first-child

Passt auf das erste Kindelement des genannten Elements

E: link Passt auf einen Link, welcher noch nicht besucht wurde.

E:visited Passt auf einen besuchten Link E:active Passt auf ein aktiviertes (angeklicktes)

Element E:hover Passt auf das Element, auf welchem der

Cursor gerade ruht E: focus Passt auf das Element, welches gerade den

Fokus besitzt

Pseudoklassen-Selektor

E: lang(c) Passt auf das Element E in der Sprache c.

Page 10: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

10

CSS (Cascading Stylesheets) Selektoren

Bezeichnung Muster Beschreibung Pseudoelement-Selektor

E:first-letter

Wählt den ersten Buchstaben eines Elementes E. (weitere ähnliche: before, after, first-line)

Geschwister-Selektor

E + F Passt auf das Element E, welches Element F unmittelbar, als nächstes Geschwisterelement hat.

E[att] Passt auf das Element E, welches das Attribut att besitzt.

Attribut-Selektor

E[att=“a“] Passt auf das Element E, welches das Attribut att mit dem Wert a besitzt. Statt dem =Operator gibt es noch den ~= Operator, welcher Elemente auswählt, die ein bestimmtes Wort als Teil eines angegebenen Attributwerts besitzen. Die Attribute sind dabei mit Leerzeichen getrennt. Der |=Operator prüft gegen das erste Wort einer durch Bindestrichen getrennten Liste mit Attributwerten.

ID-Selektor E#myid Passt auf das Element E, mit dem ID-Wert myid.

Page 11: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

11

CSS (Cascading Stylesheets) Formatierung

Was hab ich für Möglichkeiten bei der Formatierung?

• Schriftformatierung: Es ist möglich Schriftart, Schriftstil, Schriftvariante, Schriftgröße, Schriftgewicht, Wortabstände, Zeichenabstände, Textdekorationen, Textfarben oder Textschatten einzustellen.

• Ausrichtung und Absatzkonrolle: Textblöcke oder Textabsätze können ausgerichtet werden. Es sind Texteinrückungen, Ausrichtungen, Umbruchkontrolle und die Festlegung einer Zeilenhöhe möglich.

Page 12: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

12

CSS (Cascading Stylesheets) Formatierung

• Außenrand, Abstand und Rahmen

Die Baumstruktur in einem XML-Dokument kann in einem Box-Modell dargestellt werden.

Page 13: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

13

CSS (Cascading Stylesheets) Formatierung

• Positionierung und Anzeige von ElementenElement können auf den Pixel genau positioniert werden. Dabei kann man Regeln z.B. zum Umfließen oder Ausdehnen von Elementen angeben.

• Hintergrundbilder und HintergrundfarbenJede der Boxen kann man mit einem Hintergrund versehen.

• ListenformatierungBei Listen kann man die Listeneinrückung oder die Listendarstellung ändern (z.B. ein beliebiges Aufzählungssymbol einfügen)

Page 14: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

14

CSS (Cascading Stylesheets) Formatierung

• SprachausgabeEine Sprachausgabe ist von CSS 2 schon komplett vorgesehen. So kann man sich mit syntetischen Stimmen Texte vorlesen lassen. Leider unterstützen die heutigen Browser dieses Feature noch nicht.

• Filter und FensterBilder können durch Filter angesehen werden (z.B. eine Gammakorrektur). Außerdem kann auch das Browserfenster angepasst werden (z.B. Scrollbars färben).

• TabellenformatierungWie bei Boxen, können hier die Rahmen und Ausrichtung der Tabelle festgelegt werden. Überschriften können über Tabellen gesetzt werden und Breiten von Tabellenspalten verändert werden.

Page 15: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

15

CSS (Cascading Stylesheets) Formatierung

Wo kann ich die genauen Befehle nachlesen?

http://selfhtml.teamone.de/css/index.htm

Auf dieser Seite befinden sich fast alle Befehle mit einem entsprechenden Beispiel!

Page 16: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

16

CSS (Cascading Stylesheets) Beispiel (XML-Datei)

Xml-beispiel2.xml<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><?xml:stylesheet type="text/css" href="buchdarstellung.css" media="screen" alternate="no" title="Für Webbrowser" charset="ISO-8859-1"?> <buch><daten> <titel>JAVA</titel> <autor>Max Maier</autor> <verlag>Springer</verlag> <jahr>2000</jahr></daten><buchteil id="vorwort">Dies ist das Vorwort! </buchteil><buchteil id="kapitel1">Dies ist ein Kapitel1! <buchteil id="quelltext">

<funktionname>public function a (i: int) : test;</funktionname><funktionsrumpf> { return i;}</funktionsrumpf>

</buchteil> Kapitel1 geht noch weiter!</buchteil><buchteil id="kapitel2"> Dies ist ein zweites Kapitel!</buchteil></buch>

Page 17: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

17

CSS (Cascading Stylesheets) Beispiel (CSS-Datei)

buchdarstellung.css

* { font-size: 12 pt}

titel { display: block; font-size: 20 pt; }

buchteil {

display: block;

border-style: dashed;

border-width: thin;

border-color: black;

margin-left: 5 pt;

margin-right: 5 pt;

margin-top: 5 pt;

margin-bottom: 5pt;

padding: 5pt 5pt 5pt 5pt;

}

buchteil#quelltext{ display: block; font-style: italic;}

buchteil buchteil { font-family: Arial; }

funktionname {font-weight: bold;}

funktionsrumpf {display: block;}

Page 18: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

18

DSSSLAllgemein

DSSSL ist eine Sprache, ...

• ... die für die Darstellung von SGML entwickelt wurde.

• ... die von einer funktionalen Programmiersprache aus der Lisp Familie abstammt, mit der wesentlich komplexere Operationen möglich sind, als mit CSS.

• ... die auf Rekursion basiert.

• ... die zwei Prozesse beschreibt: Transformationsprozess und Formatierungsprozess

Page 19: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

19

DSSSLAllgemein

DSSSL besteht aus vier Teilsprachen:

Page 20: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

20

DSSSLGroves

Zur Verarbeitung eines XML-Dokuments müssen wir zunächst mit einem DSSSL-Prozessor eine interne Repräsentation (Grove) erstellen. Diese Repräsentation ist ein Baum:

Wurzelknoten

Kind1 Kind2 Kind3 ... Kindn

erster Tag

Blatt1 Blatt2

... ... ...

Inhalt

Page 21: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

21

DSSSLFlow Objects

Sogenannte Flow Objects legen die Darstellung des Groves fest.

Durch Konstruktionsregeln werden die Elemente des Groves in Flow Objects umgewandelt. Dabei entsteht ein Flow Object Tree.

Dabei werden die die Flow Objects druch Sosofos (Specification of a Sequence of Flow Objects) mit der Style-Language beschrieben.

Wie stelle ich die Groves denn dar?

Page 22: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

22

DSSSLKonstruktionsregel

(was (wie))

Elemente

• query• ID• element• default• root

Charakteristika

Sosofos

Page 23: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

23

DSSSLKonstruktionsregel – Sosofos

• make: Flussobjekt erzeugen

• empty-sosofo: Leeres Flussobjekt anlegen

• Literal zeichenkette: Wandelt eine Zeichenkette in ein Flussobjekt

• process-children: Fordert den DSSSL-Prozessor auf alle Kinder des Knotens im Grove zu durchlaufen.

• process-children-trim: Arbeitet wie process-children, doch es werden alle Leerzeichen, Tabulatoren oder Zeilenumbrüche am Anfang und am Ende der Elementdaten gelöscht.

Page 24: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

24

DSSSLKonstruktionsregel – Sosofos

• process-matching-children Muster: Arbeitet wie process-children, aber es werden nur die Kinder durchlaufen, auf die das Muster passt.

• process-element-with-id zeichenkette: Bearbeitet nur das eine Element, dessen eindeutiges ID-Attribut den Wert der Zeichenkette trägt.

• process-node-list nodes: Während process-children nur die untergeordneten Knoten des aktuellen Knotens verarbeiten lassen, läßt sich mit process-node-list eine beliebige Liste zuvor gesammelter Knoten bearbeiten.

Page 25: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

25

DSSSLKonstruktionsregel-Stile

Es gibt in DSSSL die Möglichkeit zur Definition von Stilen. Ein Stil trägt einen Stilnamen und fasst Eigenschaften in diesem Namen zusammen. Danach kann man mit dem Schlüsselwort use den Stil anwenden.

(define %absatz% (style

font-weight: mediumfont-size: baseFontSize

language: 'DE’ ))

(define baseFontSize 10pt)

Beispiel:

(element kunde (make paragraph use: %absatz% (process-children)))

Page 26: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

26

DSSSLBeispiel

Xml-Beispiel3.xml

<cookbook> <ctitle>The Cookbook</ctitle> <recipe> <title>Cake</title> <ingredient>500g Flour</ingredient> <ingredient>200g Sugar</ingredient> <ingredient>300g Butter</ingredient> </recipe></cookbook>

Das folgende Beispiel zeigt den Zusammenhang zwischen XML-Dokument, Grove, FlowObject-Tree und der Ausgabe, sowie die Anwendung der Konstruktionsregeln:

Page 27: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

27

DSSSLBeispiel

Page 28: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

28

DSSSLVerarbeitungsmodus

Um in einem Grove eines XML-Dokumentes einen Knoten mehrfach in verschiedenen Darstellungen auszugeben werden Modi benötigt.

Im folgenden Beispiel gehe ich auf das Buch/Inhaltsverzeichnis-Problem ein.

Page 29: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

29

DSSSLBeispiel-VerarbeitungsmodusXml-Beispiel-4.xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <!DOCTYPE DOC [<!ELEMENT kapitel (titel,text)><!ELEMENT titel (#PCDATA)><!ELEMENT buch (kapitel*)><!ELEMENT text (#PCDATA)><!ELEMENT DOC (buch*)> ]>

<DOC><buch> <kapitel> <titel>Einleitung</titel> <text>In diesem Referat geht es um Präsentation von XML im Browser. </text> </kapitel> <kapitel> <titel>CSS</titel> <text>Die Cascading Stylesheets sind ein Mittel zur Darstellung. </text> </kapitel></buch></DOC>

Zurück zu Konvertierung

Page 30: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

30

DSSSLBeispiel-Verarbeitungsmodus

(mode inhalt (default (empty-sosofo)) (element kapitel (process-matching-children “titel“)) (element titel (make paragraph font-size: 26pt line-spacing: 26pt (process-children))))

(element buch (make simple-page-sequence (with-mode inhalt (process-children)) (process-children)))

Page 31: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

31

DSSSLVon DSSSL zu HTML

Problem:Wie kann ich ein XML-Dokument, mit Hilfe der DSSSL-Datei, im Browser darstellen?

Lösung: Die XML-Datei muss mit einem DSSSL Prozessor in eine HTML-Datei umgewandelt werden!

Leider muss man diese Umwandlung selber beschreiben, was schnell unübersichtlich wird.

Page 32: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

32

DSSSLVon DSSSL zu HTML

Die Umwandlung von XML zu HTML geschieht mit Hilfe folgender Regeln:

(element xml.element (make element gi: “html.element“))

Die entstandenen HTML-Tags können auch mit Attributen versehen werden. Dabei Hilft eine zweielementige Liste:

attributes: ‘((“attributname“ “wert“))

Für das folgende Beispiel benutze ich einen DSSSL-Prozessor namens Jade.

Page 33: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

33

DSSSLBeispiel-Konvertierung

Buch.dsl<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN"[

<!ENTITY lt "&#38;#60;"> <!ENTITY gt "&#62;"> ]> (declare-flow-object-class element "UNREGISTERED::James Clark//Flow Object Class::element")(declare-flow-object-class document-type "UNREGISTERED::James Clark//Flow Object Class::document-type")(declare-flow-object-class empty-element "UNREGISTERED::James Clark//Flow Object Class::empty-element")(declare-flow-object-class formatting-instruction "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction")

geht noch weiter

NICHT ERSCHRECKEN, diese Standardzeilen muss man nicht verstehen, doch sie müssen immer angegeben werden, damit die Umwandlung funktioniert.

Page 34: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

34

DSSSLBeispiel-Konvertierung

(element doc (sosofo-append (make document-type name: "HTML" public-id: "-//W3C//DTD HTML 3.2//EN") (make element gi: "HTML" (sosofo-append (make element gi: "HEAD" (make element gi: "TITLE"

(sosofo-append (literal "XML zu HTML konvertieren mit DSSSL")))) (make element

gi: "BODY" (process-children))))))

geht noch weiter

Standard HTML-Gerüst:

Page 35: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

35

DSSSLBeispiel-Konvertierung

(mode inhalt (default (empty-sosofo)) (element kapitel (process-matching-children "titel")) (element titel (make element gi: "br" (sosofo-append

(make element gi: "font" attributes: '(("size" "2"))

(sosofo-append (literal "-")

(process-children))))))) (element buch (make simple-page-sequence (with-mode inhalt (process-children)) (process-children))) (element titel (make element gi: "H1"))

zum XML-Datei Beispiel: Verarbeitungsmodus

Page 36: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

36

DSSSLBeispiel-Konvertierung

Mit Hilfe des XML-Dokuments und der DSSSL-Datei ist es nun möglich mit Hilfe des Jade Prozessors ein HTML-Dokument zu erhalten. Die entsprechende Befehlszeile mit der wir Jade auf die Dateien aufrufen lautet:

Jade –d buch.dsl –t sgml Xml-beispiel4.xml>buch.html

Page 37: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

37

DSSSLBeispiel-Konvertierung

Ruft man die buch.html mit einem Browser auf, sieht man folgendes:

Page 38: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

38

XSLAllgemein

XSL besteht aus zwei wesentlichen Teilen:

• XSLT (XSL Transform): eine Sprache zum Umwandeln von XML-Dokumenten in eine neue Struktur. Für die identifizierung von Knoten wird die Xpath-Syntax verwendet.

• XSL-FO (XSL-Formatting Objects): ein solches Dokument beschreibt das Layout in einer Reihe von geschachtelten Kästen. Zum Anzeigen im Browser ist allerdings erst ein Abspeichern im .pdf-Format nötig. XSL-FO wird vorrangig für hochqualitativen Druck verwendet.

Page 39: 1 Präsentation von XML- Dokumenten durch Browser mit Stylesheets Thomas Schramm Mai 2003

39

XSLim Browser