Ja, HTML ist kein Textbearbeitungs-System. HTML ist ein „ich stelle alles (un)mögliche dar“.
Das können dann (one-pager) „Notizzettel“ sind, die ggf. eine Überschrift haben, welche mehr oder weniger den Sinn und Zweck der Notizen beschreibt.
Aber eben auch „der große Brockhaus“, dann aber nicht gerade als einzelne (Bildschirm-)Seite.
Nicht nur beim erwähnten „Büchlein in vielen Bänden“ (hallo DNA! Schade, daß deine fünfteilige Trilogie …) steht der Titel aber nicht auf jeder Seite. Manchmal sogar überhaupt nur auf dem Einband (oder in diesem, wenn man die Umschlag-Seiten o.ä. auch zu diesem zählt).
Und dann gibt es ja sogar(?) noch die Möglichkeit, daß etwas wie
article {
h1, h2 { font-size: 2em; }
h3, h4 { font-size: 1.75em; }
h5, h6 { font-size: 1.5em; }
h1, h3, h5 { font-weight: bolder; }
}
main {
h1, h2, h3 { … }
…
}
section {
…
}
nav {
…
}
gleich mehrere Arten und/oder Darstellungsformen der Überschriften mit sich bringt …
Ja, bei vielen, sehr vielen, Seiten wird „ein h1 ist genug“ tatsächlich genug sein. Aber mir scheint ja schon die Benennung zu sagen: das schließt andere Ansätze nicht aus. Denn: wieso dann überhaupt <h1> und nicht gleich <h> — oder, dann vmtl. besser, <title> (als Element für <body>). Da spräche, würde ich sagen, schon die Benennung für ein „es kann nur Einen geben“.
Für mich sind die „hs“ jedenfalls Überschriften mit Hierarchie-Stufe. Die Hierarchie-Stufen sollten aus ähnlichen Gründen berücksichtigt werden wie auch z.B. diese „modernen“ <main>, <article> usw. usf. Eben wegen der Strukturierung.
Inwieweit diese Dinge sinnvoll eingesetzt oder kombiniert werden (können) ist eine andere Frage. Eine Frage, die sich aber grundsätzlich bei so ziemlich allen Dingen stellt: nur weil man Fahrzeuge mit mehr als zwei Achsen bauen kann, heißt das nicht, daß man „dem Tyrrell zeigt, wo der Hammer hängt“ (auch da wurde man anscheinend eines besseren belehrt …) und deshalb einen Zweisitzer mit 10 …
Da fällt mir ein: gibt’s da nicht JS-Konstrukte, die immer so aussehen:
dings = query(irgendwas);
machWasMit(dings[0]); // ok
machWasMit(dings[1]); // Error: dings is undefined!
Also Funktionen, die regelmäßig ein Objekt liefern (das zur Not ja auch ein Array sein könnte), dies aber unbedingt in ein Array einwickeln.
„Es kann nur ein <body> geben“? Jein. Beim „lockeren“ Herumexperimentieren bekam ich schon ab und an mal
…
<body> … </body>
<body> … </body>
im Inspektor vorgesetzt.
Und bei getElementById ist es fast schon anders herum: es liefert einfach immer nur die zuerst gefundene Stelle. Daß eine Id mehrmals in einer Seite eingetragen ist, wird „fehlertollerant“ ignoriert, könnte aber ggf. ein Skript aus dem Tritt bringen: einfach mal ein Stück in ein DocumentFragment kopieren/auslagern und schon könnte getElementById zwei oder mehr Treffer einsammeln. Eins hier, eins da … — Was dann ein grundsätzliches Verbot „darf nur einmal“ tatsächlich begründet.