++

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Adventskalender 2023 – 19.12. – ++ und --

Wenn Du einex C-artige Sprache wie PHP oder JavaScript kennst, dann sind Dir ++ und -- als Inkrement- und Dekrement-Operatoren sicher bekannt. Aber vielleicht weißt Du nicht, dass es von Bedeutung ist, ob man den Operator vor oder hinter die Variable stellt? Lies es nochmal nach!

Auch CSS hat den doppelten Bindestrich für sich entdeckt. Allerdings nicht zum Rechnen, sondern zur Deklaration von Custom propertys. Die sind ungeheuer nützlich, um magische Werte wie Farben oder Abstände nur einmal in Stylesheet schreiben zu müssen. Aber es sind keine Variablen, auch wenn man das gerne mal behauptet.

Ach ja. Sitzt Du bequem? Hast Du ein kühles Bier (oder eine Cola) zur Hand? Oder einen leckeren Früchtepusch? Einen Glühwein? Sehr schön. Prost – lass mich Dir eine Geschichte erzählen. Es ist doch Advent!

Früher, als das Web noch Wild und Frei war und das W3C noch etwas zu sagen hatte, da war HTML als eine Anwendung der eierlegenden Wollmilchsau namens SGML spezifiziert. Und in diesem Zusammenhang war es so, dass <! ... > Dinge einschloss, die zum abstrakten Teil von SGML gehören (also der, mit dem HTML definiert wird), und darin Kommentare mit -- gebildet wurden. Der Kommentar selbst musste auch noch von Leerstellen umgeben sein, oder ganz am Anfang oder Ende des SGML-Tags stehen.

Diese Kommentare fanden ihren Weg von SGML nach HTML. Aber weil abstraktes SGML-Markup in einem HTML Dokument nicht erlaubt ist, durfte in einem <! ... > nichts außer DOCTYPE oder einem Kommentar stehen. Und weil hinter dem <! immer sofort der Tag-Name stehen muss, folgt daraus, dass ein Kommentar von <!-- eingeleitet werden muss. Es spricht aber nichts dagegen, hinter einem Kommentarende noch Leerzeichen zu setzen und dann erst das Tag mit > zu beenden.

Weshalb an einem Kommentar wie

  <!-- Hier beginnt der Inhalt -- >

formal überhaupt nichts auszusetzen war. Theoretisch zumindest. Die heutigen, von HTML 5 überzeugten Browser verstehen das nicht. Ob sie es früher verstanden haben? Wer weiß – wer hat schon noch einen verquirksten Internet Explorer oder Firefox auf seinem PC?

Diese Regeln haben aber auch zur Folge, dass eine Linie aus --Zeichen in einem Kommentar, also so etwas:

  <!---------------------------------->

unzulässig war. Denn auf einen Kommentar muss entweder das >-Zeichen oder Leerraum folgen.

Und heute? HTML 5 ist nicht mehr mit SGML definiert. Ein Kommentar beginnt mit <!-- und endet mit -->. Aus Browsersicht ist nichts dagegen einzuwenden, wenn Dein Kommentar so aussieht:

Völlig korrekter HTML 5 Kommentar
<!------ -- -- -- -- ICH PRÄSENTIERE: DEN KOMMENTAR!!! -- -- -- -- -- -------->

Die Regel, dass Doppelbindestriche oder Bindestrichlinien in einem HTML Kommentar unzulässig sind, ist mit den HTML 4 Browsern zu Grabe getragen worden. Es sei denn, man verlangt ausdrücklich nach ihr! Die Idee, ein HTML Dokument als XML-Dokument formulieren zu können, lebt als „HTML mit XML-Syntax“ fort, und wenn man XML verarbeiten will, muss man sich auch an seine Regeln halten. Wozu dann auch die aus SGML geerbte Regel für Kommentare gehört.

Vielleicht ist nicht alles richtig, was ich hier erzählt habe. Wen stört das schon, wenn die Geschichte gut ist. Aber der letzte Abschnitt stimmt auf jeden Fall!