2014-10-28 10 views
6

Standardmodus HTML forbids double hyphens in Kommentaren.Warum sind doppelte Bindestriche in HTML-Kommentaren ungültig?

<!-- This is a perfectly valid comment - I think. --> 
<!-- Invalid comment -- definitely. --> 

Es gibt drei zusätzliche Einschränkungen, die durch diese ungültige Beispiele erläutert:

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

Warum all diese kleinen Grenzfälle plagen spezifizieren? Insbesondere, warum verbieten doppelte Bindestriche?

+1

Da dies eine ist gültiger Kommentar '' – Cheery

+3

Das kommt von XML, denke ich. Das Rational, wenn ich mich richtig erinnere, war es, es mit genau einem Zeichen Lookahead nach dem aktuellen zu analysieren. Edit: Ich glaube nicht, dass ich mich richtig erinnere. Nicht sicher, woher ich das habe :-) – Cameron

+2

Interessanterweise

Dies ist ein Test ... des Notrufsystems.

'rendert als * Dies ist ein Test ... des Notfall-Broadcast-System. * Ganz gut in den neuesten Versionen von Chrome und Firefox. – J0e3gan

Antwort

6

[Definition: Kommentare in einem Dokument außerhalb anderen Markup erscheinen überall kann; Darüber hinaus können sie im Dokumenttyp an den von der Grammatik erlaubten Stellen angezeigt werden. Sie sind nicht Teil der Zeichendaten des Dokuments ; Ein XML-Prozessor kann, muss aber nicht, für eine Anwendung ermöglichen, um den Text von Kommentaren abzurufen. Bei Kompatibilität darf die Zeichenfolge "-" (Doppel-Bindestrich) nicht innerhalb Kommentare auftreten.] Parameter Entity Referenzen dürfen nicht innerhalb Kommentare erkannt werden.

Die Grammatik erlaubt keinen Kommentar in endend --->

Es ist ein Merkmal von XML nur, dass der XML, um sicherzustellen, eingeschlossen zu sein scheint mit SGML kompatibel bleibt http://www.w3.org/TR/REC-xml/#sec-comments

+2

Dies ist eine gute Antwort. HTML5 musste eine gemeinsame Teilmenge der XML-Kommentarsyntax, der SGML-Kommentarsyntax und der von den Browsern unterstützten Kommentarsyntax sein, von denen alle 3 unterschiedlich waren. Von den 3 war SGML wahrscheinlich am wenigsten wichtig, da Browser die SGML-Kommentarsyntax nie richtig unterstützten (obwohl Validatoren dies taten). Aber das resultierende Produkt sollte tatsächlich in einem SGML-Parser funktionieren. – thomasrutter

Verwandte Themen