Einfache Tabellen

Es wird eine einfache Tabelle erzeugt.

Es soll dargelegt werden, wie das Tabellenkonzept in Form eines minimalen Grundgerüsts unterstützt werden kann. Auf die diversen Eigenschaften, die zur Formatierung einer Tabelle zur Verfügung stehen, wird an dieser Stelle nicht eingegangen. Diese lassen sich jedoch je nach Anforderung problemlos integrieren.

Das folgende Beispiel geht von einer HTML-Tabelle aus. Diese Tabelle besteht aus Tabellenkopf und -rumpf, jeweils mit einer Zeile und darin zwei Zellen.

Auszug aus der XML-Instanz:

<table>
   <thead>
      <tr>
         <td>Kopf 1</td>
         <td>Kopf 2</td>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Zelle 1</td>
         <td>Zelle 2</td>
      </tr>
   </tbody>
</table>

Stylesheet:

<xsl:template match="table">
   <fo:table>
      <xsl:apply-templates/>                                                          ❶
   </fo:table>
</xsl:template>
...
<xsl:template match="thead">
   <fo:table-header>                                                                  ❷
      <xsl:apply-templates/>                                                          ❷
   </fo:table-header>
</xsl:template>
...
<xsl:template match="tbody">
   <fo:table-body>                                                                    ❸
      <xsl:apply-templates/>                                                          ❸
   </fo:table-body>
</xsl:template>
...
<xsl:template match="tr">
   <fo:table-row>                                                                     ❹
      <xsl:apply-templates/>                                                          ❹
   </fo:table-row>
</xsl:template>
...
<xsl:template match="td">
   <fo:table-cell border-style="solid" border-width="0.5mm">                          ❺ 
      <fo:block>
         <xsl:apply-templates/>                                                       ❺
      </fo:block>
   </fo:table-cell>
</xsl:template>
...
<xsl:template match="thead/tr/td">
   <fo:table-cell border-style="solid" border-width="0.5mm" background-color="green"> ❻
      <fo:block>                                                                      ❻
         <xsl:apply-templates/>
      </fo:block>
   </fo:table-cell>
</xsl:template>

❶ Um eine Tabelle ohne Über- oder Unterschrift zu erzeugen, wird das Element <fo:table> als oberstes Element verwendet. Dieses Element umschließt den gesamten Inhalt der Tabelle.

❷ Mit dem Element <fo:table-header> wird der Tabellenkopf erzeugt. Dieser wird dann über <xsl:apply-templates> mit den entsprechenden Inhalten gefüllt. Wird eine Tabelle auf eine nächste Seite umbrochen, wird dieser Tabellenkopf auf der folgenden Seite automatisch wiederholt.

❸ Das Element <fo:table-body> enthält den Tabellenrumpf.

❹ Die Tabellenzeilen werden im Element <fo:table-row> definiert.

❺ Mit <fo:table-cell> wird eine Tabellenzelle, die die eigentlichen Inhalte enthält, erzeugt. Die Attribute border-style und border-width erzeugen die durchgezogenen Rahmen um die Zellen. Die Rahmen für oben, unten, rechts und links könnten auch separat definiert werden, um beispielsweise Spalten- oder Zeilenlinien unterschiedlich zu spezifizieren.

❻ Im abschließenden Template werden die Zellen für den Tabellenkopf definiert. Diese unterscheiden sich von denen im Tabellenrumpf durch die mit dem Attribut background-color festgelegte Hintergrundfarbe.

 

 

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSL-FO bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © dpunkt.verlag GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSL-FO in der Praxis" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, fon 06221-14830, fax 06221-148399, hallo(at)dpunkt.de