Tim Tepaße: eigene Attribute, Kommentare, HTML 4.01 -> HTML 5

Beitrag lesen

Ich wäre Dir sehr verbunden, wenn Du mir weiterhelfen könntest, wie ich in einem HTML-Dokument einen "Kommentar" notieren kann für die Attribute eines Elementes, der vom Backend-System ausgetauscht werden muss, aber keinen Schaden anrichtet, wenn das Backend ihn übersehen hat auzutauschen ...

Wenn Du ein Backend-System hast, dann hast Du doch bestimmt ein Templatesystem? Die meisten dieser sind dann so ausgereift, dass sie selbst eigene Kommentare haben. Smarty, so hab ich gerade ergoogelt, hat z.B. eine Kommentarsyntax, die keinen katastrophalen Schaden anrichten würde, stände sie aus irgendeinem Grund in einem Attributwert.

Oder gleich selbstsprechende Variablen nutzen.

Ist es richtig, dass bei HTML5 ein Attribut attrib="attrib" zulässig wäre?

Was heisst denn „zulässig“?

Wenn wir uns an XML erinnern, hat das einen Unterschied zwischen zwei Formen von Zulässigkeit gemacht, zwischen Wohlgeformtheit und Validität. Wohlgeformte Dokumente halten sich an die Syntaxregeln von HTML 4 oder XHTML 1, keine überlappenden Elemente, Attribute mit nur einem Wert und bitte in Anführungszeichen, all das Zeug. Aber <a attribute="attribute"> könnte auch in XHTML-1-Dokumenten wohlgeformt also quasi zulässig sein. Mal ganz abgesehen davon, dass man auf DOM-Ebene Dank [gs]etAttribute(NS)? eh machen kann, was man will.
Validität bedeutet, dass jedes Syntaxelement auch bitte eine Definition in der DTD besitzen sollte, also dem begrenzten Vorrat von HTML-Elementen und deren jeweiligen Attributen entspringt.

HTML5 hat keine DTD. Und nu? Wohlgeformtheit existiert auch dort. Der Parser parst das Dokument und was er erfolgreich geparst hat, ist per Definition wohlgeformt. Und Validität gibt es nicht per DOM sondern durch Conformance-Checking, d.h. haufenweiser kleiner Regeln, die durch die Spec verstreut sind und von jemanden in maschinell überprüfbare Regeln übersetzt wurde oder letztendlich durch menschliche Augen. Sorry, geht nicht nun mal nicht besser.

attribute=attribute wird sowohl vom HTML5-Parsing-Algorithmus als auch von XML-Parsern erfolgreich geparst und in DOM umgewandelt und Du kannst mit getAttribute() darauf zugreifen. Das ist Zulässigkeit auf der Form von Wohlgeformtheit. Es ist nur nicht sinnvoll.

Es ist nicht sinnvoll, weil es gegen das HTML-Ökosystem schwieriger macht, sprich Interoperabilität und Zukunftsplanung. Die Spec rät davon ab und bietet alternative Mechanismen an, XML-Namensräume in XML-Syntax oder in HTML5-Syntax das Präfixen des Attributes mit x-, sprich x-attribute=attribute. Dinge mit X werden nie offiziell spezifiziert werden.

Es ist nicht sinnvoll, weil es einen weiteren definierten Mechanismus gibt, wo man Browsern und Spec-Schreibern nicht ins Gehege kommt. Data-Attribute, die alle das Präfix "data-" haben: <div data-attribute="value" data-foo="bar">. Und man kann in JS mit der dataset API bei Elementen bequem darauf zugreifen: document.querySelector("div").dataset.foo = "baz".

Wie aufwändig ist die Umstellung von HTML 4.01 auf HTML5?

<!doctype html>

Muss ich da ganz von vorne anfangen?

Nein, aber Du lernst wieder viel Neues dazu.