next up previous contents
Nächste Seite: 4.5 Generierung mit XSLT Aufwärts: 4 XSL-FO Vorherige Seite: 4.3 Seitendefinition   Inhalt

4.4 Inhalte einer Seite

Die zuvor definierten Seiten können nun mit Inhalt gefüllt werden. Das wird innerhalb der page-sequence-Elemente gemacht. Diese referenzieren auf den Master einer einfachen oder einer Sequenz von Seiten. Da auch mehrere Seiten-Sequenzen benutzt werden können, müssen diese untereinander abgestimmt werden. Dafür gibt es bei jeder neu eingefügten Sequenz die Möglichkeit, die Seitennummerierungen anzupassen oder den Beginn auf einer geraden oder ungeraden Seite festzulegen. Die Seitengrundlage ist damit festgelegt. Durch Referenzen auf die definierten Regionen der Seite kann in diese der Inhalt eingefügt werden. Dabei wird fließender und fester Inhalt unterschieden. Fester Inhalt wird direkt auf einer Seite platziert, während sich fließender Inhalt je nach Aufteilung durch den Formatierer über verschiedene Seiten verteilen lässt. Übersteigt der fließende Text allerdings die im Sequenz-Master definierte Anzahl der Seiten, so kommt es zu einer Fehlermeldung. Es sollte also schon bei der Master-Definition darauf geachtet werden, dass die Anzahl der gesamten Seiten nicht beschränkt ist und somit immer ausreichend Seiten zur Verfügung stehen. Zum Platzieren und Definieren des Inhaltes gibt es viele Möglichkeiten der Gestaltung. Sie hängen mit dem Bearbeitungsmodell des Formatierers zusammen. Alle Objekte, die der Formatierer in einer Seite platzieren muss, werden in ein Rechteck gesteckt, das Area genannt wird. Diese Area ist nicht unbedingt mit den einzelnen definierten Inhalten einer Seite identisch. Der fließende Inhalt kann beispielsweise in einem Element definiert sein, aber nicht auf eine Seite passen. Somit wird er getrennt und in mehrere Areas aufgeteilt. Dieser Arbeitsschritt des Formatierers ist bei der Definition aller Inhalte zu berücksichtigen, da so zusammenhängende Einträge mit gleicher Formatierung auch getrennt werden können. Die Areas können ineinander geschachtelt werden. Damit entsteht ein ganzer Baum ineinander liegender Areas. Verschiedene Objekte können auch zu Areas zusammengeschlossen werden. Angaben hierzu lassen sich genauso über Attribute realisieren wie das Aufteilen auf unterschiedliche Seiten. Zwei wesentliche Typen von Areas werden im Folgenden benutzt: Inline-Areas und Block-Areas. Inline-Areas beschäftigen sich mit allem, was innerhalb einer Zeile angeordnet oder platziert werden kann. Block-Areas sind zusammengehörige Teile, die in einem Dokument platziert werden soll. Blöcke sind ineinander schachtelbar. Sie können aus einfachen Textpassagen, Listen, Tabellen oder auch Grafiken bestehen. Allein mittels dem block-container-Element definierte Blöcke sind absolut innerhalb einer Area positionierbar, ansonsten ist die Positionierung relativ vorzunehmen. Die einfachste Benutzung eines block-Elements stellt das Einfügen von Text dar. Alle Eigenschaften (Fonts, Abstände von Zeilen oder Rändern, Hintergrund, etc.) lassen sich in den Attributen des block-Elementes setzen. Für Größenangaben stehen dabei verschiedene Maßeinheiten zur Verfügung, zum Beispiel Pixel, Zoll oder Zentimeter. Bei geschachtelten Blöcken werden die Eigenschaften weiter vererbt. Blöcke können somit als Container anderer Elemente dienen und diese auch kombinieren, beispielsweise eine Grafik in den Hintergrund legen und den Text darüber. Auch Fußnoten lassen sich einfügen und Blöcken können ID's mitgegeben werden. Anhand der ID's lassen sich an anderer Stelle Verweise auf diese Blöcke erstellen, wodurch Links und Seitenzahlenverweise innerhalb des Textes ermöglicht werden.

Beispiel 4.4.1:
Es wird fließender Inhalt im Region-Body einer Seite definiert. Der Inhalt besteht aus einfachen Blöcken, die ineinander geschachtelt sind und nur Text enthalten. Die Attribute der Blöcke bestimmen die Textausrichtung, die Schriftgröße und den Abstand zueinander.
<fo:flow flow-name="xsl-region-body">
 <fo:block text-align="left" font-size="22pt">
   Inhalt
   <fo:block space-before="6pt" font-size="16pt">
     Ein Block im Block
   </fo:block>
 </fo:block>
</fo:flow>

Abbildung 9: Der gerenderte Inhalt zweier Block-Abschnitte aus Beispiel 4.4.1
\includegraphics[scale=0.60]{bilder/blockimblock}

Listen und Tabellen stellen auch Blöcke dar, die in den beschriebenen Arten benutzt werden können. Sie lassen sich aber auch noch exakter formatieren. Beispiele hierfür sind das Listenlabel und sein Abstand zum eigentlichen Listeninhalt oder die Tabellenbeschriftung in Bezug auf die eigentliche Tabelle. Diese Beschriftung wird neben dem Tabellenkopf und dem Tabellenkörper angegeben und bildet mit ihnen zusammen einen eigenen Block. Die Inhalte dieser Beschreibungen können wiederum in andere Blöcke integriert sein. Eine kleinere Einheit innerhalb von Blöcken stellen die inline-Elemente dar. Während sich für Blöcke allgemeine Eigenschaften setzen lassen, bieten inline-Elemente die Möglichkeit direkt in einer Zeile Veränderungen vorzunehmen. So lassen sich mit ihrer Hilfe einzelne Wörter oder Textpassagen unterstreichen, kursiv oder fett drucken. Die inline-Elemente können auf Zeichen- und Wortabstände Einfluß nehmen, können Zeilenleerräume mit Zeilenführern füllen, wie den Linien einer Zeile in einem Inhaltsverzeichnis, und innerhalb einer Zeile Grafiken einfügen. Natürlich können auch in inline-Elementen alle Arten von Farb- und Fontveränderungen vorgenommen werden.

Beispiel 4.4.2:
Zum Einfügen einer Grafik innerhalb einer Zeile, wird das inline-Element verwendet. Hier wird innerhalb eines mit Text gefüllten Blockes eine externe GIF-Datei eingefügt. Durch Festsetzung der Höhe und der zu benutzenden Skalierungsfunktion wird die Grafik an die Zeilenhöhe angepasst. Das Ergebnis ist in Abbildung 10 zu sehen.
<fo:block space-before="20pt" font-size="16pt">
  Eine Grafik in einer Zeile 
  <fo:inline>
    <fo:external-graphic height="16pt" scaling="uniform" 
                                   src="url(smile.gif)"/>
  </fo:inline>
  gefolgt von ein wenig Text. 
</fo:block>

Abbildung 10: Formatierte Grafik in einer Zeile
\includegraphics[scale=0.60]{bilder/FoZeileGrafik}

Die elementarste Ebene, auf der Darstellungskriterien festgelegt werden können, sind einzelne Zeichen. Das ist allgemein gebräuchlich um einzelne Zeichen hoch oder tief zu stellen. Es lassen sich auf dieser Ebene aber auch Zeichen drehen oder ihre Farbe oder Größe verändern. Die Liste der einzelnen Formatierungsmöglichkeiten für jedes Element ist sehr lang. Überall können die eben beschriebenen Eigenschaften anhand von Attributen verändert und dem Zweck angepasst werden. Auch die Benutzung der Elemente ist beliebig tief schachtelbar und ihr Einsatz in fließendem und statischem Inhalt möglich. Im folgenden Kapitel wird in einem Beispiel dargestellt, wie die Kombination aus XSLT und XSL-FO zur druckreifen Darstellung von XML-Daten führt.
next up previous contents
Nächste Seite: 4.5 Generierung mit XSLT Aufwärts: 4 XSL-FO Vorherige Seite: 4.3 Seitendefinition   Inhalt
Tanja Schniederberend 2003-06-11