FORMATTING OBJECTS (FO)

Preview:

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

FORMATTING OBJECTS (FO)

Seminar „XML TECHNOLOGIEN“Prof. Helmar Burkhart

Sitzung vom 26. Juni 2002

Florian Müller

Inhalt: Hauptthemen

1. Was sind Formatting Objects?

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

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

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.

<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.)

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

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

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)

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

<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

<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

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

<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

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 »

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

                                                                 

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)

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

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)

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

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