E-Book Startseite Karteikarten-Programm
0
Inhalt dieser Seite
  1. Tabellen

Tabellen

Natürlich ist es in XSL-FO auch kein Problem Tabellen zu erstellen. Eine Tabelle wird mit fo:table gekennzeichnet. Unterhalb von fo:table können mehrere fo:table-column, kann ein fo:table-header, kann ein fo:table-footer und muss ein fo:table-body vorkommen. Dabei muss die genannte Reihenfolge eingehalten werden. Unterhalb von fo:table-header, fo:table-footer und fo:table-body können nun mehrere fo:table-row Vorkommen. fo:table-row kennzeichnet eine Zeile. Um nun jedoch die einzelnen Zellen zu erstellen und mit Inhalt zu füllen, benötigen wir noch fo:table-cell, welche untergeordnet von fo:table-row vorkommen. Die Anzahl wie oft das Element vorkommt ist unbegrenzt. In dem vorher kurz angesprochenen Element fo:table-column können Vorlagen für Spalten erstellt werden. In diesem Element können verschiedene border-, margin- und padding-Attribute vorkommen, sowie das Attribut column-width, welches die Breite der Spalte festlegt (absolute und relative Werte sind erlaubt). Das Attribut column-number, welches in fo:table-column und fo:table-cell vorkommen kann, muss eine Zahl enthalten und verbindet die Formatierung in fo:table-column mit der Zelle (siehe Beispiel). Dieses Element ist einteilig und wird deshalb mit /> am Schluss geschlossen. In fo:table, fo:table-header, fo:table-footer, fo:table-body, fo:table-row und fo:table-cell sind eine Vielzahl von Attributen gültig, z. B. background, border, padding, margin, height und width. Je nach Formatier-Prozessor wird nicht jedes Attribut an jeder Stelle akzeptiert. Sie fragen sich vielleicht für was fo:table-column benötigt wird, wenn man die Attribute einfach direkt in fo:table-cell einsetzen kann. Der Grund ist einfach: Bei großen Tabellen wird es unübersichtlich, wenn man in jedem fo:table-cell-Element bspw. die 3 verschiedenen border-Attribute einsetzen muss. Leider unterstützt fo:table-column nicht ganz so viele Elemente. Um in die Tabelle Text zu bekommen müssen Sie nun wieder das fo:block-Element verwenden, d. h. der Text darf nicht direkt zwischen den 2 table-cell Tags stehen. Schriftformatierungen müssen ebenfalls in den fo:block-Elementen vorgenommen werden. Im Beispiel haben wir viele verschieden Elemente und Attribute eingebaut, sodass Sie den Zusammenhang des großen Tabellen-Komplexes verstehen:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="fotable.xsl" type="text/xsl"?>
 
<wurzel>Test<wurzel>
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
      <fo:simple-page-master master-name="seite" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
        <fo:region-body margin-top="2.5cm" margin-bottom="2cm" margin-left="5.5cm" margin-right="1.5cm" />
        <fo:region-before region-name="top" extent="2cm" precedence="true" background-color="#FF0000" />
        <fo:region-after region-name="bottom" extent="1.5cm" precedence="true" background-color="#00FFFF" />
        <fo:region-start region-name="left" extent="5cm" background-color="#FFFF00" />
        <fo:region-end region-name="right" extent="1cm" background-color="#0000FF" />
      </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="seite">
      <fo:static-content flow-name="top">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="left">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="right">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:static-content flow-name="bottom">
        <fo:block></fo:block>
      </fo:static-content>
      <fo:flow flow-name="xsl-region-body">
        <fo:block><xsl:value-of select="." /></fo:block>
        <fo:block>
        <fo:table border-style="solid" border-color="black" border-width="1px">
          <fo:table-column column-number="1" column-width="60%" border-style="solid" border-color="black" border-width="1px" />
          <fo:table-column column-number="2" column-width="40%" border-style="solid" border-color="black" border-width="1px" />
          <fo:table-header>
            <fo:table-row border-style="solid" border-color="black" border-width="1px">
              <fo:table-cell column-number="1"><fo:block font-weight"=800" text-align"=center">Name</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block font-weight"=800" text-align"=center">Punkte</fo:block></fo:table-cell>
            <fo:table-row>
          </fo:table-header>
          <fo:table-footer border-style="solid" border-color="black" border-width="1px">
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block font-style"=italic">Durchschnitt</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block font-style"=italic" text-align"=right">6.183.800</fo:block></fo:table-cell>
            <fo:table-row>
          </fo:table-footer>
          <fo:table-body>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Max</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">10.542.730</fo:block></fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Diether</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">8.445.420</fo:block></fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Claudia</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">5.232.340</fo:block></fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Petra</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">5.104.000</fo:block></fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Sophia</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">4.996.470</fo:block></fo:table-cell>
            </fo:table-row>
            <fo:table-row>
              <fo:table-cell column-number="1"><fo:block>Lukas</fo:block></fo:table-cell>
              <fo:table-cell column-number="2"><fo:block text-align="right">2.781.840</fo:block></fo:table-cell>
            </fo:table-row>
          </fo:table-body>
        </fo:table>
        </fo:block>
      </fo:flow>
    </fo:page-sequence>
  </fo:root>
</xsl:template>
</xsl:stylesheet>
Anzeigebeispiel
Anzeigebeispiel (XML-Datei)



Anzeigebeispiel
Anzeigebeispiel (PDF-Datei)



Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de