untief.org

Outline für Einträge mit Metadaten

veröffentlicht
2012-03-14
verschlagwortet
HTML

Das Outline eines Eintrags könnte in HTML 4.01 auf diese Weise ausgezeichnet werden:


<h1>Mein Besuch bei ACME</h1>
<p></p>

<h2>Der Empfang</h2>
<p></p>

<h2>Das Mittagessen</h2>
<p></p>

Nun sollen Metadaten dieses Eintrags hinzugefügt werden: Autor, Veröffentlichungsdatum und Schlagwörter. Wie diese Metadaten selbst ausgezeichnet werden, soll hier keine Rolle spielen, sondern es geht um die Frage, wo sie im Dokument eingeordnet werden.

Möglichkeiten

Für HTML 4.01 fallen mir die folgenden Varianten ein.

1: am Anfang des Eintrags


<h1>Mein Besuch bei ACME</h1>
<div><!-- Autor, Veröffentlichungsdatum, Schlagwörter --></div>

<p></p>

<h2>Der Empfang</h2>
<p></p>

<h2>Das Mittagessen</h2>
<p></p>

Bei dieser Möglichkeit besteht keine Trennung der inhaltlichen Ebenen zwischen den Metadaten und dem ersten p. Das Element hr könnte hier weiterhelfen. Ich halte diese Variante für akzeptabel, wenn die Metadaten nur aus einem Absatz bestehen. Wenn die Struktur der Metadaten aber komplexer ist (z. B. ein ul für die Schlagwörter), dann halte ich eine eigene Überschrift für diesen Bereich für nötig.

2: am Ende des Eintrags


<h1>Mein Besuch bei ACME</h1>
<p></p>

<h2>Der Empfang</h2>
<p></p>

<h2>Das Mittagessen</h2>
<p></p>

<div><!-- Autor, Veröffentlichungsdatum, Schlagwörter --></div>

Das ist falsch. Die Metadaten würden dem durch das h2 eröffneten Abschnitt „Das Mittagessen“ zugeordnet werden, nicht dem ganzen Eintrag. Auch ein hr hilft hier nicht weiter, denn damit bricht man nicht aus dem Abschnitt aus, sondern man zeigt bloß einen thematischen Umbruch innerhalb des Abschnitts an.

3: am Anfang/am Ende des Eintrags, unter eigener Überschrift

Eine eigene Überschrift für die Metadaten halte ich für sinnvoll, wenn die Informationen nicht nur aus einem kurzen Satz bestehen.


<h1>Mein Besuch bei ACME</h1>
<p></p>

<h2>Der Empfang</h2>
<p></p>

<h2>Das Mittagessen</h2>
<p></p>

<h2>Metadaten</h2>
<div><!-- Autor, Veröffentlichungsdatum, Schlagwörter --></div>

Bei dieser Möglichkeit besteht keine Trennung der inhaltlichen Ebenen. Das h2 für die Metadaten ist semantisch nicht von den h2 des eigentlichen Inhalts zu unterscheiden. Gerade hier stellen die Überschriften eine chronologische Abfolge von Ereignissen dar (die letzte Überschrift sollte wohl eher „Die Verabschiedung“ heißen) – und hey, was wenn bei ACME tatsächlich „Metadaten“ ein Thema war, das einen eigenen Abschnitt verdient hätte?

Ich finde diese Variante dann akzeptabel, wenn ein Eintrag keine Unterüberschriften hat (oder ausschließlich solche Unterüberschriften, die nicht Teil des eigentlichen Inhalts sind, etwa „Kommentare“).

4: vor/nach dem Eintrag

Es lässt sich darüber streiten, ob Metadaten eines Eintrags zum Eintrag selbst gehören oder nicht. Falls man der Meinung ist, die Metadaten hätten im Eintrag nichts zu suchen, dann müsste man sie vor oder nach dem Eintrag aufführen, also in diesem Beispiel unterhalb einem eigenen h1.


<h1>Mein Besuch bei ACME</h1>
<p></p>

<h2>Der Empfang</h2>
<p></p>

<h2>Das Mittagessen</h2>
<p></p>

<h1>Metadaten von „Mein Besuch bei ACME“</h1>
<div><!-- Autor, Veröffentlichungsdatum, Schlagwörter --></div>

Allerdings hat diese Methode den großen Nachteil, dass die semantische Beziehung der Metadaten zum Eintrag nicht ausgezeichnet ist. Wenn auf einer Webseite nur ein Eintrag und ein Metadatenbereich vorhanden ist, ist das noch zu verkraften. Unschön wird es aber, wenn auf einer Webseite mehrere Einträge stehen.

Fazit

Keine elegante Lösung möglich.

Kein Problem mit HTML5

Mit HTML5 besteht dieses Problem nicht mehr. Dank der Sectioning-Elemente und dem Outline-Algorithmus kann man die Metadaten auszeichnen und vom eigentlichen Inhalt des Eintrags trennen, ohne dass deren semantische Beziehung verloren geht (im Gegenteil, die Beziehung ist sogar explizit festgelegt).