Hallo,
Diese Zeile ist jedoch in keiner Form in der HTML-DTD enthalten - dort werden *alle* Entities nochmal *separat* vom SGML-Standard definiert und eingebunden:
Gibt es einen plausiblen Grund dafür, dass man nicht einfach die SGML-Entities übernommen hat?
Keine Ahnung, frag die HTML-WG.
Könnte aber etwas damit zu tun haben, dass die SGML-Spezifikation (zumindest soweit ich sie verstanden habe, ich habe sie mir nicht GENAU angesehen) losgelöst von Zeichensätzen ist. SGML verlangt lediglich, dass eine Anwendung von SGML definiert, welchen Zeichensatz sie verwenden will. HTML selbst definiert ja ISO 10640 (a.k.a. Unicode) als Zeichensatz von HTML. Achtung: Zeichensatz != Zeichenkodierung, d.h. der Zeichensatz von HTML-Dokumenten ist *immer* UCS (Universal Character Set), die Zeichenkodierung, d.h. wie die Zeichen selbst auf die Platte geschrieben werden, kann man selbst festlegen (und dort z.B. ASCII, ISO-8859-1, UTF-8, etc. angeben) - näheres dazu unter http://www.w3.org/TR/html401/charset.html.
Wenn jetzt jedoch Entities in der SGML-Spezifikation definiert werden, dann können diese Entities eben *nicht* wie in der HTML-Spezifikation als &#XX; definiert werden, weil eben noch kein Zeichensatz ausgewählt ist, der Code-Points für die entsprechenden Zeichen definieren würde.
Wie legt dann die SGML-Spezifikation die entsprechenden Entities dann überhaupt fest? Eben über dieses SDATA - und das, was in den eckigen Klammern im SDATA drin steht, bezieht sich auf irgend einen ISO-Standard (der *nicht* Unicode ist), um festzulegen, welche Zeichen gemeint sind.
Das Problem ist, dass alle Hersteller von HTML-Verarbeitungstools (inkl. Browsern) dann eben diesen ISO-Standard kennen müssten *und* zudem noch ein Mapping dieses ISO-Standards auf das aktuelle Betriebsystem besitzen müssten. Ferner weiß ich nicht, ob der ISO-Standard (ISO 6937 btw. - kostet 132 CHF ~ 82 €, wenn Du interessiert bist) sich überhaupt komplett in den Unicode-Standard, der sich ja immer weiter durchgesetzt hat, hineinmappen lässt. Wie auch immer: Wenn jemand die HTML-Spezifikation liest und dann aus den .ent-Dateien die Codepoints herausliest, dann kann er unter jedem aktuellen Betriebsystem sofort zuordnen, welches Zeichen damit gemeint ist - Unicode ist halt einfach etabliert. Wenn HTML die SGML-Entities übernommen hätte, dann wäre es viel mehr Arbeit, alle Entities aufzulösen (zumal man das mittels der .ent-Dateien sogar automatisiert machen kann - bei den in der SGML-Spec definierten Entities müsste man das manuell durchgehen).
Gut, Du könntest auch fragen, warum die HTML-Spec-Autoren nicht einfach alle SGML-Entities übernommen haben in ihre .ent-Dateien und sie sich *einmal* die Mühe gemacht haben, ein Mapping zu erstellen - gute Frage, auch darauf kann ich Dir keine Antwort geben, frag die HTML-WG.
Viele Grüße,
Christian