20
FORMATTING OBJECTS (FO) Seminar „XML TECHNOLOGIEN“ Prof. Helmar Burkhart Sitzung vom 26. Juni 2002 Florian Müller

FORMATTING OBJECTS (FO)

Embed Size (px)

DESCRIPTION

FORMATTING OBJECTS (FO). Seminar „XML TECHNOLOGIEN“ Prof. Helmar Burkhart Sitzung vom 26. Juni 2002 Florian Müller. Inhalt: Hauptthemen. Was sind Formatting Objects? 2.Implementierung FOP (Formatting Objects Processor) durch xml.apache.org. Was sind FO?. - PowerPoint PPT Presentation

Citation preview

Page 1: FORMATTING OBJECTS (FO)

FORMATTING OBJECTS (FO)

Seminar „XML TECHNOLOGIEN“Prof. Helmar Burkhart

Sitzung vom 26. Juni 2002

Florian Müller

Page 2: FORMATTING OBJECTS (FO)

Inhalt: Hauptthemen

1. Was sind Formatting Objects?

2. Implementierung FOP (Formatting Objects Processor) durch xml.apache.org

Page 3: FORMATTING OBJECTS (FO)

Was sind FO?

Formatting Objects sind ein Bestandteil von XSL. Jeder Tag, der mit „<fo:“ beginnt, ist ein Formatting Object Tag.

Formatting Objects bezeichnen Formateigenschaften von Dokumentteilen (Seiten, Abschnitte, etc.) und Dokumentinhalten (Schrift, Grafiken, Schriftstrukturen wie Tabellen, Listen etc.).

Spezifische Format-Semantik

Page 4: FORMATTING OBJECTS (FO)

Tree Transformation & Formatting

2 Schritte von einer XML Datei zu gestaltetem Output:

1. Tree Transformation

Aufbau eines Result Tree aus XML und XSL Source. Result Tree enthält Formatanweisungen (FO, HTML, ...)

2. Formatting

Interpretation des transformierten Baumes und Senden von Anweisungen an ein Ausgabemedium (Browser, Printer, etc.)

Formatting Objects sind bestimmte Tags aus dem XSL Namespace, die das Format von Inhalten in einem transformierten Baum (Result Tree, 1) ausdrücken.

Page 5: FORMATTING OBJECTS (FO)

<XSL> (Style Information)

Aus XML/XSL wird „RESULT TREE“

(Formatangaben: FO, HTML, etc.)

<XML> (SOURCE TREE)

Parser 1: „Transformer“

Parser 2: „Formatter“

Output (Browser, Printer, PDF/PS File,

etc.)

Page 6: FORMATTING OBJECTS (FO)

Transformation nach HTML

XML: DATEN

<baum>

<art>Buche</art>

</baum>

XSL: DATENDARSTELLUNG

<h1>Baumarten</h1>

<font style=„color:blue“>

<xsl:value-of-select=„baum/art“/>

</font>

Resultat in HTML:

<h1>Baumarten</h1>

<font style=„color:blue“>

Buche

</font>

Resultat im Browser:

BaumartenBuche

Page 7: FORMATTING OBJECTS (FO)

Transformation nach FO

XML: DATEN

<baum>

<art>Buche</art>

</baum>

XSL: DATENDARSTELLUNG (dieses Mal in FO)

<fo:block font-size=„18pt“>Baumarten

</fo:block>

<fo:block font-color=„blue“>

<xsl:value-of-select=„baum/art“/>

</fo:block>

Resultat in FO:

<fo:block font-size=„18pt“> Baumarten</fo:block>

<fo:block font-color=„blue“> Buche</fo:block>

Resultat nach Formatting:

BaumartenBuche

Page 8: FORMATTING OBJECTS (FO)

Struktur innerhalb von <fo:root>

<fo:root> = Wurzelelement jeder FO-Datei

<fo:root>

</fo:root>

Beschreibung von VorlagenInnerhalb <layout-master-set>

(Vorlagen)

Beschreibung der konkreten Dokument-Inhalte

(Daten)

Page 9: FORMATTING OBJECTS (FO)

FO: Links, Rechts?

top margin

bottom marginle

ft m

arg

in

righ

t ma

rgin

body

before

after

star

t

end

• Dokument aufgeteilt in 5 Regionen: – Body (~Hauptinhalt)– Start, End (~Seitenkolonnen, z.B.

für Randbemerkungen)– Before, After (~Kopf- und

Fusszeile)

• Richtungsangaben = Schriftrichtung-Sensitiv– LR: Start = links, End = rechts– RL: Start= rechts, End = links– Idem ObenUnten [Before,After]

top margin

bottom marginle

ft m

arg

in

righ

t ma

rgin

body

end

start

befo

re

afte

r

Page 10: FORMATTING OBJECTS (FO)

<fo:root>Wurzelelement jeder FO-Datei

<fo:layout-master-set>Beinhaltet sämtliche „Masters“ (~Vorlagen) einer FO-Datei

<fo:simple-page-master>Beschreibt gewisse globale Eigenschaften einer Seite oder einer ihrer 5 Teile, Kindobjekt von <fo:layout-master-set>

<fo:page-sequence>Beschreibt eine konkrete Seite, deren Format durch den referenzierten page-master z.T. vorgegeben wird.

„Hohe“ FO

Page 11: FORMATTING OBJECTS (FO)

<fo:flow>Ein Flow-Objekt ist direkt einer der 5 Dokumentregionen (body,before,after,start,end) zugeordnet. Es beinhaltet die „Flow“ Objekte eines Dokumentes – Text, Bilder, etc.

<fo:block>Beinhaltet andere Blocks oder Lines oder direkt Inhalt.block-progression-direction

top bottom || bottom top

<fo:inline>Beinhaltet direkt Inhalt, ~ eine Zeile innerhalb eines Blocksinline-progression-direction

left right || right left

„Niedrige“ FO

Page 12: FORMATTING OBJECTS (FO)

56 Formatting Objects

für Master-Vorlagen, konkrete Seiten, Blöcke, Buchstaben, Tabellen, Listen, Fuss- und Kopfnoten, eingebundene Grafiken, Links etc.

246 Properties

um die Formatting Objects zu spezialisieren: Schrift- und Hintergrundfarben, Schriftfamilie, Schriftgrösse, Ausrichtung, Abstände, Rahmen etc.

FO insgesamt

Page 13: FORMATTING OBJECTS (FO)

<fo:root> <fo:layout-master-set> <fo:simple-page-master master-name=„master1“ margin-top=„1cm“> <fo:region-body display-align=„before“/> </fo:simple-page-master> <fo:simple-page-master master-name=„master2“ margin-top=„10cm“> <fo:region-body display-align=„before“/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference=„master1“> <fo:flow flow-name=„xsl-region-body“> <fo:block>Finally Information</fo:block> </fo:flow> </fo:page-sequence> <fo:page-sequence master-reference=„master2“> <fo:flow flow-name=„xsl-region-body“> <fo:block>Finally Information</fo:block> </fo:flow> </fo:page-sequence></fo:root>

Beispiel – ex1.fo

Page 14: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(1) Mission von XML.APACHE.ORG

http://xml.apache.org = XML-Projekt der Apache Gruppe.

Unter anderem nennt das Projekt als eines seiner Ziele:

« robust, full-featured, commercial-quality, and freely available XML support on a wide variety of platforms »

Page 15: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(2) Was FOP ist und leistet

FOP (Formatting Objects Processor) = FormatterXML Source + XSL Result Tree durch TransformerResult Tree Output durch Formatter [FOP]

FOP generiert aus FO- und XML+XSL-Dateien:pdf, ps,... Binäre Formatetxt, xml, svg,... ASCII Formate

                                                                 

Page 16: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(3) Details

FOP implementiert 39 der 56 Formatting Objects sowie 110 von 246 Formatting Properties.

FOP transformiert FO resp. XML+XSL Dateien nach

• PDF (Portable Document Format)• PCL (Hewlett-Packard PCL Printers)• PostScript• Txt (Text only)• SVG (Scalable Vector Graphics)• AT (Area Tree in XML)• Print (Direkte Ausgabe an einen Drucker)• MIF (Maker Interchange Format, für Adobe Framemaker)• AWT (Abstract Windowing Toolkit, viewer only)

Page 17: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(4) Beispiele

Beispiel:

FOP mit XML+XSL Input (kein FO Input):

XML Datei mit mehreren Visitenkarten-Einträgen [xml/karte/ex/vorname,nachname,addresse,ort,telefon,email]

XSL Dateien, die diese XML Datei jeweils anders auslesen und die Inhalte mit FO beschreiben

Page 18: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(5) Nachteile FOP

Nachteile

• Bei weitem nicht die volle Mächtigkeit von XSL-FO wurde implementiert (subset)

• Zumindest vorläufig geringe Verfügbarkeit von FO-Dokumenten (müssen selbst erstellt werden, kein Export von z.B. MS Word, Excel, HTML, etc.)

• Kein „Reverse Transforming“ (pdf,svg,... fo)

Page 19: FORMATTING OBJECTS (FO)

Anwendungsbeispiel FOP(6) Vorteile FOP

• Vision: 1 Grundformat, Transformation in andere Formate „on demand“ und immer mit einem speziellen Zweck (z.B. Unveränderbarkeit, Komprimierung, Interaktivität etc.)

– Konsequenzen Beispiel Website:• Nur 1 Informationsdatei je Dokument, die aktualisiert

wird (XML)• Nur 1 Styledatei pro Darstellungsform eines Dokuments

(XSL)• Durch Generierung on demand: immer neuste Version des

Formats (keine „alt-Format-Archive“), geringe Speicherplatzbelegung

• Dafür: hohe Prozessorbeanspruchung• Einfache Einführung neuer Formate („plug-in“ im FOP)

• Kostenloser Zugang zu PDF

Page 20: FORMATTING OBJECTS (FO)

R E S S O U R C E N

http://www.w3.org/TR/xsl„XSL-aka-FO“ Specification (Chapter 6: Formatting Objects)

http://xml.apache.org/FOPApache XML Projekt,

http://www.renderx.comXEP: kostenpflichtiger FO PDF Formatter, Alternative zu FOP