Komplexe Tabellen

Es wird eine Tabelle mit Überspannungen von Zeilen und Spalten erzeugt.

Die im letzten Kapitel vorgestellte Tabellen-Grundstruktur wird um die Möglichkeit der Überspannung von Zeilen und Spalten erweitert. Das hier gezeigte Prinzip für das Auslesen von typografischen Merkmalen aus der XML-Instanz lässt sich für viele Tabellen-Merkmale anwenden und an die spezifischen Anforderungen anpassen.

Das folgende Beispiel geht von einer HTML-Tabelle aus. Diese Tabelle besteht aus einem Tabellenrumpf mit vier Zeilen. In der ersten Zeile befinden sich zwei Zellen. In der zweiten Zeile überspannt eine Zelle beide Spalten. In der dritten und vierten Zeile überspannt die erste von zwei Zellen beide Zeilen.

Auszug aus der XML-Instanz:

<table>
   <tbody>
      <tr>
         <td>Zelle 1</td>
         <td>Zelle 2</td>
      </tr>
      <tr>
         <td colspan="2">Zelle 3</td>
      </tr>
      <tr>
         <td rowspan="2">Zelle 4</td>
         <td>Zelle 5</td></tr>
      <tr>
         <td>Zelle 6</td></tr>
   </tbody>
</table>

Stylesheet:

<xsl:template match="table"> 
   <fo:table>
      <xsl:apply-templates/>
   </fo:table>
</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">     ❶
      <xsl:attribute name="number-columns-spanned">              ❷
         <xsl:value-of select="@colspan"/>                       ❷
      </xsl:attribute>
      <xsl:attribute name="number-rows-spanned">                 ❸
         <xsl:value-of select="@rowspan"/>                       ❸
      </xsl:attribute>
      <fo:block>
         <xsl:apply-templates/>
      </fo:block>
   </fo:table-cell>
</xsl:template>

❶ Das Template erzeugt die Tabellenzellen. Das Element <fo:table-cell> legt mit den Attributen border-style und border-width die Rahmen-Eigenschaften der Zelle fest.

❷ Das Attribut number-columns-spanned dient zur Überspannung von Spalten. Der Wert legt die Anzahl der zu überspannenden Spalten fest. Das Element <xsl:attribute> erzeugt ein Attribut im Element <fo:table-cell> mit dem Namen des im Attribut name angegebenen Wertes, in diesem Fall das Attribut number-columns-spanned. Der Wert des Attributs wird mit <xsl:value-of> aus der Instanz ausgelesen.

❸ Das Attribut number-rows-spanned dient zur Überspannung von Zeilen. Die Vorgehensweise entspricht der für number-columns-spanned.

 

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