XML. extensible Markup Language. Dr. Beatrice Amrhein. www.w3.org/xml



Ähnliche Dokumente
XSL-FO. XSL-Formatting Objects.

XML mit Java OpenSource. (c) Mark Egloff 2004 FOP. << Apache s FOP >>

XSL-Formatting Objects.

CSS. Cascading Stylesheets

XSL Templates. Mit Templates arbeiten. XSL Templates

Online-Publishing mit HTML und CSS für Einsteigerinnen

HTML5. Wie funktioniert HTML5? Tags: Attribute:

... MathML XHTML RDF

Textverarbeitungsprogramm WORD

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

XSL-FO XSL Formatting Objects

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

Dokumentation von Ük Modul 302

Übungsaufgaben zu XML:

Hinweise für die Nutzung von XSLTs beim PDF Export der BlueBridge Wiki Extensions

Format- oder Stilvorlagen

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Generierung von PDF-Dokumenten mittels XSL-FO

WEBSEITEN ENTWICKELN MIT ASP.NET

ANLEITUNG ZUR TEXTGESTALTUNG IN WORD 2003

1 Einleitung. Lernziele. das Drucklayout einer Tabelle mit der Seitenansicht kontrollieren

Seite 1. Datum einfügen

Text Formatierung in Excel

Verteilte Systeme: Übung 4

Einführung in XSL-FO

Eigene Formatvorlagen

Informationen zu den regionalen Startseiten

Formatieren in Word 2007

Word 2010 Grafiken exakt positionieren

TIMERATE AG Tel Falkenstrasse Zürich Joomla Templates Kursunterlagen

11 Tabellen als Inhaltselement (ohne RichTextEditor)

Outlook Erstellen einer aus einer HTML - Vorlage INHALT

Formale Vorgaben für die Seminararbeit

Bedienungsanleitung. Content-Management-System GORILLA

31. März 2015 L A TEX Struktur und Formatieren

LAYOUT und GLIEDERUNG. Was Sie bei der Erstellung Ihrer Seminararbeit unbedingt beachten müssen!

Schiller-Gymnasium Hof

STANDORT SOEST FACHBEREICH AGRARWIRTSCHAFT. Arbeiten mit Word Erstellung einer Formatvorlage

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

Professionelle Seminare im Bereich MS-Office

HTML Programmierung. Aufgaben

Primarschule Birmensdorf PIA Anleitungen Word. Bevor du mit Schreiben beginnen kannst, musst du dein Word- Dokument einrichten.

Webseite einfügen und bearbeiten

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

PowerPoint: Text. Text

XML-Praxis XSL-FO. Jörn Clausen

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Hinweise zum Übungsblatt Formatierung von Text:

Für die Verwendung des Wikis wird dringend der Microsoft Internet Explorer Version 7.0 empfohlen!

Meine erste Homepage - Beispiele

Hilfe zur Urlaubsplanung und Zeiterfassung

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße Reutlingen

16. Schriftart formatieren

XML-Praxis XSL-FO. Jörn Clausen

Corporate-Design-Handbuch

Softwaretechnik Teil Webprogrammierung (HTML, PHP) SS2011

bea CORPORATE DESIGN MANUAL Stand: Mai 2015

Benutzerhandbuch TABLE OF CONTENTS 1. Benutzerhandbuch Bedienung

Hilfestellungen zur Formatierung der Diplomarbeit/Masterarbeit

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Professionelle Bewerbung mit dem PC

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

CASCADING STYLE SHEETS WEBSEITEN-GESTALTUNG MIT CSS

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Leichte-Sprache-Bilder

Workflow, Business Process Management, 4.Teil

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder

Kurzeinführung Excel2App. Version 1.0.0

Word 2010 Schnellbausteine

Fusszeile mit Datumsfeld und Dateiname

Rechnung Angebot Zeiterfassung

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Das TYPOlight CSS-Framework

CSS. Cascading Style Sheets

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

teischl.com Software Design & Services e.u. office@teischl.com

Standard-Kontaktformular

Versand Etiketten / Endlosdruck

Zahlen auf einen Blick

Klaus Schild, XML Clearinghouse Namensräume

Layoutmodelle. Steffen Schwientek Große Klostergasse Friedberg schwientek@web.de Web :schlaukopp.org

4 Aufzählungen und Listen erstellen

ERSTELLEN EINES BRIEFBOGENS MIT WORD 1 SCHRITT 1: EINRICHTEN VON KOPF- UND FUßZEILEN 1. Die Ansicht Kopf- und Fußzeilen 1

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Excel Pivot-Tabellen 2010 effektiv

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Die Formatierungsregeln (die so genannte Wiki-Syntax) für Texte in DokuWiki sind zu großen Teilen die selben, wie in anderen Wiki-Systemen.

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Manual, Version 4.2c: Publikation von Medienmitteilungen auf bs.ch.

HEINZ MARTIN PRINTSCREEN BETRIEBSANLEITUNG. Rev 2.11

Viele Bilder auf der FA-Homepage

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

WordPress. Dokumentation

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Inhalt 1 Vorbereitungen... 3

Transkript:

XML extensible Markup Language www.w3.org/xml Dr. Beatrice Amrhein

2

Inhaltsverzeichnis 1 XML Grundlagen...5 1.1 Die wichtigsten Punkte...5 1.2 XML Sprachen und Anwendungen...7 1.3 Der Aufbau eines XML Dokuments...7 1.4 Elemente...8 1.5 Attribute...10 1.6 Zeichen- und Entity-Referenzen...11 1.7 Kommentare und Verarbeitungsanweisungen...11 1.8 Die XML Deklaration...11 1.9 XML Knotentypen und Nachfolger...12 1.10 Wohlgeformtheit: Zusammenfassung...12 2 Namespaces...13 2.1 Wozu dienen Namespaces?...13 2.2 Definition eines Namespaces...14 2.3 Qualifizierte Element-Namen...15 3 XSD: XML Schema Definition...18 3.1 Deklarationen <--> Definitionen...20 3.2 Deklaration von einfachen Typen...22 3.3 Vordefinierte primitive Schema Typen...23 3.4 Attribut Deklarationen...25 3.5 Komplexe Schema Typen...26 3.6 Spezielle Schema Elemente...29 3.7 Schlüssel...32 4 SAX: Simple Application Interface for XML...38 4.1 Was ist SAX?...38 4.2 Wofür ist SAX geeignet?...38 4.3 Wie funktioniert SAX?...38 4.4 Übersicht über das SAX API...39 4.5 Implementation des Default Handlers...40 4.6 Fehlerbehandlung: ErrorHandler...42 Ein SAX Beispiel...43 5 DOM: Das Document Object Model...45 Was ist DOM?...45 Die DOM Node Typen...45 5.1 Die org.w3c.dom Java Interfaces...46 5.2 Benutzen des DOM Parsers...48 6 StAX: Streaming API for XML...50 6.1 Was ist StAX?...50 7 JAXB: Java Architecture for XML Binding...54 7.1 Die JAXB Architektur...54 7.2 Das Binding...55 7.3 Übersetzung verschiedener Basis-Datentypen...56 7.4 Erzeugen der Java Klassen...57 7.5 Einlesen der XML Daten...58 7.6 Schreiben der Daten in ein XML File...58 7.7 Anpassen der generierten Java Klassen und Member Variablen...59 7.8 Externe Binding-Deklaration...60 7.9 Erzeugen von Schematas...61 7.10 Schreiben von XML Daten ohne ObjectFactory...63 8 Die Transformations-Sprache XSLT...68 3

8.1 Wie funktioniert XSLT?...68 8.2 Der Aufbau eines Stylesheets: Templates...70 8.3 Die wichtigsten XSLT Befehle...72 9 Grundlegendes zu XSLT...81 9.1 Default Template Regeln...81 9.2 Template Driven vs. Data Driven Stylesheets...83 10 XPath: Die XSL Adressierungssprache...84 10.1 Die XPath Syntax...84 10.2 Adressierungs-Achsen...88 10.3 Die wichtigsten XPath Funktionen...89 11 XSL-FO Einführung...94 11.2 Die wichtigsten FO Elemente...95 11.3 Die wichtigsten Attribute...104 4

11 XSL-FO Einführung XSL-FO... bildet zusammen mit XSLT und XPath die XSL (extensible Stylesheet Language)... ist eine XML Applikation... definiert das visuelle Layout-Modell... wird mit Hilfe von einem Transformations-Tool (FOP, XEP,...) nach PDF, PostScript,... transformiert Dabei werden normalerweise keine FO-Dokumente direkt geschrieben, sondern die XML Daten werden mit Hilfe eines Stylesheets nach XSL-FO übersetzt, und dann mit Hilfe eines FO-Transformations-Tools nach Postscript, PDF,... transformiert. 11.1.1 Ein einfaches Beispiel <?xml version="1.0"?> <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="fo.jpg"/> example </fo:flow> </fo:page-sequence> </fo:root>

11.2 Die wichtigsten FO Elemente Es gibt 56 XSL-FO Elemente fo:block, fo:block-container, fo:character, fo:external-graphic, fo:flow, fo:footnote, fo:inline, fo:layout-master-set, fo:leader, fo:list-block, fo:list-item, fo:list-item-body, fo:list-item-label, fo:page-number, fo:page-sequence, fo:region-after, fo:region-before, fo:region-body, fo:root, fo:simple-page-master, fo:table-and-caption, fo:table, fo:tablebody, fo:table-caption, fo:table-cell, fo:table-column, fo:table-footer, fo:table-header, fo:table-row,... Die Elemente von XSL-FO definieren die Struktur oder den Aufbau (Unterteilung in Abschnitte, Blöcke, Text- Felder, Bilder,...) des Ausgabe- Dokuments. Die Attribute definieren das (lokale) Aussehen. Das Root Element XSL-FO Dokumente sind XML Dokumente. Darum beginnen FO-Dokumente mit der XML-Deklaration: <?xml version="1.0"?> XSL-FO Dokumente haben als Root-Element einen fo:root Knoten, in welchem der fo Namespace deklariert werden muss: xmlns:fo="http://www.w3.org/1999/xsl/format" 95

Das Layout einer Seite Eine Seite ist aufgeteilt in die fünf Bereiche region-before, region-after, region-start, region-end und regionbody. Diese sehen in der üblichen Lesart (von links nach rechts, von oben nach unten) wie folgt aus: Normalerweise sind die Randbereiche (region-before, region-after,...) reserviert für statische (wiederkehrende) Ausgaben (Logos, Adresse, Seitenzahl,...), während der eigentliche Inhalt der Seite im Zentralbereich (body) ausgegeben wird. Die einzelnen Bereiche können dann weiter aufgeteilt werden in Blöcke (zum Beispiel durch fo:block, fo:table, fo:list-block,...). Das Layout Master Set Das layout-master-set enthält alle Seiten-Vorlagen für die verschiedenen Seiten-Arten wie Titelseiten, linke und rechte Seiten,... <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:region-body margin-top="20mm"/> <fo:region-before extent="15mm" region-name="fbefore"/> </fo:simple-page-master> <fo:simple-page-master master-name="odd"... </...> </fo:layout-master-set> Die einzelnen Seiten-Vorlagen sind dann verpackt in verschiedene page-master Elemente. Das layout-master-set Element hat keine Attribute, ist immer ein Kind-Knoten vom root-knoten und hat als (einzig mögliche) Kinder einen (oder mehrere) simple-page-master oder page-sequence-master Knoten. Mit dem simple-page-master Knoten werden die Seitenränder (margin) und ev. die Papiergrösse festgelegt. Weiter wird definiert, in wie viele Bereiche (regions) die Seite aufgeteilt werden soll (region-body, regionbefore, region-after,...). Die normalen A4 Seitengrösse ist page-height="29.7cm" und page-width="21cm" Pro Seitentyp (Titelseite, Index-Seite, Inhaltsverzeichnis,...) wird je eine separate Seiten-Vorlage definiert. 96

Die Platz-Verteilung für die Regionen <fo:root xmlns:fo= "http://www.w3.org/1999/xsl/format"> <fo:layout-master-set> <fo:simple-page-master master-name="simple" page-height="10cm" page-width="9cm" margin-top="1.5cm" margin-bottom="1.5cm" margin-left="1cm" margin-right="1cm"> <fo:region-body margin-top="2cm" margin-bottom="1.5cm" background-color="#eeeeee" /> <fo:region-before extent="1cm" background-color="yellow"/> <fo:region-after extent="1cm" background-color="yellow"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="simple"> <fo:static-content flow-name="xsl-region-before"> <fo:block font-size="12pt"> Hier ist der Platz für das Region- Before </fo:static-content> <fo:static-content flow-name="xsl-region-after" > <fo:block font-size="12pt"> Region-After ist oberhalb vom unteren Rand </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block font-size="20pt" padding="0.5cm"> Region Body Region Body Region Body... </fo:flow> </fo:page-sequence> </fo:root> 97

Definieren und Benutzen von verschieden Seiten-Typen <fo:root xmlns:fo="http://www.w3.org/1999/xsl/format"> <fo:layout-master-set> <!-- Definition der ersten Seite--> <fo:simple-page-master master-name="erste" margin-left="5cm" margin-right="5cm margin-top="2cm" margin-bottom="3cm"> <fo:region-body margin-top="3cm" margin-bottom="2cm"/> <fo:region-before extent="3cm" region-name="first-before"/> <fo:region-after extent="1.5cm" region-name="first-after"/> </fo:simple-page-master> <!-- Definition der restlichen Seiten--> <fo:simple-page-master margin-bottom="3cm" margin-left="5cm" margin-right="5cm margin-top="5cm" master-name="restliche"> <fo:region-body margin-top="2.5cm" margin-bottom="2cm"/> <fo:region-before extent="2.5cm" region-name="rest-before"/> <fo:region-after extent="1.5cm" region-name="rest-after"/> </fo:simple-page-master> <!-- Wann soll welche Definition benutzt werden --> <fo:page-sequence-master master-name="global"> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference master-reference="erste" page-position="first"/> <fo:conditional-page-master-reference master-reference="restliche" page-position="rest"/> <!-- default --> <fo:conditional-page-master-reference master-reference="restliche"/> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master> </fo:layout-master-set> <!-- Inhalt der verschiedenen Seiten --> <fo:page-sequence initial-page-number="1" master-reference="global"> <fo:static-content flow-name="first-before"> <fo:block> Hier ist der Titel der ersten Seite </fo:static-content> <fo:static-content flow-name="rest-before"> <fo:block> Der Titel der restlichen Seiten </fo:static-content> <fo:static-content flow-name="first-after"> <fo:block> Hier ist die Fusszeile der ersten Seite </fo:static-content> <fo:static-content flow-name="rest-after"> <fo:block> Hier ist die Fusszeile der restlichen Seiten </fo:static-content> <fo:flow flow-name="xsl-region-body">... hier kommt der Dokument Inhalt... </fo:flow> </fo:page-sequence> </fo:root> 98

Der Dokument Inhalt: fo:flow fo:flow ist ein Kind-Knoten von fo:page-sequence und enthält eine beliebige Anzahl von Blöcken mit Text, Tabellen, Listen und Bildern. Mit Hilfe des flow Elementes wird der Dokument-Inhalt (der Fliesstext) definiert. fo:flow hat als mögliche Kind-Elemente: fo:block (neuer Abschnitt) block-container (neuer Abschnitt an fixem Ort) table, table-and-caption (Tabelle) list-block (Listen) Ein Beispiel <fo:flow flow-name="xsl-region-body"> <fo:block font-size="16pt"> This is the document content. This is the <fo:external-graphic src="cup.gif"/> document content. This is the... </fo:flow> Die statischen Bereiche: fo:static-content In den Randbereichen befindet sich normalerweise wiederkehrende Information (Überschriften, Fussnoten, Seitenzahlen,...) <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="end" font-size="10pt"> Seite <fo:page-number/> </fo:static-content> Abschnitte, Paragraphen,... fo:block fo:block erzeugt einen Bereich (ein oder mehrere Zeilen lang. fo:block wird benutzt, um zusammengehörende Ausgabe-Elemente (ein Textabschnitt, eine Titelzeile, eine Tabelle,...) zu gruppieren. <fo:block font-size="36pt"> Chapter 1: Introduction 99

Fest positionierte Felder: fo:block-container Ein fo:block-container Element kann an beliebiger Stelle auf des Seite positioniert werden <fo:block-container border-color="black" border-style="solid" border-width="1pt" height="1cm" width="4cm" padding="5pt" top="9.5cm" left="12cm" position="absolute" > <fo:block text-align="start" line-height="10pt" font-family="sans-serif" font-size="10pt"> Hier ist ein Text </fo:block-container> Format Änderungen in Zeilen: fo:inline Während mit fo:block ein neuer Abschnitt (eine neue Zeile) anfängt, kann fo:inline benutzt werden für Format-Änderungen innerhalb eines Blockes (einer Zeile). Typischerweise werden deshalb Blöcke entweder durch fo:block oder durch fo:inline Elemente unterteilt, je nachdem ob ein neuer Absatz erwünscht wird oder nicht. Einbinden von Bildern: fo:external-graphic Mit Hilfe von fo:external-graphic wird ein Bild in ein Dokument eingebettet. Mögliche Bildformate sind GIF und JPEG,... <fo:block> Look at this! <fo:external-graphic src="cup.jpg"/> 100

Erstellen von Listen, Aufzählungen,... Jedes fo:list-item Element enthält ein fo:list-item-label und ein fo:list-item-body Element. Ohne das start-indent Attribut im fo:list-item-body fängt der Inhalt der Auflistung am linken Rand an, und überschreibt das eventuell vorhandene Aufzählungs-Zeichen. <fo:list-block> <fo:list-item> <fo:list-item-label> <fo:block>a) </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>dies ist das erste... </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label> <fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>dies ist das zweite... </fo:list-item-body> </fo:list-item>... </fo:list-block> 101

11.2.1 Erzeugen von Tabellen Zum Erzeugen von Tabellen gibt es die Elemente: fo:table, fo:table-body, fo:table-cell, fo:table-column, fo:table-footer, fo:table-header, fo:table-row fo:table enhält (optional) einen table-header und/oder table-footer sowie einen table-body. Der table-body besteht dann aus table-row Elementen, welche wiederum aus table-cell Knoten zusammengesetzt sind. Durch die table-column Elemente wird bestimmt, wie viele und wie breit die einzelnen Spalten werden sollen. Die Breite kann auch Proportional zur Gesamt-Breite des Dokuments definiert werden (zum Beispiel 25%): column-width="proportional-column-width(25)" table-header und table-body enthalten dann pro Zeile eine table-row, welche pro Spalte eine table-cell enthält. Falls die Tabelle einen Rahmen erhalten soll, kann dies entweder in fo:table (Rahmen um ganze Tabelle), in table-column (Rahmen um eine Spalte), in table-row (Rahmen um eine Zeile) oder in fo:table-cell (Rahmen um einzelne Zelle) angegeben werden. Das Attribut padding gibt den Abstand vom Inhalt der Zelle (Text) und dem Rand der Zelle an. 102

Beispiel einer Tabelle <fo:table background-color="#eeeeee" padding="3pt"> <fo:table-column column-width="20mm"/> <!--Definition der Spalten-Breiten --> <fo:table-column column-width="30mm"/> <fo:table-header font-weight="bold" background-color="#cccccc> <fo:table-row> <fo:table-cell border="2pt solid black" padding="3pt"> <fo:block> HTML </fo:table-cell> <fo:table-cell border="2pt solid black" padding="3pt"> <fo:block> XML-FO </fo:table-cell> </fo:table-row> </fo:table-header> <fo:table-body> <fo:table-row> <fo:table-cell border="1pt solid black" padding="3pt"> <fo:block> THEAD </fo:table-cell> <fo:table-cell border="1pt solid black" padding="3pt">.... </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> 103

11.3 Die wichtigsten Attribute 11.3.1 Attribute sind Properties Die Attribute der FO-Elemente sind Formatierungs-Anweisungen. Sie bestimmen das Aussehen des Inhalts. Es gibt mehr als 200 Format Properties (Attribute), welche oft in verschiedensten Elementen angegeben werden können. Properties werden von aussen nach innen abgearbeitet. Bei sich widersprechenden Angaben, überschreibt die lokale Angabe die globale. Eine Property, welche an verschiedenen Orten benutzt werden kann, hat immer dieselbe Bedeutung. 11.3.2 Character Properties Alle XSL-FO Elemente, welche Text enthalten können (fo:block, fo:inline,...), erlauben Attribute für das Setzen von Character Properties(color, font-size, font-family, text-decoration,...). <fo:block font-family="helvetica" font-size="12pt"> Hier ist ein <fo:inline text-decoration="underline"> wichtiger </fo:inline> <fo:inline color="red" font-weight="900"> Text </fo:inline> 11.3.3 Character Property: Farbe Die color-property setzt die Schriftfarbe: <fo:inline color="green"> Text </fo:inline> Wie in CSS gibt es 16 vordefinierte Farben: Weitere Farben können als hexadezimale RGB-Trippel definiert werden: #RRGGBB. 104

11.3.4 Character Property: Font Die Property font-family definiert den zu benutzenden Font: <fo:inline font-family="times Roman" > Times Roman </fo:inline> Zur Verfügung stehen unter anderem die Schriften Serif, Sans Serif, Times Roman, Courier und Symbol. Es können als fall-back auch mehrere font-family Werte angegeben werden. font-family= Arial, Helvetica, sans-serif Ausserdem können mit FOP alle Systemfonts eingebettet werden. 11.3.5 Character Property: Schriftgrösse Die Property font-size definiert die zu benutzende Schriftgrösse: <fo:inline font-family="helvetica" font-size="24pt"> ein Text in 24 Punkt Schrift </fo:inline> 11.3.6 Character Property: Schrift Style Der Style des Fonts wird definiert durch die Property font-style <fo:block font-family="times Roman" font-style="italic"> Times Roman italic Es gibt die Styles italic, normal, oblique, reverse-normal und reverse-oblique. 11.3.7 Character Property: Schrift-Dicke Die Dicke der Schrift wird definiert durch die Property font-weight: <fo:block font-family="times Roman" font-weight="bold"> Hier ist ein bold Text <fo:block font-family="times Roman" font-weight="normal"> Hier ist ein normaler Text 105

11.3.8 Character Property: Schrift-Dekorationen Unabhängig vom gewählten Font (Style, Farbe,...) können verschiedene Text Properties gesetzt werden. Die Property text-transform definiert, ob der ganze Text in Grossbuchstaben (uppercase), Kleinbuchstaben (lowercase) oder bloss die Anfangsbuchstaben in gross gesetzt werden sollen (capitalize). Die Property texttransform ist in FOP (noch) nicht implementiert. Die Property score-spaces definiert, ob im unter- (über/durch)-gestrichenen Text auch die Spaces unter (über/durch)-strichen sein sollen oder nicht. text-decoration="underline" --> unterstrichen text-decoration="overline" --> überstrichen text-decoration="line-through" --> durchgestrichen text-shadow="gray" --> Schattenschrift text-transform="capitalize" --> Alle Ersten Buchstaben Gross text-transform="uppercase" --> GROSSSCHRIFT text-transform="lowercase" --> kleinschrift Ein Beispiel: <fo:block text-align="start" line-height="12pt" font-family="sans-serif" font-size="10pt" text-decoration="underline" color="blue"> Ein blauer, unterstrichener sans-serif Text in 10pt Schrift. 11.3.9 Sentence Properties Sentence Properties bestimmen den Platz zwischen den einzelnen Buchstaben (letter-spacing), zwischen einzelnen Wörtern im Text (word-spacing) und zwischen den einzelnen Linien im Text (line-height, text-depth, text-altitude,...), die Ausrichtung des Texts (text-align),... <fo:block font-family="helvetica" font-size="10pt" text-align="center" line-height="11pt"> Hier ist ein zentrierter Text. Hier ist ein zentrierter Text. Hier ist ein zentrierter Text. <fo:leader leader-pattern="rule" leader-length="6cm"/> <!- - Linie - -> <fo:block font-family="helvetica" font-size="10pt" text-align="justify" letter-spacing="1pt"> Hier ist ein gesperrter... Hier ist ein Text. Hier ist noch ein Text. <fo:leader leader-pattern="rule" leader-length="6cm"/> <!- - Linie - -> 106

107

11.3.10 Sentence Property: Zeilenabstand Der Zeilenabstand im Text kann kontrolliert werden durch die Properties line-height, text-depth und textaltitude. <fo:block font-size="10pt" line-height="16pt"...> Hier ist ein Text,... Die Sentence Property line-height-shift-adjustment legt fest, ob subscripts und superscripts den Linien- Abstand vergrössern sollen oder nicht. Durch text-depth (text-altitude) wird zusätzlicher Abstand nach (vor) jeder Zeile eingefügt. <fo:block font-family="helvetica" font-size="10pt" text-align="left" text-depth="3pt" text-altitude="3pt" line-height="16pt"> Hier ist ein Text. Hier ist ein Text. Hier ist ein Text. 11.3.11 Sentence Property: Text Ausrichtung Ob der Text linksbündig, rechtsbündig, zentriert oder im Blocksatz gesetzt werden soll, wird durch die Property textalign gesetzt. Diese kann die folgenden Werte annehmen: start oder left --> linksbündig center --> zentriert end oder right --> rechtsbündig justify --> Blocksatz <fo:flow flow-name="xsl-region-body" > <fo:block font-size="12pt" text-align="start"> Hier ist ein linksbündiger Text, der... <fo:block> <fo:leader leader-length="7cm" leader-pattern="rule"/> <fo:block font-size="12pt" text-align="center" line-height="20pt"> Hier ist ein zentrierter Text mit grossem... <fo:block> <fo:leader leader-length="7cm" leader-pattern="rule"/> <fo:block font-size="12pt" text-align="end"> Hier ist ein rechtsbündiger Text... <fo:block> <fo:leader leader-length="7cm" leader-pattern="rule"/> <fo:block font-size="12pt" text-align="justify"> Hier ist ein Blocksatz Text, der... </fo:flow> 108

109

11.3.12 Attribut Listen Zum Erlangen eines konsistenten Layouts sollten für die verschiedenen Text-Bereiche (Fliesstext, Header, Footer, Tabellen, Listen) jeweils entsprechende Styles definiert werden. Hier zum Beispiel die Definition des text-style für den Fliesstext (pagemaster.xsl): <xsl:attribute-set name="text-style"> <xsl:attribute name="font-family">arial, Helvetica, sans-serif</xsl:attribute> <xsl:attribute name="font-size">12pt</xsl:attribute> <xsl:attribute name="font-weight">normal</xsl:attribute> <xsl:attribute name="line-height">15pt</xsl:attribute> <xsl:attribute name="text-align">left</xsl:attribute> </xsl:attribute-set> Dieser wird dann wie folgt im Stylesheet benutzt (makefo.xsl): <fo:flow flow-name="xsl-region-body"> <fo:block xsl:use-attribute-sets="text-style"> <xsl:apply-templates select="doc"/> </fo:flow> Analog sollte für Tabellen, Listen,... vorgegangen werden. 11.3.13 Für die Übung: Einstellungen in oxygen für XSL-FO Beim Ankreuzen von FO Transformation ausführen wird das xml-dokument mit Hilfe des Stylesheets nach XSL-FO transformiert und das erzeugte fo-file danach mit FOP nach pdf umgewandelt. 110