toscho.design
Redaktion, Druck- und Webdesign aus Halle (Saale)

HTML-Tabellen erstellen und verwalten

Tabellen sind in HTML geradezu lächerlich kompliziert: 9 unterschiedliche Elemente, 16 spezielle Attribute, dazu etliche allgemeine und ein paar Präsentationsattribute. Ein Anfänger kann es nur falsch machen.

Dabei braucht man nur wenig zu wissen, dann kann man mit einem kleinen Trick selbst sehr große Tabellen bequem verwalten.

Wann Tabellen gebraucht werden

Früher wurden Tabellen oft fürs Layout benutzt; heute kennzeichnen wir damit vorrangig Tabellendaten.
Woran erkennen wir solche Daten? Wir können sie in mindestens zwei Listen einsetzen, die jeweils mindestens zwei Punkte haben.
Eine sinnvolle HTML-Tabelle hat also mindestens vier Felder.

Ein Beispiel aus der Welt des Boxens: Hans Tiefschlag hat gegen Hermann Haudrauf gewonnen und Herta Seitlich gegen Helga Aufwärts. Auf jede dieser Personen treffen zwei Eigenschaften zu: Sie ist in einem bestimmten Kampf angetreten (Liste 1), und sie hat verloren oder gewonnen (Liste 2).
Als Tabelle sähe das so aus:

Hans Tiefschlag Hermann Haudrauf
Herta Seitlich Helga Aufwärts

Ein guter Anfang. Aber wir können es besser. Jetzt sagen wir unseren Lesern noch, was die einzelnen Spalten und Reihen bedeuten:

Ergebnisse des Boxturniers am 31. 02. 2008
Kampf Sieger Verlierer
1 Hans Tiefschlag Hermann Haudrauf
2 Herta Seitlich Helga Aufwärts

Im HTML-Code sieht das so aus:

<table>
  <caption>Ergebnisse des Boxturniers am 31. 02. 2008</caption>
  <thead>
    <tr>
      <th scope="col">Kampf</th>
      <th scope="col">Sieger</th>
      <th scope="col">Verlierer</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Hans Tiefschlag</td>
      <td>Hermann Haudrauf</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Herta Seitlich</td>
      <td>Helga Aufwärts</td>
    </tr>
  </tbody>
</table>

Mehr brauchen wir in den meisten Fällen nicht.

Der Aufbau

Das Element table kennzeichnet die Tabelle insgesamt, thead den Kopf und tbody den Datenteil. Wenn die Tabelle sehr lang wird und beim Druck auf mehrere Seiten verteilt werden muß, wiederholen einige Browser den Tabellenkopf am Seitenanfang. Kurze Tabellen kommen auch ohne thead und tbody aus; aber beide Elemente gelten als »guter Stil«, deshalb schreiben wir sie immer, wenn die Überschriften oben stehen und nicht links.

caption gibt der Tabelle einen Namen. Wir können dieses Element weglassen und stattdessen eine normale Überschrift vor die Tabelle setzen.

tr kennzeichnet eine Reihe, in der wir die Zellen th und td unterbingen.

Die Zellen wiederum kennzeichnen wir mit th, wenn sie Überschriften sein sollen. Das Attribut scope sagt, ob sie für eine Reihe (row) gelten oder für eine Spalte (col). Wir können also auch eine Reihe tr schreiben, die mit einem <th scope="row"> beginnt und dann mit td weiterläuft.

Verwalten

Im Alltag müssen wir manchmal große Tabellen verwalten, und das Eintippen all der Elemente macht wirklich keinen Spaß. Daher schreiben wir die Tabelle in einem Programm, das extra dafür entwickelt wurde: in einer Tabellenkalkulation wie Excel, OpenOffice Calc oder Planmaker.
Darin kann man prima Spalten verschieben oder Reihen neu sortieren.
Aber Vorsicht: Wir benutzen niemals deren eingebauten HTML-Export! Der produziert durchweg grausamen Code, den wir unseren Lesern nicht zumuten wollen.

Statt dessen greifen wir zu einem Trick: Wir bauen den HTML-Code sichtbar in die Tabelle ein und exportieren das Ergebnis als Text:

HTML-Tabelle in OpenOffice Calc

HTML-Tabelle in OpenOffice Calc

Um so arbeiten zu können, müssen wir zunächst die automatische »Korrektur« der Anführungszeichen abschalten, sonst ersetzt das Programm die " um die Attributwerte.
In OpenOffice.org Calc gehen wir dazu nach Extras/AutoKorrektur/Typographische Anführungszeichen und nehmen die Häkchen aus den beiden Optionen. PlanMaker 2008 faßt die Anführungszeichen ohnehin nicht an, und Microsoft Excel … benutze ich nicht. Da bitte ich meine Leser mal um Auskunft, ob dieser Tip hilft.

Wenn die Tabelle ausgefüllt ist, kopieren wir einfach alle Zellen samt HTML-Code in unsere Webseite. Fertig.

Download

11 Kommentare

  1. nermin am 13.10.2009 10:38:

    Nice. Jemand der es kurz und einfach zusammen gefast hat und man dabei gut verstehen kann.

    Grez und danke (:

  2. Andreas Borutta am 17.10.2009 11:05:

    Ich denke, die Zellen A2 und A3 sind "Zeilenüberschriften".
    Daher halte ich TH für angebracht.

    Wie siehst Du das?

    Was ist Dein persönliches Motiv, in einfachen Tabellen deren Markup mit THEAD und TBODY anzureichern?
    Zusätzliche Möglichkeiten für Selektoren?

    Oder gibt es gesicherte Informationen, dass Screenreadernutzer wirklich Nutzen von diesen Elementen haben - auch bei einfachen Tabellen?

    Gruß, Andreas

  3. Thomas Scholz am 17.10.2009 12:11:

    @Andreas Borutta: Eine schlichte Nummerierung würde ich nicht als Überschrift kennzeichnen. Erstens sieht und hört man sie so, daß der Zusammenhang erhalten bleibt, zweitens wird bei jeder Zelle jede zugehörige Überschrift vorgelesen. Bei sehr vielen Spalten mag das sinnvoll sein; bei wenigen nervt die semantische »Überfrachtung«.
    Man könnte die Nummern auch per CSS mit Zählern und Generated Content erzeugen, aber das wird noch nicht gut unterstützt.

    thead habe ich eingebaut, weil diese Vorlagen ja auch bei langen Tabellen noch funktionieren sollen. Einige Browser (leider nicht alle) wiederholen thead und tfoot auf jeder Seite, wenn die Tabelle beispielsweise im Ausdruck auf mehrere Seiten verteilt wird.

    tbody sollte man aufschreiben, weil es in HTML sowieso immer existiert, auch ohne hingeschriebene Tags. Wenn es im Code steht, vergißt man das nicht.
    In XHTML hingegen muß man das Element explizit notieren, damit es im DOM auftaucht – soviel zur Kompatibilität.
    Ich finde es einfacher, das Element immer hinzuschreiben.

  4. Andreas Borutta am 17.10.2009 12:37:

    @Thomas
    Das Argument "Überfrachtung" leuchtet mir ein.
    Besonders das Screenreaderverhalten "Vorlesen einer TH bei jeder Zelle" war mir nicht bewußt. *

    Allerdings könnte man mit dem Argument "Überfrachtung" in Tabellen mit wenigen Zeilen auch dafür plädieren THEAD und TBODY wegzulassen.

    Da Du "Kompatibilität" erwähnst: fällt Dir eine Situation ein, wo es Nachteile hätte, wenn eine Tabelle in einem XHTML-Dokument kein TBODY aufweist?

    * Zum Thema "Zuviel Markup"/"Zuviel des Guten" liest man sehr selten was. Mir fallen dabei sofort unpassend gefüllte Alt-Attribute ein. Wie oft steckt dort dasselbe drin wie in Bildunterschriften!
    Schon werden Screenreadernutzer oder Nutzer, die die Darstellung von Bildern abgeschaltet haben, belästigt:
    Sie hören oder lesen zweimal dasselbe.

  5. Thomas Scholz am 17.10.2009 13:07:

    @Andreas Borutta: Ja, man kann bei einer so kurzen Tabelle thead und tbody weglassen. Aber der Text ist ja ein Tutorial, dessen »Lehren« verallgemeinerbar sein sollten.
    mein Beispiel mit den zwei Boxkämpfen hätte ich in der Praxis vermutlich gar nicht in eine Tabelle gesetzt, sondern einfach ausgeschrieben:

    Hans Tiefschlag gewann gegen Hermann Haudrauf mit einem KO in der zweiten Runde, Herta Seitlich schlug Helga Aufwärts nach Punkten in drei Runden.

    Will sagen: Halte dich nicht an diesem Beispiel fest; es illustriert nur die Technik.

    Da Du "Kompatibilität" erwähnst: fällt Dir eine Situation ein, wo es Nachteile hätte, wenn eine Tabelle in einem XHTML-Dokument kein TBODY aufweist?

    Ja: Wenn tbody im Stylesheet angesprochen wird. In einem HTML-Dokument wird dieser Selektor immer zuschlagen; man sieht es aber besser, wenn das Element auch ausgeschrieben wurde. In eine XHTML-Dokument trifft der Selektor nicht zu. Der Koordinationsaufwand, den man bei der Content-Negotiation betreiben müßte, ist einfach lächerlich.

    Mir fallen dabei sofort unpassend gefüllte Alt-Attribute ein. Wie oft steckt dort dasselbe drin wie in Bildunterschriften!

    Das ist oft auch Fehler der Software. WordPress verwendet die gleiche Zeichenkette für Bildunterschrift und Alt-Attribut. Oh, da habe ich doch noch ein Plugin herumliegen …

  6. Andreas Borutta am 17.10.2009 13:39:

    @Thomas
    Ich hatte die Quantität (von Zeilen/Spalten) nur aufgegriffen, weil Du sie als Argument gegen TH eingebracht hattest. :)

    Insgesamt ist mir klar, dass es in Deinem Artikel um ein Tutorial ging.

    Bitte verstehe meine Anmerkung als Plädoyer für "Size matters" bei "Wieviel Markup darf's denn sein?"

    Zu Deinem Beispiel mit tbody:
    Ich hatte selber so einen Fall noch nicht, dass ich im Zusammenhang mit Tabellen den Überblick bezüglich meiner Selektoren verloren hatte.

    Aber gut: ich verstehe was Du meinst. Allerdings bin ich noch nicht überzeugt, dass der Aufwand, überall TBODY zu setzen, gerechtfertigt ist.

  7. Thomas Scholz am 17.10.2009 13:55:

    @Andreas Borutta: Das ist wie bei den Anführungszeichen um Attributwerte: Die muß man in HTML nicht überall setzen. Aber wenn man sie immer benutzt, muß man darüber nicht mehr nachdenken.
    Deshalb habe ich das als »guten Stil« bezeichnet, mein Kürzel für: das Denken auf das Wesentliche fokussieren.

  8. Andreas Borutta am 17.10.2009 14:09:

    @Thomas

    Jetzt hab' ich verstanden, was Du meinst. Alles klar. Überzeugt.

    Ich praktiziere das in anderen Bereichen ähnlich.
    Zum Beispiel vergebe ich per Default Klassen- statt ID-Attribute.
    Auch wenn ein Element nur ein einziges Mal vorkommt.

    So muss ich seltener überlegen, wie ich einen Selektor formuliere.

    ID-Attribute sind bei mir seltenen Ausnahmefälle. Die überblicke ich in aller Regel gut.

  9. Martin Ihde am 09.03.2010 20:06:

    Danke für diesen guten Tipp mit den Tabellen, ich kam über den Artikel bei Selbständig im Netz, deswegen auch noch dieser verspätete Kommentar.

    Zu der noch offenen Auskunft für Excel habe ich gerade getestet, dass Excel (2007) Anführungszeichen nicht automatisch in typographische umwandelt. Es gibt deswegen in Excel dafür auch keine Einstellungsmöglichkeiten.

    Word allerdings wandelt die Anführungszeichen automatisch um, für Word kann man es über die Option "AutoFormat während der Eingabe" natürlich auch abstellen.

  10. Martin Ihde am 09.03.2010 20:29:

    Ähm, ich kam gar nicht von Selbständig im Netz sondern von den webwork-tools... *erröt*

  11. Thomas Scholz am 09.03.2010 20:33:

    @Martin Ihde: Hauptsache, du hast hergefunden und nach über einem Jahr das letzte Puzzlestück eingefügt. Danke!

Was sagst du dazu?

RSS-Feed für diese Kommentare · Hinweise zum Datenschutz
Nur das ist Pflicht, der Rest … nicht.
Bitte maskiere < und > mit und , sonst werden sie gefressen.