Apache`s FOP >> - megloff.ch

Werbung
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
<< Apache‘s FOP >>
1
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
Was ist FOP ?
FOP = Formatting Object Processor
Ein FOP Prozessor setzt die XML FO Dateien
gemäss den Anweisungen in das jeweilige
binäre Format um
Apache besitzt eine Opensource
Implementation eines solchen FO Prozessors
http://xml.apache.org/fop
Er lässt sich via Command Line sowie direkt im
Java Code verwenden.
2
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
Installation von Apache‘s FOP
Apache‘s FOP benötigt zusätzlich andere Java
Libraries. Die notwendigsten sind jedoch in der
Distribution enthalten
3
Diese externen Libraries müssen im CLASSPATH
vorhanden sein.
Î Falls Java 1.3 muss Xalan eingebunden werden
Î Bei Java 1.4 endorsed Mechanism beachten
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP ausführen per Commandline
Apache‘s FOP bietet zur Ausführung eine
„main“ Applikation an:
org.apache.fop.apps.Fop
z.B.:
wichtigste Parameter
Beschreibung
-XML file.xml
-XSL file.xsl
input XML u. XSL falls zuerst eine XSLT durchgeführt werden
soll um ein XML FO zu erstellen
-fo
input XML FO, falls keine XSLT durchgeführt soll
file.fo
-pdf -pcl
-ps -svg
4
C:\> java -Djava.endorsed.dirs=lib\endorsed
–cp lib\fop.jar;lib\batik.jar;...
org.apache.fop.apps.Fop
-fo hello.fo -pdf hello.pdf
-c config.xml
-awt
-at
output filename für das jeweilige Format. Nur eine Ausgabe
gleichzeitig möglich.
optionales Config File um z.B. Fonts einzubetten
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP ausführen per Commandline
z.B.: PDF anhand einer XML-FO Datei erzeugen
<xml>
<xml>
FO
FO
FOP
PDF
PDF
C:\> java –cp lib\fop.jar;lib\batik.jar;...
org.apache.fop.apps.Fop
-fo hello.fo -pdf hello.pdf
5
Parameter
Beschreibung
-fo file.fo
input XML FO, fertiges XML mit FO Elementen
-pdf file.pdf
Ausgabe File als PDF
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP ausführen per Commandline
z.B.: zuerst XSL Transformation, dann PDF Generierung
<xml>
<xml>
hello
hello
XSLT
Processor
FOP
PDF
PDF
<xsl>
<xsl>
FO
FO
C:\> java –cp lib\fop.jar;lib\batik.jar;...
org.apache.fop.apps.Fop
-xml hello.xml –xsl hello.fo.xsl -pdf hello.pdf
6
Parameter
Beschreibung
-XML file.xml
-XSL file.xsl
input XML u. XSL falls zuerst eine XSLT durchgeführt
werden soll um ein XML FO zu erstellen
-pdf file.pdf
Ausgabe File als PDF
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP in Java Programm einbetten (1/2)
FOP bietet ein einfaches Java API um direkt
PDF aus dem Programm zu erzeugen
import org.apache.fop.apps.*;
import java.io.*;
<xml>
<xml>
FO
FO
FOP
PDF
PDF
public class ExampleFOPRun
{
public static void main(String[] args)
{
try {
// create new FOP
Driver driver = new Driver();
//Setup logging here if needed: driver.setLogger(...
//read fop config file if needed Æ static pattern inside
new Options(new File("myFOPconfig.xml"));
7
...
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP in Java Programm einbetten (2/2)
//set Outputformat
driver.setRenderer(Driver.RENDER_PDF);
// set Input for reading XML FO data
driver.setInputSource("hello.fo");
// set Output File
driver.setOutputStream("hello.pdf");
// Execute FOP
driver.run();
}
catch( Exception ex)
{ ... }
}
}
8
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP in Java Programm einbetten mit XSLT (1/2)
import
import
import
import
import
java.io.*;
javax.xml.transform.*;
<xml>
<xml>
javax.xml.transform.stream.*;
javax.xml.transform.sax.*;
org.apache.fop.apps.*;
public class ExampleXML2PDFRun
{
public static void main(String[] args)
{
try {
// create new FOP
Driver driver = new Driver();
FOP
PDF
PDF
<xsl>
<xsl>
FO
FO
//Setup logging here if needed: driver.setLogger(...
//read fop config file if needed Æ static pattern inside
new Options(new File("myFOPconfig.xml"));
...
9
XML mit
Java OpenSource
(c) Mark Egloff 2004
FOP
FOP in Java Programm einbetten mit XSLT (2/2)
//Set Outputformat and Output File
driver.setRenderer(Driver.RENDER_PDF);
driver.setOutputStream(new FileOutputStream("hello.pdf"));
//Setup XSLT
TransformerFactory factory =
TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource(new File("hello.xsl")));
//Setup input for XSLT transformation
Source src = new StreamSource(new File("hello.xml"));
//Resulting SAX events must be piped through to FOP
Result res = new SAXResult(driver.getContentHandler());
//Start XSLT transformation and FOP processing
transformer.transform(src, res);
}
catch( Exception ex){ ... }
10
}}
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL- FO Links
11
z
W3C XSL-FO:
http://www.w3.org/TR/xsl/slice6.html#fo-section
z
W3C CSS 2
http://www.w3.org/TR/REC-CSS2
z
XSL FO Reference
http://www.zvon.org/xxl/xslfoReference/Output/
z
Apache FOP:
http://xml.apache.org/fop/index.html
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
<< Einführung in XSL-FO >>
1
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Übersicht / Lernziele:
2
z
Was ist XSL-FO ?
z
Was ist ein Format Prozessor ?
z
Anwendungen mit XSL-FO realisieren
z
Syntax und Funktionsweise von XSL-FO
z
XSL-FO Transformation mit FOP und Xalan
z
Apache FOP API kennen
z
Aus XSL-FO PDF erstellen
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Was ist XSL-FO ?
FO = Formatting Objects
Mittels XSL-FO ist eine Sprache um XML Daten
für Präsentationsmedien zu formatieren.
XSL-FO ist ein Standard, es wurde in die XSL
W3C Spezifikation aufgenommen. Die
Formatierungen sind nach dem CSS 2 W3C
Standard spezifiziert
3
XSL-FO wird verwendet um die Präsentation
von Daten mittels XML zu beschreiben. Diese
können später mittels einem Prozessor in binäre
Präsentations Formate wie PDF, Postscript etc.
überführt werden.
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Prinzip von XSL-FO
App
<xml>
<xml>
<xsl>
<xsl>
FO
FO
XSLT
Processor
<xml>
<xml>
FO
FO
FOP
Serializer
SVG
SVG RTF
RTF
TXT
XML
TXT
XML
PDF
PDF
PCL
PCL MTF
MTF
Post
Post
Script
Script
Ein XSLT Prozessor transformiert eingehende XML
Daten in das XML – FO Textformat.
Ein Formatting Prozessor (FOP) erstellt daraus
eine binäre Datei z.B. PDF, RTF, SVG, PS etc.
4
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Was ist XSL-FO ?
Mittels XSL-FO können wir bekannte
Formatierungen anwenden
• Listen
• Tabellen
• Hyperlinks
• Kopf- u- Fusszeilen
• Fussnoten
• Seitenformate
• Seitennummerierungen
• unterschiedliche Schreibrichtungen
•…
5
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Beispiel XML-FO und FOP:
6
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="only"
page-width="5.5cm" margin-left="1cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="only">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="18pt">
A small
<fo:external-graphic src="file:fo.jpg"/>
example
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO
Beispiel XML-FO und FOP:
<xml>
<xml>
FO
FO
7
FOP
Serializer
PDF
PDF
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
Übersicht XSL-FO Syntax
Der XSL-FO Synatx ist eine sehr umfangreich.
Besitzt viele Formatierungs-Möglichkeiten
Der Syntax besteht aus 56 vordefinierten XML
Elementen
Die Detailformatierungen werden mit Attributen
vorgenommen. Es gibt hierbei 246 vordefinierte
Eigenschaften, wobei jedes XML FO Element
seine spezifischen Attribute besitzen kann
z.B.:
8
<fo:block font-size="24pt"
text-align="center">
Ein erster Text
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
XSL-FO Elemente
fo:basic-link, fo:bidi-override, fo:block, fo:block-container,
fo:character, fo:color-profile, fo:conditional-page-master-reference,
fo:declarations, fo:external-graphic, fo:float, fo:flow, fo:footnote,
fo:footnote-body, fo:initial-property-set, fo:inline, fo:inline-container,
fo:instream-foreign-object, fo:layout-master-set, fo:leader, fo:listblock, fo:list-item, fo:list-item-body, fo:list-item-label, fo:marker,
fo:multi-case, fo:multi-properties, fo:multi-property-set, fo:multiswitch, fo:multi-toggle, fo:page-number, fo:page-number-citation,
fo:page-sequence, fo:page-sequence-master, fo:region-after,
fo:region-before, fo:region-body, fo:region-end, fo:region-start,
fo:repeatable-page-master-alternatives, fo:repeatable-page-masterreference, fo:retrieve-marker, fo:root, fo:simple-page-master,
fo:single-page-master-reference, fo:static-content, fo:table, …
9
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Aufbau
Übersicht, Aufbau einer XSL-FO Datei:
XSL-FO Root
Layouts
<fo:root>
<fo:layout-master-set>
Layout A
<fo:simple-page-master/>
Layout B
<fo:simple-page-master/>
</fo:layout-master-set>
PageSequence A
Content
<fo:page-sequence>
<fo:flow/>
</fo:page-sequence
Page Sequence B
<fo:page-sequence/>
</fo:root>
10
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Aufbau
Übersicht, Aufbau einer XSL-FO Datei:
fo:root
fo:layout-master-set
fo:simple-page-master
fo:declarations
fo:color-profile
fo:page-sequence
fo:title
fo:flow
fo:static-content
fo:region-body
fo:region-before
fo:page-sequence-master
fo:region-start
fo:region-end
fo:region-after
11
fo:single-pagemaster-reference
fo:repeatablepage-masterreference
fo:repeatablepage-masteralternatives
fo:conditional-pagemaster-reference
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:root> : XSL-FO Root Element
Jedes XSL-FO Dokument beginnt mit dem
„<fo:root>“ Element
Der Namespace „fo“ ist fest vorgegeben.
<?xmlversion="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
...
</fo:root>
12
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:layout-master-set> : Einleitung Layout Definitionen
Mittels „<fo:layout-master-set“> leiten wir die
Layout Definitionen für Seiten ein.
Dieses Element beinhalte alle einzelnen Layout
Definitionen die mittels separaten Elementen
beschrieben werden.
<?xmlversion="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
...
</fo:layout-master-set>
</fo:root>
13
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:simple-page-master> : Seitenaufteilung und Layout
Mittels dem Element „<fo:simple-page-master>“
legen wir die Seitengrösse , Seitenränder sowie
spätere Unterregionen fest.
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="first"
page-height="297mm" page-width="210mm"
margin-top="15mm" margin-bottom="15mm"
margin-left="20mm" margin-right="15mm"/>
</fo:layout-master-set>
</fo:root>
14
Jedes „<fo:simple-page-master>“ Element besitzt
einen eindeutigen Namen um es später einer
„Page-Sequence“ zuzuordnen
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:region-xxxx> : Seitenaufteilung
Eine Seite ist aufgeteilt in fünf Regionen:
region-before, region-after, region-start, region-end
region-body
15
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:region-xxxx> : Beispiel Bereiche definieren
Region-Before
Region-Body
Region-After
16
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:region-xxxx> : Beispiel Bereiche definieren
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="first"
page-height="100mm" page-width="90mm"
margin-top="15mm" margin-bottom="15mm"
margin-left="10mm" margin-right="10mm">
<fo:region-before extent="10mm"/>
<fo:region-body margin-top="20mm"
margin-bottom="15mm" />
<fo:region-after extent="10mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
...
</fo:root>
17
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:page-sequence>: Seiten-Instanzen
Mittels dem Element „<fo:page-sequence>“
beginnen wir den Dokumentinhalt und verweisen
auf ein zuvor definiertes Layout.
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="first".../>
</fo:layout-master-set>
<fo:page-sequence master-reference="first">
...
</fo:page-sequence>
</fo:root>
18
„<fo:page-sequence>“ muss immer nach
„<fo:layout-master-set>“ aufgelistet werden
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:page-sequence>: Seiten-Instanzen
Es besteht die Möglichkeit mehrere Seitenlayout
zu definieren und für unterschiedliche Seiten zu
verwenden
19
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="front".../>
<fo:simple-page-master master-name="rest".../>
</fo:layout-master-set>
<fo:page-sequence master-reference="front">
...
</fo:page-sequence>
<fo:page-sequence master-reference="rest">
...
</fo:page-sequence>
</fo:root>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:static-content>, <fo:flow>: Regionen festlegen
Mittels den Elementen „<fo:static-content>“ und
„<fo:flow>“ werden Inhaltsbereiche festgelegt
um Content aufzunehmen
Diese Inhaltsbereiche verweisen auf ein zuvor
definierte Regionen im Layout-Set
„<fo:static-content>“ muss für die zuvor
definierten Regionen „before“ „after“ „start“
oder „end“ verwendet werden. Der Name ist
dabei auf „xsl-region-xxxx“ vorgegeben
20
„<fo:flow>“ kann nur auf die Region „body“
verweisen. Der Name ist dabei auf „xsl-regionbody“ vorgegeben
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:region-xxxx> :Beispiel Bereiche anwenden
21
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
...
<fo:page-sequence master-reference="first">
<fo:static-content flow-name="xsl-region-before">
<fo:block>region-before</fo:block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after">
<fo:block>region-after</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block> region-body </fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:static-content>, <fo:flow>: Regionen festlegen
Unterschied static ÅÆ dynamic
„<fo:static-content>“ ist nur für statischen Inhalt
gedacht. Das heisst er ist für alle Seiten der
Page-sequence immer gleich. Verwendung wäre
für Header und Footer.
„<fo:flow>“ ist nur für dynamische Inhalte
gedacht. Passt der Inhalt nicht auf eine Seite so
wird es auf der nächsten Seite fortgesetzt. Hier
wird also der eigentliche Content eingebettet.
22
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:block>: Textbereich festlegen
Mittels dem Element „<fo:block>“ legen wir
einen Textbereich fest.
Text kann nur mit diesem Element platziert
werden.
z.B.: <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
...
<fo:page-sequence master-reference="first">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello World!</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
23
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:block>: Textbereich festlegen
Innerhalb „<fo:block>“ passieren die
Zeilenumbrüche automatisch Î Fliesstext
Um einen Zeilenumbruch zu erzwingen muss ein
neues Element „<fo:block>“ verwendet werden
z.B.:
<fo:block>
Ende einer Zeile...
</fo:block>
<fo:block>
neue Zeile...
</fo:block>
24
<fo:block>
Ende einer Zeile...
<fo:block>
neue Zeile...
</fo:block>
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:block> : Textformatierungen festlegen
Textformatierungen werden mittels Attributen festgelegt:
• font-family
• font-style
• font-weight
• text-decoration
• font-size
• line-height
• color
• background-color
• text-align
z.B.:
serif, sans-serif, cursive, fantasy, monospace
normal, italic, oblique, backslant, inherit
normal, bold, bolder, lighter, inherit
underline, overline, line-through
<length, absolute-size, relative-size, percentage>
<length, absolute-size, relative-size, percentage>
red, blue, green, …, rgb(255,0,55), transparent
red, blue, green, …, rgb(255,0,55), transparent
start, center, end, justify
<fo:block
font-family="sans-serif"
font-size="10pt"
>
Hello World!
25
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:block> : Ränder und Abstände festlegen
Ränder:
• border-color
• border-style
• border-width
red, blue, green, …, rgb(255,0,55), transparent
none, hidden, dotted, dashed, solid, double, …
<length>, thin, medium, thick
Abstände:
• margin-top / margin-left / margin-right / margin-bottom
<length>, <percentage>, auto
z.B.: <fo:block
26
<fo:block
border-width="2pt"
border-style="solid"
border-color="black">...</fo:block>
border="2pt solid black">...</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:inline>: Textabschnitt festlegen
Das Element „<fo:inline>“ wird innerhalb eines
„<fo:block>“ benutzt um einen Textabschnitt zu
definieren
„<fo:inline>“ wird oft verwendet um eine
Formatierung vorzunehmen ohne einen
Zeilenumbruch zu verursachen
z.B.:
27
<fo:block font-family="TimesRoman">
Hier ist
<fo:inline font-style="italic"> ein </fo:inline>
Abschnitt
<fo:inline font-weight="bold"> mit </fo:inline>
verschiedenen
<fo:inline color="blue"> Formaten.</fo:inline>
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:block-container>: Textbox festlegen
Ein „<fo:block-container>“ Element kann an
beliebiger Stelle auf des Seite (absolut)
positioniert werden:
z.B.:
<fo:block-container border-color="black"
border-style="solid" border-width="3pt"
height="1cm" width="4cm" padding="5pt"
top="9.5cm" left="12cm" position="absolute" >
<fo:block font-family="sans-serif"
font-size="10pt">
Hier ist ein Text
</fo:block>
</fo:block-container>
Hier ist ein Text
28
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:external-graphic>: Bild einbinden
Mittels „<fo:external-graphic>“ wird ein Bild
eingefügt
Mögliche Bildformate sind GIF und JPG, es ist aber
am Hersteller des FO Prozessors überlassen
Î Apache FOP: BMP,EPS,GIF,JPG,PNG,SVG,TIFF
„<fo:external-graphic>“ muss in ein „<fo:block>“
oder „<fo:inline>“ eingebettet werden.
z.B.:
29
<fo:block>
Look at this!
<fo:external-graphic
src="cup.jpg"/>
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:leader>: Horizontale Linien
Mittels „<fo:leader>“ können horizontale Linien
erreicht werden
Mittels den Attributen wird die Formatierung der
Linie bestimmt:
• leader-pattern
• leader-length
• rule-style
• rule-thickness
z.B.:
30
space, use-content, rule, dots
<length>
none, dotted, dashed, solid, double, …
<length>
<fo:block>
<fo:leader leader-pattern="dots" leaderlength="6cm"/>
</fo:block>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:list-block>: Auzählungslisten
Mittels „<fo:list-block>“ können Aufzählungslisten
realisiert werden.
Um Listen zu beschreiben benötigt es noch weitere
Sub-Elemente
„<fo:list-item>“, „<fo:list-item-label>“,
„<fo:list-item-body>“
fo:list-block
fo:list-item
fo:list-item-label
fo:list-item-body
31
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:list-block>: Aufzählungslisten realisieren
z.B. <fo:list-block
provisional-distance-between-starts="0.5cm">
<fo:list-item>
<fo:list-item-label>
<fo:block>a)</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
Dies ist das erste Listenelement.
</fo:block>
</fo:list-item-body>
</fo:list-item>
...
</fo:list-block>
32
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:footnote>: Fussnote
Mittels „<fo:footnote>“ kann eine Fussnote
angegeben werden
Eine Fussnote besteht aus dem Signet und dem
Body. Der Body wird mittels einem Sub-Element
„<fo:footnote-body>“ beschrieben.
fo:footnote
fo:footnote-body
33
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:footnote>: Fussnote anwenden
z.B.:
<fo:block> Die Fussnote
<fo:footnote>
<fo:inline font-size="6pt"
vertical-align="super">1</fo:inline>
<fo:footnote-body>
<fo:block font-size="10pt">
<fo:leader leader-pattern="rule"
leader-length="6cm"/>
1. Hier ist die Fussnote
</fo:block>
</fo:footnote-body>
</fo:footnote>
befindet sich typischerweise...
</fo:block>
34
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:table>: Tabellen definieren
Mit dem Element „<fo:table>“ leiten wir eine
Tabelle ein.
Wie bei HTML besteht auch bei XSL-FO eine
Tabelle aus weiteren Subelementen:
„<fo:table-body>“, „<fo:table-column>“,
„<fo:table-row>“, „<fo:table-cell>“,
„<fo:table-header>“, „<fo:table-footer>“
35
fo:table
fo:table-column
fo:table-header
fo:table-body
fo:table-footer
fo:table-row
fo:table-row
fo:table-row
fo:table-cell
fo:table-cell
fo:table-cell
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:table>: Tabellen definieren
z.B.: <fo:table border="1pt solid
36
black"
background-color="#EEEEEE">
<fo:table-column column-width="20mm"/>
<fo:table-column column-width="30mm"/>
<fo:table-header font-weight="bold"
background-color="#CCCCCC">
<fo:table-row>
<fo:table-cell border="1pt solid black">
<fo:block>HTML</fo:block>
</fo:table-cell>
...
</fo:table-row>
</fo:table-header>
<fo:table-body>
...
</fo:table-body>
</fo:table>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL-FO - Syntax
<fo:table>: Zellen verbinden
Tabellenzellen „<fo:table-cell>“ können mit
den Attributen „number-columns-spanned“
und „number-rows-spanned“ gruppiert
werden
37
<fo:table border="1pt solid black">
<fo:table-column column-width="10mm"/>
<fo:table-column column-width="10mm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell number-columns-spanned="2"
border="1pt solid black">
<fo:block>FO</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
XML mit
Java OpenSource
(c) Mark Egloff 2004
XSL- FO Links
38
z
W3C XSL-FO:
http://www.w3.org/TR/xsl/slice6.html#fo-section
z
W3C CSS 2
http://www.w3.org/TR/REC-CSS2
z
XSL FO Reference
http://www.zvon.org/xxl/xslfoReference/Output/
z
Apache FOP:
http://xml.apache.org/fop/index.html
Herunterladen