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