Hallo, Ingo,
Die Web-Zugänglichkeitsrichtlinien sind voll von Hinweisen wie »content developers should not use structural elements to achieve presentation effects«. Was du vorhast, widerspricht m.E. den Richtlinien 3 und 12.
Nun, ich habe einmal testweise mehrere Elemente (hier Bilder) über <fieldset> zu einer zusammengehörigen Gruppe zusammengefaßt und ihnen mit <legend> eine Gruppenüberschrift gegeben. Dies sollte doch eigentlich der Intention auch entsprechen, oder?
Um den Prozess noch einmal zu zusammenzufassen: Du hast eine logische Struktur, ein Datenmodell bzw. ein Geflecht von Informationsknoten mit logischen Beziehungen. Dafür suchst du das passende Markup.
fieldset/legend passt aus zwei Gründen - erstens gibt diese Auszeichnung die abstrakte, logisch-hierarchische Struktur angemessen wieder und zweitens wird es von einigen Browsern in einer bestimmten Weise ausgegeben, welche dir zusagt und den Bezug zwischen den Elementen auch optisch angemessen wiedergibt.
Der entscheidende Punkt ist jedoch, dass fieldset/legend ist kein allgemeiner, nicht näher spezialisierter Mechanismus ist, um eine solche Strukturen abzubilden. Was du suchst, ist eine abstrakte Möglichkeit, mehrere Elemente/Knoten zusammenzufassen bzw. zu gruppieren und dieser Gruppe eine Überschrift bzw. einen Titel zuzuweisen - unabhängig davon, welche besonderen Bedeutung diesem Elementzusammenhang zugrunde liegen. fieldset/legend tellt zwar auch eine solche Verbindung her, aber zusätzlich mit einer konkreten, ins Detail gehenden Bedeutung. Es ist nämlich nicht irgendein Bereich mit einer beliebigen, vom Markup nur oberflächlich bestimmten Bedeutung, dem eine Beschreibung/ein Titel zugewiesen wird, sondern speziell eine Gruppe von Formularelementen (label und input/select/textarea) in einem HTML/HTTP-Formular. Und diese spezielle logische Funktion führt zu den in [pref:t=51422&m=283054] beschriebenen Problemen.
Wenn nun fieldset/legend zur generischen Gruppierung gedacht wäre, würden keine Probleme dabei auftreten, es für verschiedene Anwendungsfälle zu gebrauchen. Da die Semantik von fieldset/legend aber durch die Specs eingegrenzt wurde und es nur einene semantisch exakte stimmigen Anwendungsfall gibt, musst du damit rechnen, dass Browser fieldset/legend unverwechselbar als Formularfeldgruppen ausgeben - wie gesagt.
Es ist eine Definitionslücke in der DTD, welche nicht weiter kommentiert wird. Alle Beispiele weisen auf eine Verwendung in Formularen hin.
Da hast Du freilich Recht. Die Frage, die sich mir hier stellt, ist: Sollte diese Lücke nicht geschlossen und klargestellt werden, ob <fieldset> nur für Formulare anzuwenden ist?
Die ursprüngliche, »eigentliche« Bedeutung von fieldset ist meiner Meinung nach eindeutig definiert und bei Beachtung dieser befindet man sich auf der sicheren Seite, weil sie Kompatibilität gewährleistet. Du kannst natürlich auf W3C-Listen nachfragen, ob einerseits die verallgemeinernde Übertragung im Sinne der Erfinder war und ob andererseits solche Konstrukte aufgrund der Browserimplementationen praktisch ratsam sind.
Darüber hinaus werden (X)HTML-Formulare und die damit verbundenen (X)HTML-DTDs in der jetzigen Form sowieso nicht mehr weiterentwickelt, sodass die Lücke nicht mehr geschlossen wird. An die Stelle der heutigen Webformulare werden XForms treten, dort wäre anscheinend das group-Element http://www.w3.org/TR/xforms/slice9.html#id2628568 zuständig.
Und: Solange <fieldset> auch außerhalb von Formularen zulässig ist, verhalten sich die Browser da nicht korrekt und wenden <fieldset> entsprechend an
Das könnte ebenso als Fehlertoleranz gedeutet werden, es ist ihnen einfach gleichgültig, sie interpretieren auch unsinniges und ungültiges Markup. Browser verhalten sich gemessen an den Specs ständig inkorrekt und wahrscheinlich würde sich das Verhalten auch nicht ändern, wenn die DTD bzw. das Schema strenger wäre.
Problematisch ist eben, dass sie es treudoof in allen noch so unpassenden Fällen »entsprechend« und gewissenhaft anwenden. Es sind unzählige Szenarien denkbar, in welchen dem Benutzer unmissverständlich klargemacht wird, dass es sich um eine Formularfeldgruppe handelt.
oder setzt der Opera als einziger den Standard korrekt um und weigert sich?
Das denke ich nicht, denn fieldset ist ein gewöhnliches Blockelement und float sowie position sollten anwendbar sein (selbst wenn es ein replaced block element wäre). Abgesehen davon halte ich es durchaus für sinnvoll, mehrere Formulargruppen nebeneinander darzustellen, mit Tabellenlayout ist es schließlich auch möglich. Es ist m.E. definitiv ein Bug.
Nur ändert dies nichts an meiner Meinung, daß <fieldset> auch für Gruppierungen außerhalb von Formularen sinnvoll ist, da es eine einfache Alternative hierzu eben nicht gibt. Sicher kann ich den gewünschten Effekt mit Divs und CSS auch hinbekommen. Nur wird hier der Quellcode unübersichtlicher und die Gruppierung im übrigen nur optisch sichtbar, während <fieldset> auch einen logischen Zusammenhang herstellt.
Ich streite nicht ab, dass das grundlegende Konzept von fieldset/legend die Knotenbeziehungen und damit die logischen Zusammenhänge in deiner Bildergalerie bzw. deinem anderen Beispiel angemessen wiedergibt. Um solche allgemeinen Zusammenhänge im Markup wiederzugeben (und effektiv mit CSS ansprechen zu können), existieren jedoch passendere Methoden, beispielsweise Tabellen.
Gedachte Markupstruktur:
<galerie>
<eintrag>
<beschreibung>...</beschreibung>
<bildobjekt>...</bildobjekt>
</eintrag>
...
</galerie>
Mögliche (X)HTML-Umsetzung:
<table>
<tr>
<th>Bildbeschreibung</th>
<td><img src="bla" alt="bla" /></td>
</tr>
...
</table>
Das Problem ist selbstverständlich das Umformatieren dieser Tabelle hin zu der gewünschten Darstellung. Der logische Zusammenhang würde aber stimmen.
Grüße,
Mathias
--
<img src="http://validator.w3.org/images/vh20" border="0" alt="">