Tabellen
Eine Tabelle kennzeichnet sich in XSL-FO durch das Element table
. Jede XSL-FO-Tabelle hat 3 grundlegende
Bereiche: den Tabellenkopf (table-header
), den Tabellenfuß (table-footer
) und den Tabelleninhalt
(table-body
). Der Tabellenkopf und der Tabellenfuß sind jedoch optional. Innerhalb der Elemente für die
einzelnen Tabellenbereiche werden table-row
-Elemente untergeordnet, welche eine Tabellenzeile repräsentieren.
Diesen Elementen werden wiederum Tabellenzellen (table-cell
-Elemente) untergeordnet. Denken Sie daran,
dass der Inhalt einer Tabellenzelle nicht direkt untergeordnet werden darf, sondern innerhalb eines block
-Elements
angegeben werden muss. Um eine Zelle über mehrere Zeilen oder Spalten zu spannen (engl. span), können Sie die Attribute
number-rows-spanned
und number-columns-spanned
verwenden. Bei Bedarf können Sie direkt innerhalb des
table
-Elements table-column
-Elemente unterordnen, um die Definitionen einer Spalte bereits im
Voraus zu treffen. Das table-column
-Element ist einteilig. Dort können dann z. B. Attribute für den Innen- und
Außenabstand sowie für den Rahmen festgelegt werden. Mit dem Attribut column-width
kann die Breite der Spalte
festgelegt werden. Wird diese Variante nicht verwendet, so können Sie die Breite einer Zelle mit Hilfe des Attributs width
festlegen. Die Angabe der Zellenbreite ist nur einmal pro Spalte erforderlich.
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml-stylesheet href="tabellen.xsl" type="text/xsl" ?> <firma> <mitarbeiter> <name>Max Mustermann</name> <beruf>Geschäftsführer</beruf> <durchwahl>10</durchwahl> </mitarbeiter> <mitarbeiter> <name>Maria Musterfrau</name> <beruf>Verkäuferin</beruf> <durchwahl>20</durchwahl> </mitarbeiter> <mitarbeiter> <name>Peter Müller</name> <beruf>Lagerist</beruf> <durchwahl>30</durchwahl> </mitarbeiter> </firma>
XSL-Code:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="xml" omit-xml-declaration="no" version="1.0" encoding="UTF-8" indent="yes" /> <xsl:template match="/"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="DIN-A4" page-height="297mm" page-width="210mm"> <fo:region-body region-name="inhalt" margin="2cm" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="DIN-A4"> <fo:flow flow-name="inhalt"> <fo:table font-family="Times"> <fo:table-column column-width="40%" border-style="solid" border-width="0.25mm" border-left-width="0.5mm" /> <fo:table-column column-width="40%" border-style="solid" border-width="0.25mm" /> <fo:table-column column-width="20%" border-style="solid" border-width="0.25mm" border-right-width="0.5mm" /> <fo:table-header> <fo:table-row background-color="#CCCCCC" text-align="center" font-weight="bold" font-size="18px"> <fo:table-cell number-columns-spanned="3"> <fo:block>Mitarbeiterübersicht</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row background-color="#EEEEEE" border-style="solid" border-width="0.25mm" text-align="center" font-weight="bold" font-size="16px"> <fo:table-cell> <fo:block>Name</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Beruf</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Durchwahl</fo:block> </fo:table-cell> </fo:table-row> </fo:table-header> <fo:table-body> <xsl:apply-templates /> </fo:table-body> </fo:table> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> <xsl:template match="/firma/mitarbeiter"> <fo:table-row border-style="solid" border-width="0.25mm" font-size="16px"> <fo:table-cell> <fo:block> <xsl:value-of select="name" /> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> <xsl:value-of select="beruf" /> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> <xsl:value-of select="durchwahl" /> </fo:block> </fo:table-cell> </fo:table-row> </xsl:template> </xsl:stylesheet>