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