Tabellen

Tabellen können in WordML-Dokumenten weitestgehend immer dann eingesetzt werden, wenn auch Absätze (<w:p>-Elemente) erlaubt sind, beide Elemente sind auf der gleichen Ebene zulässig.

Das Tabellenkonzept von WordML ähnelt der Grundstruktur von HTML-Tabellen. Hier eine Aufstellung der Entsprechungen:

WordMLHTML
<w:tbl> <table>
<w:tblGrid> <colgroup>
<w:gridCol> <col>
<w:tr> <tr>
<w:tc> <td>

Der Grundaufbau

Neben diesen Übereinstimmungen gibt es aber eine Reihe von Unterschieden. Die meisten betreffen die Darstellung der Tabellen, also Elemente, die in WordML notwendig sind, um beispielsweise Rahmen zu definieren, und die in HTML-Tabellen über CSS-Styles gesteuert würden.

Der Grundaufbau einer WordML-Tabelle sieht wie folgt aus:

<w:tbl>                         (1)
   <w:tblPr>...</w:tblPr>       (2)
   <w:tblGrid>                  (3)
     <w:gridCol w:w="4606" />   (4)    
   ...
   </w:tblGrid>
   <w:tr>                       (5)
    <w:trPr>...</w:trPr>        (6)
     <w:tc>                     (7)
      <w:tcPr>...</w:tcPr>      (8)
     </w:tc>
...
   </w:tr>
...
</w:tbl>
 

(1) Das Element <w:tbl> ist das Container-Element einer Tabelle und umschließt diese.

(2) Die Tabelleneigenschaften (<w:tblPr> ) enthalten Formatierungsanweisungen wie z.B. Rahmen oder aber einen Verweis auf Formatvorlagen, die für die jeweilige Tabelle anzuwenden sind.

(3) <w:tblGrid> definiert eine Gruppe von Tabellenspalten und entspricht dem HTML-Element <colgroup>. Wird das Element <w:tblGrid> nicht verwendet und damit keine Spaltenanzahl und -breite vorgegeben, berechnet Word 2003 die Spaltenbreite automatisch. Dieses Verhalten von Word 2003 ist insofern nicht ganz selbstverständlich, als <w:tblGrid> ein Pflichtelement von <w:tbl> ist und folglich nicht fehlen dürfte.

(4) <w:gridCol> gibt mit seinem Attribut w:w die Breite einer Spalte in Twips vor und entspricht dem HTML-Element <col>.

(5) Das Element <w:tr> leitet eine neue Tabellenzeile ein und entspricht in seiner Funktion dem HTML-Element <tr>.

(6) <w:trPr> enthält die Formatierungsanweisungen für die Tabellenzeile.

(7) Das Element <w:tc> definiert die Tabellenzelle und entspricht dem HTML-Element <td>.

(8) <w:tcPr> enthält die Formatierungsanweisungen für die Tabellenzelle.

Überspannungen und Tabellenköpfe

Im Folgenden nun ein Beispiel für eine Tabelle mit einer vertikalen und einer horizontalen Überspannung, einem Tabellenkopf und Text:

<w:tbl>
   <w:tblPr>
     <w:tblStyle w:val="TableGrid"/>                              (1)
     <w:tblW w:w="0" w:type="auto"/>                              (2)
     <w:tblLook w:val="01E0"/>                                    (3)
   </w:tblPr>
   <w:tblGrid>
     <w:gridCol w:w="3070"/>                                      (2)
     <w:gridCol w:w="3071"/>                                      (2)
     <w:gridCol w:w="3071"/>                                      (2)
   </w:tblGrid>
   <w:tr>
     <w:trPr>
       <w:tblHeader/>                                             (4)
     </w:trPr>
     <w:tc>
      <w:tcPr><w:tcW w:w="3070" w:type="dxa"/></w:tcPr>           (2)
       <w:p><w:r><w:t>Tabellenkopf Spalte1</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
      <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Tabellenkopf Spalte2</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
      <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Tabellenkopf Spalte3</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
      <w:tcPr><w:tcW w:w="3070" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Zelle1</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="6142" w:type="dxa"/>                        (2)
         <w:gridSpan w:val="2"/>                                 (5) 
       </w:tcPr>
       <w:p><w:r><w:t>Zelle2 Spaltenüberspannung</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
      <w:tcPr>
         <w:tcW w:w="3070" w:type="dxa"/>
         <w:vmerge w:val="restart"/>                             (6)
       </w:tcPr>
       <w:p><w:r><w:t>Zelle3 Zeilenüberspannung</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
      <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Zelle4</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
      <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Zelle5</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="3070" w:type="dxa"/>
         <w:vmerge/>                                             (6)
       </w:tcPr>
       <w:p/>                                                    (6)    
     </w:tc>
     <w:tc>
       <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Zelle6</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
       <w:tcPr><w:tcW w:w="3071" w:type="dxa"/></w:tcPr>
       <w:p><w:r><w:t>Zelle7</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
</w:tbl>

Tabelle mit Überspannungen

Abb. Tabelle mit Überspannungen

 

(1) <w:tblStyle> erlaubt einen Verweis auf eine Formatvorlage für die jeweilige Tabelle. Das Attribut w:val enthält die Ref-ID der verwendeten Formatvorlage.

(2) <w:tblW> definiert die Breite der Tabelle. Das Attribut w:w enthält die Breitenangabe und das Attribut w:type die Maßeinheit. In diesem Fall wurde die Maßeinheit auf auto gesetzt, was zur Folge hat, dass die Tabelle automatisch die Breite des Satzspiegels annimmt und der Wert von w:w ignoriert wird. Das Attribut w:type kann aber auch die Werte dxa (Twips) und pct (Prozent) haben.

Das Element <w:tcW> gibt die Breite der Tabellenzelle an. Da hier die Tabelle automatisch gesetzt wurde, handelt es sich um Angaben, die Word 2003 errechnet hat. Würde die Tabelle manuell oder mit Hilfe eines Style­sheets erzeugt, wäre eine solche Angabe oft hinderlich. Sie kann folglich auch weggelassen werden. In diesem Fall errechnet Word die Zellenbreite selbst. Gleiches gilt für das Element <w:gridCol>, das die Breite der Spalte festlegt.

(3) <w:tblLook> ist ein Element, das mit der Visualisierung der Rahmen bei Tabellen zu tun zu haben scheint. Sein Attribut w:val enthält einen aufsummierten Hexadezimalwert, dessen Errechnungsweise und genauere Bedeutung sich nicht erschließt.

(4) Das Element <w:tblHeader> definiert die Kopfzeile einer Tabelle, die bei einem Seitenumbruch wiederholt wird. Anders als in HTML-Tabellen, die das Element <thead> zur Festlegung des Kopfes verwenden, wird dieser in WordML als Eigenschaft einer Zeile begriffen und daher im Element <w:trPr> festgelegt. Eine Entsprechung für einen Tabellenfuß, der bei einem Seitenumbruch auf jeder Seite wiederholt wird, gibt es in WordML nicht.

(5) Das Element <w:gridSpan> erlaubt die Überspannung der Spalten, das Attribut w:val gibt dabei die Anzahl der überspannten Spalten an.

(6) Das Element <w:vmerge> dient zur vertikalen Überspannung in Tabellen. Es werden alle Zellen überspannt, die dieses Element aufführen, wobei der Beginn der Überspannung mit dem Attribut w:val und dem Wert restart angegeben wird. Jede Tabellenzelle, auch wenn sie überspannt wurde und keinen textlichen Inhalt besitzt, muss einen Absatz (<w:p/>) enthalten.

<w:tbl>                                                 (1)
   <w:tblPr>                                            (2)
     <w:tblStyle w:val="Tabellengitternetz"/>           (3)
     <w:tblW w:w="0" w:type="auto"/>                    (4)
     <w:tblLook w:val="01E0"/>                          (5)
   </w:tblPr>
   <w:tblGrid>                                          (6)
     <w:gridCol w:w="4606"/>                            (6)
     <w:gridCol w:w="4606"/>                            (6)
   </w:tblGrid>
   <w:tr>                                               (7)
     <w:tc>                                             (8)
       <w:tcPr>                                         (8)
         <w:tcW w:w="4606" w:type="dxa"/>               (8)
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 1</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="4606" w:type="dxa"/>
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 2</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="4606" w:type="dxa"/>
           <w:vmerge w:val="restart"/>                  (9)
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 3</w:t></w:r></w:p>
     </w:tc>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="4606" w:type="dxa"/>
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 4</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="4606" w:type="dxa"/>
         <w:vmerge/>
       </w:tcPr>
       <w:p/>
     </w:tc>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="4606" w:type="dxa"/>
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 5</w:r></w:p> 
     </w:tc>
   </w:tr>
   <w:tr>
     <w:tc>
       <w:tcPr>
         <w:tcW w:w="9212" w:type="dxa"/>                 (10)
           <w:gridSpan w:val="2"/>                        (10)
       </w:tcPr>
       <w:p><w:r><w:t>Zelle 6</w:t></w:r></w:p>
     </w:tc>
   </w:tr>
</w:tbl>

(1) Das Element <w:tbl> umschließt die gesamte Tabelle.

(2) Das Element <w:tblPr> enthält die Eigenschaften der Tabelle.

(3) Das Element <w:tblStyle> referenziert mit seinem Attribut w:val auf eine für Tabellen aufgestellte Formatvorlage.

(4) Das Element <w:tblW> bestimmt die Breite der Tabelle. In diesem Fall wird diese automatisch ermittelt.

(5) Das Element <w:tblLook> enthält Informationen zum Aussehen der Tabelle. Der Wert ist ein aufsummierter Hex-Wert aus dem »Aussehen« der Kopfzeile, der letzten Zeile, letzten Spalte und der Kopfspalte.

(6) <w:tblGrid> entspricht dem HTML-Element <colgroup>, während die Elemente <w:gridCol> dem HTML-Element <col> entsprechen. Das Attribut w:w definiert die Breite der Spalte. Die Einheit ist Twips (twentieths of a point).

(7) Das Element <w:tr> definiert die Zeile. In diesem Fall ohne das optionale Element <w:trPr>, das die Eigenschaften der Zeile festlegt.

(8) Das Element <w:tc> definiert die Zelle; das Element <w:tcPr> die Zelleigenschaften, in diesem Fall die Breite.

(9) Das Element <w:vmerge> mit seinem Attribut w:val gibt an, ob die Zelle am Beginn einer vertikalen Überspannung steht oder nicht.

(10) Im Falle der Überspannung von Spalten werden diese ebenfalls in den Zelleigenschaften <w:tcPr> definiert. Das Element <w:gridSpan/> gibt mit seinem Attribut w:val die Anzahl der zu überspannenden Spalten an.

Rahmen und Schattierungen

Mit Hilfe einer entsprechenden Benutzeroberfläche lassen sich bequem Angaben über Rahmen und Schattierungen machen. Diese befindet sich in der Menüleiste Format -> Rahmen und Schattierung...

Rahmen und Schattierung

Abb. Rahmen und Schattierung

Da es sehr viele Kombinationsmöglichkeiten für Schattierungen und Rahmen in verschiedensten Farbvariationen gibt, ist die einfachste Möglichkeit, eine korrekte WordML-Auszeichnung zu erhalten, die Rahmen und Schattierungen mit Hilfe dieser Oberfläche zu erzeugen und anschließend das Ergebnis in WordML zu betrachten.

Das folgende Beispiel zeigt einen Ausschnitt aus einer Fußball-Bundesliga-Tabelle. Der Tabellenkopf wird mit einer doppelten Linie vom Tabellenkörper getrennt. Die Zeilen werden abwechselnd mit einem grauen Hintergrund voneinander abgesetzt, und die Trennlinien geben an, ob sich die jeweilige Mannschaft auf Meisterkurs befindet, sich für die Champions-League oder den UEFA-Pokal qualifizieren würde.

Tabelle mit Schattierungen

Abb. Tabelle mit Schattierungen

Da der WordML-Code sehr lang ist und die meisten Elemente bereits besprochen wurden, sind hier nur Ausschnitte aus den Strukturen angegeben, die für Schattierungen und Rahmen bedeutsam sind:

<w:tbl>
   <w:tblPr>
     <w:tblBorders>                                             (1)
       <w:top w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
       <w:left w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
       <w:bottom w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
       <w:right w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
       <w:insideH w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
       <w:insideV w:val="none" w:sz="0" wx:bdrwidth="0" w:space="0" w:color="auto"/> (1)
     </w:tblBorders>
   </w:tblPr>
 <w:tr>...
   <w:tc>
     <w:tcPr>
       <w:tcBorders>                                            (2)
         <w:bottom w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> (2)
       </w:tcBorders>
     </w:tcPr>
     <w:p>
       <w:pPr><w:rPr><w:b/><w:color w:val="FF0000"/></w:rPr></w:pPr>
       <w:r><w:t>Verein</w:t></w:r>
     </w:p>
   </w:tc>...
 <w:tr>...
   <w:tc>
     <w:tcPr>
       <w:tcBorders>                                            (2)
         <w:top w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> (3)
         <w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/> (2)
       </w:tcBorders>
       <w:shd w:val="clear" w:color="auto" w:fill="CCCCCC"/>    (4)
     </w:tcPr>
     <w:p><w:r><w:t>FC Bayern München</w:t></w:r></w:p>
   </w:tc>...
</w:tr>

(1) <w:tblBorders> ist das Container-Element für die Tabellenrahmen. Es hat keine Attribute, aber sechs Kindelemente, welche die äußeren Rahmen und z.T. auch die inneren festlegen:

  • <w:top> erzeugt eine Linie am oberen Rahmen der Tabelle.

  • <w:left> erzeugt eine Linie am linken Rahmen der Tabelle.

  • <w:bottom> erzeugt eine Linie am unteren Rahmen der Tabelle.

  • <w:right> erzeugt eine Linie am rechten Rahmen der Tabelle.

  • <w:insideH> erzeugt die inneren horizontalen Linien der Tabelle.

  • <w:insideV> erzeugt die inneren vertikalen Linien der Tabelle.

Die Rahmenelemente <w:top>, <w:left>, <w:bottom>, <w:right>, <w:insideH> und <w:insideV> können ebenfalls in den Rahmeneigenschaften der Tabellenzellen vorkommen und werden dort gegenüber den allgemeinen Rahmeneigenschaften der Tabelle vorrangig behandelt.

Alle Rahmenlinien haben u.a. die folgenden Attribute:

  • w:val ist nicht optional und gibt die Art der Rahmenlinie an. Es kann an die 200 verschiedene Werte annehmen. Die wichtigsten sind none, wenn keine Rahmenlinie gesetzt werden soll, single für eine einfache und double für eine doppelte Rahmenlinie.

  • w:sz ist optional und gibt die Rahmendicke an. Der Wert wird in 1/8 eines pt angegeben.

  • wx:bdrwidth ist optional und wird verwendet, um bei einem Abspeichern des WordML-Dokumentes im HTML-Format die Rahmenbreite in HTML-Tabellen dort zu definieren. Das Attribut wird in Word 2003 für die Anzeige selbst nicht ausgewertet.

  • w:space definiert einen Abstand zum Schnittpunkt der Rahmenlinie und hat den Effekt, dass die Linie nicht komplett durchgezogen wird. Die Werte werden in 1/8 eines pt angegeben.

Abstände zwischen Tabellenzellen

Abb. Abstände zwischen Tabellenzellen

  • w:color erwartet einen RGB-Hex-Wert zur Festlegung der Farbe der Rahmenlinie.

(2) <w:tcBorders> legt die Zellenrahmen in einer Tabelle fest, es kann alle in <w:tblBorders> erlaubten Elemente zur Umrahmung einer Tabellenzelle enthalten und überschreibt die in den <w:tblBorders> festgelegten Rahmen. In diesem Beispiel wurden die Tabellenrahmen ausgeschaltet und in einzelnen Zeilen wieder eingeschaltet und unterschiedlich definiert. Im Tabellenkopf wurde eine untere Rahmenlinie angelegt, die mit einer doppelten Linie w:val='double' versehen ist und die Linienstärke (w:sz) 4 hat. Die Linienstärke wird in 1/8 eines pt angegeben, daraus ergibt sich hier eine Linienstärke eines halben pts.

(3) Obwohl die doppelte Trennlinie zwischen Tabellenkopf und Tabellenkörper bereits in den Tabellenzellen des Kopfes definiert wurde, wiederholt Word 2003 beim Abspeichern des Dokumentes als WordML diese Angabe auch in den Tabellenzellen, die an den Kopf angrenzen. Hier wird die Angabe nochmals mit dem Element <w:top> wiederholt. Beim automatisierten Erzeugen von WordML mittels eines Stylesheets muss diese Angabe nicht wiederholt werden. Beim Einlesen reichen Word 2003 die Angaben in einer der beiden angrenzenden Zellen. Natürlich ist allerdings dafür zu sorgen, dass es nicht versehentlich zu sich widersprechenden Angaben kommt.

(4) <w:shd> erzeugt eine Hintergrundschattierung in der Tabellenzelle. Mit Hilfe der Attribute w:val und w:color lassen sich unter anderem verschiedene Muster im Hintergrund erzeugen. Sind diese nicht erwünscht, müssen die Werte wie in diesem Beipiel gewählt sein. Das Attribut w:fill gibt die Farbe des Hintergrundes in Form eines RGB-Hex-Wertes an.

 

<< zurück vor >>

 

Tipp der data2type-Redaktion:
Zum Thema WordML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © dpunkt.verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken. Ansonsten unterliegt dieses Kapitel aus dem Buch "Professionelle XML-Verarbeitung mit Word" 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