HTML 5 und XHTML 5 im Vergleich (WHATWG)
Ăśbersetzung eines Artikels der WHATWG vom 27. Februar 2007Â (Feed).
Bitte beachten Sie, dass die hier vorliegenden Informationen auf der aktuellen Spezifikation von (X)HTML 5 basieren. Manche der Themen lassen sich nicht auf vorherige Versionen von HTML anwenden. (Anmerkung des Übersetzers: Zeitgleich ermöglicht dieses Dokument auch einen groben Vergleich zwischen den zurückliegenden HTML- und XHTML-Spezifikationen.)
Inhalt
Unterschiede zwischen HTMLÂ 5 und XHTMLÂ 5
Obwohl HTML und XHTML Ähnlichkeiten in ihrer Syntax zu haben scheinen, unterscheiden sie sich in mehrerlei Hinsicht erheblich.
MIME-Typen
- XHTML muss mit einem XML-MIME-Typ wie
application/xml
oderapplication/xhtml+xml
ausgeliefert werden. - HTML muss als
text/html
ausgegeben werden.
Der MIME-Typ bestimmt, welche Art von Dokument benutzt wird. Wenn Sie versuchen, XHTML als text/html
zu senden, verwenden Sie tatsächlich nur HTML, möglicherweise mitsamt Syntaxfehlern.
Technisch gesehen und gemäß Spezifikation darf XHTML 1.0 als text/html
ausgeliefert werden, aber aufgrund obenstehenden Umstands wird ein solches Dokument als HTML- und nicht als XHTML-Dokument betrachtet.
Parsen (Syntaxanalyse)
XHTML unterliegt XML-Syntaxanalyseanforderungen. HTML gebraucht seine eigenen, die vielmehr dem ähneln, wie Browser tatsächlich heutzutage HTML handhaben.
-
In XHTML sind Wohlgeformtheitsfehler (»Well-Formedness Errors«) fatal. In HTML sind die Fehlerhandhabungsregeln wesentlich toleranter. Wohlgeformtheitsfehler, die ebenso Syntaxfehler in HTML darstellen, sind die folgenden:
- Nicht kodierte kaufmännische Und (
&
anstatt&
) und »Kleiner als«-Zeichen (<
anstatt<
) (nicht aufCDATA
anwendbar). -
Kommentare, die zusätzliche Bindestrichpaare beinhalten oder mit einem Bindestrich enden, wie
<!-- syntax -- error -->
oder<!-- syntax error --->
.
- Inkongruente, unpassende »End-Tags« (nicht anwendbar auf Elemente mit optionalen Tags).
- Nicht geschlossene Elemente.
- Unerwartete Zeichen innerhalb von oder vor Attributsnamen.
- Unerwartetes Vorkommen von EOF.
- Unerwartete Zeichen vor dem
DOCTYPE
-Namen. - Fehlender
DOCTYPE
-Name. - Ein
PUBLIC
-Identifikator in einemDOCTYPE
ohneSYSTEM
-Identifikator. (Anmerkung: Die Benutzung eines der beiden entspricht einem Syntaxfehler in HTMLÂ 5; in XML ist nur demSYSTEM
-Bezeichner gestattet, allein vorzukommen.) - End-Tags mit Attributen.
- Unerwartete End-Tags (in HTML kann ein unerwartetes
</br>
oder</p>
dafĂĽr sorgen, dass ein davorstehendes Start-Tag impliziert wird).
- Nicht kodierte kaufmännische Und (
-
Die interne Teilmenge ist in XML erlaubt, aber bedeutungslos (und verboten) in HTML.
- In manchen Fällen würde eine interne Teilmenge in HTML teilweise inline gerendert werden.
- Die Zeichensequenz
]]>
entspricht in XHTML, sofern sie nicht das Ende einerCDATA
-Sektion markiert, einem Wohlgeformtheitsfehler, ist in HTML jedoch valid. - XHTML:
<![CDATA[…]]>
kennzeichnet einenCDATA
-Abschnitt. In HTML ist dies ein falscher Kommentar. <?foo …?>
entspricht in XHTML einer Verarbeitungsanweisung (»Processing Instruction«), stellt in HTML jedoch einen falschen Kommentar dar.- In HTML sorgt der abschließende Schrägstrich, der zur Syntax leerer Elemente gehört, für einen Parsefehler bei nicht-leeren Elementen (siehe unten), wird aber immer ignoriert.
- In HTML werden
script
- undstyle
-Elemente alsCDATA
geparst. (Anmerkung: Die Definition vonCDATA
unterscheidet sich dabei von der in XML.) In XML werden diese als normale Elemente geparst, was bedeutet, dass Kommentare als echte Kommentare behandelt werden, und Sachen, die wie Start-Tags aussehen, sind auch tatsächlich Start-Tags. - In HTML werden die
title
- undtextarea
-Elemente alsRCDATA
geparst. (Anmerkung: Die Definition vonRCDATA
unterscheidet sich dabei von der in SGML, und es gibt keinRCDATA
in XML.) - In HTML wird das
noscript
-Element, sofern Scripting erlaubt sind, alsCDATA
geparst. Wenn Scripting nicht aktiviert ist, wird es alsPCDATA
geparst. In XHTML hat dieses Element keinen Effekt und kann nicht dazu verwendet werden, Inhalte darzustellen, wenn Scripting deaktiviert ist. - In HTML werden die
iframe
-,noembed
- undnoframes
-Elemente alsCDATA
geparst. In XHTML werden sie als normale Elemente geparst und sorgen dementsprechend nicht dafĂĽr, dass ihre Inhalte nicht verwendet werden. - Leerraumzeichen in Attributsnamen werden in XHTML zu Leerzeichen normalisiert.
- Elemente mit optionalen Tags werden unter bestimmten Bedingungen impliziert.
- In HTML werden
base
-,link
-,meta
-,style
- undtitle
-Elemente mit innerhalb desbody
vorkommenden Tags in denhead
verschoben. In XHTML bleiben sie an der Stelle, an der sie angegeben wurden. - In HTML werden Tags fĂĽr bestimmte Elemente, die auĂźerhalb des Kontexts erscheinen, ignoriert. Dies betrifft
caption
,col
,colgroup
,frame
,frameset
,head
,option
,optgroup
,tbody
,td
,tfoot
,th
,thead
undtr
. - Das
plaintext
-Element besitzt spezielle Parseanforderungen in HTML (es ist jedoch verboten). - In HTML gibt es noch viele andere besondere Handhabungen von Sonderfällen und Fehlerbedingungen, die hier nicht alle aufgeführt werden.
Syntax
- In HTML ist der
DOCTYPE
erforderlich, während er in XHTML optional ist. - In XHTML sind Tag- und Attributsnamen case-sensitive. In HTML ist die Schreibweise unerheblich.
-
In XHTML erfordern nicht-leere Elemente sowohl ein öffnendes als auch ein schließendes Tag. In HTML erlauben bestimmte Elemente die Auslassung von einem von beiden oder beiden:
html
(beide);head
(beide);body
(beide);li
(End-Tag);dt
(End-Tag);dd
(End-Tag);p
(End-Tag);colgroup
(beide);thead
(End-Tag);tbody
(beide);tfoot
(End-Tag);tr
(End-Tag);td
(End-Tag);th
(End-Tag).
-
In XHTML dĂĽrfen leere Elemente entweder die Syntax fĂĽr leere Elemente verwenden (
<br/>
) oder ein dem Start-Tag unmittelbar folgendes End-Tag besitzen (<br></br>
). In HTML ist die Leeres-Element-Syntax (abschließender Schrägstrich) bei den entsprechenden Elementen gestattet, bei anderen Elementen aber verboten. Dieses Vorgehen mit leeren Elementen dient jedoch keinem Zweck und kann unterlassen werden. Schließende Tags für leere Elemente sind in HTML nicht zulässig.base
,link
,meta
,hr
,br
,img
,embed
,param
,area
,col
undinput
.- Die folgenden Elemente werden aufgrund der Parseanforderungen als leer behandelt, aber der abschließende Schrägstrich ist nicht erlaubt, da sie obsolet und nicht standardisiert sind:
basefont
,b
gsound
,spacer
undwbr
. (Da diese Elemente nicht erlaubt sind, macht dies aber kaum einen Unterschied.)
- HTML lässt Attributsminimierung zu (das Auslassen des Attributswerts), XHTML nicht.
- HTML erlaubt den Gebrauch nicht in AnfĂĽhrungszeichen gesetzter Attributswerte, XHTML nicht.
- XHTML erlaubt den Gebrauch von
CDATA
-Sektionen, HTML nicht. - XHTML gestattet die Verwendung von Verarbeitungsanweisungen, HTML nicht.
-
In HTML sind alle Entitätsreferenzen vordefiniert und erfordern keine DTD. Da es jedoch keine DTD für XHTML 5 gibt, können keine Entitätsreferenzen in XHTML verwendet werden (ausschließlich der fünf vordefinierten Referenzen:
&
,<
,>
,"
und'
).- Sie dĂĽrfen bei Gebrauch Ihres eigenen, validierenden Parsers Ihre eigene DTD bereitstellen; seien Sie sich jedoch darĂĽber im klaren, dass Browser keine validierenden Parser verwenden und die DTD nicht lesen werden.
- Der gĂĽltige Satz von Unicode-Zeichen in XMLÂ 1.0 ist gegenĂĽber dem in HTML begrenzt.
- Namensraumpräfixes sind in XHTML erlaubt, aber in HTML verboten.
Markup
-
Die Namensraumdeklaration (
xmlns
-Attribut) ist in XHTML erforderlich. Dasxmlns
-Attribut darf zudem auf demhtml
-Element in HTML erscheinen, unter der Bedingung, dass es den Werthttp://www.w3.org/1999/xhtml
hat.<html xmlns="http://www.w3.org/1999/xhtml">
.- In HTML hat das
xmlns
-Attribut keinen Effekt. Es entspricht gewissermaßen einem »Talisman«. Es ist lediglich gestattet, um die Migration von und zu XHTML etwas leichter zu machen. Wenn es von einem HTML-Parser geparst wird, resultiert das Attribut in einem »Null«-Namensraum. - In XML (zusammen mit einem XML-Namensraum-bewussten Parser) stellt das
xmlns
-Attribut einen Teil des Namensraumdeklarationsmechanismus dar, und ein Element kann gar keinxmlns
-Attribut im »Null«-Namensraum besitzen.
- XHTML erlaubt den Gebrauch von Non-XHTML-Elementen und -Attributen (in unterschiedlichen Namensräumen). HTML erlaubt dies nicht.
- XHTML verwendet das
xml:lang
-Attribut, HTML gebraucht statt dessenlang
. - XML-ID fĂĽhrt
xml:id
ein, das zusammen mit XHTML verwendet werden kann. In HTML hat dies keinen Effekt. - Das
noscript
-Element darf in HTML eingesetzt werden, ist aber in XHTML verboten. - HTML verwendet das
base
-Element, XHTML gebraucht statt dessen dasxml:base
-Attribut. - In XHTML dĂĽrfen
p
-Elemente strukturierte Inline-Elemente beinhalten, einschlieĂźlichblockquote
,dl
,menu
,ol
,ul
,pre
undtable
. Bei der HTML-Serialisierung ist dies aufgrund von Abwärtskompatibilitätseinschränkungen nicht möglich (obwohl durch DOM-Manipulation durchführbar). - In XHTML dürfen
table
-Elementetr
-Kindelemente beinhalten. Bei der HTML-Serialisierung ist dies aufgrund von Abwärtskompatibilitätseinschränkungen nicht möglich (obwohl durch DOM-Manipulation durchführbar).
Zeichenkodierung
- In XHTML darf die XML-Deklaration verwendet werden, um die Zeichenkodierung (Encoding) zu spezifizieren. Die XML-Deklaration ist in HTML verboten.
- Statt dessen darf in HTML das
meta
-Element verwendet werden. Dashttp-equiv
-Attribut desmeta
-Elements ist in XHTML verboten und wird, falls vorhanden, ignoriert. - Den XML-Regeln entsprechend ist die Standard-Zeichenkodierung fĂĽr XHTML
UTF-8
oderUTF-16
. Falls in HTML die Kodierung nicht spezifiziert wird, sollte sie durch implementierungsspezifische Heuristiken oder Fallback auf einen Standardwert bestimmt werden. (Anmerkung: Dieser Abschnitt der Spezifikation wurde noch nicht fertiggestellt.)
Scripting
document.write()
unddocument.writeln()
können nicht in XHTML, aber in HTML eingesetzt werden.- In XHTML erfordert der Gebrauch der
innerHTML
-Eigenschaft, dass die Zeichenkette ein wohlgeformtes XML-Fragment darstellt. -
DOM-APIs sind in XHTML case-sensitive, während sie in HTML zum Teil case-insensitive sind. (Dies gilt nicht für Elemente, die sich nicht im HTML-Namensraum befinden.)
Element.tagName
,Node.nodeName
undNode.localName
geben den Wert in GroĂźschrift zurĂĽck.Document.createElement()
ist case-insensitive (die kanonische Form ist in Kleinschrift).Element.setAttributeNode()
ändert den Attributsnamen in Kleinschrift.Document.getElementsByTagName()
undElement.getElementsByTagName()
sind case-insensitive.Document.renameNode()
: Wenn der neue Namensraum dem HTML-Namensraum entspricht, muss der neue qualifizierte Name in Kleinschrift konvertiert werden, bevor die Umbenennung stattfindet.
-
In HTML kreiert
Document.createElement()
ein Element im HTML-Namensraum. In XML (einschließlich XHTML) wird der Namensraum sowohl durch DOM 2 als auch DOM 3 als »Null« definiert.- In XHTML fehlt es Browsern in dieser Hinsicht an Interoperabilität. In Firefox ist der Namensraum abhängig vom MIME-Typ, in Opera hängt er vom Root-Element ab, und in Safari ist er immer Null.
Stylesheets
- Selektoren, wie sie in CSS verwendet werden, sind in XHTML abhängig von der Schreibweise (case-sensitive), sind in HTML jedoch fallunabhängig.
- CSS erfordert eine spezielle Handhabung des
body
-Elements in HTML, um den Hintergrund der Leinwand zu gestalten, die nicht fĂĽr XHTML gilt.
Unterschiede zwischen HTMLÂ 4.01 und HTMLÂ 5
MIME-Typ
Sowohl HTMLÂ 4.01 als auch HTMLÂ 5 verwenden text/html
.
Content-Type: text/html; charset=UTF-8
Parsen von HTML
- HTMLÂ 2.0 bis HTMLÂ 4.01 basieren formell auf SGML, aber von Browsern wurden keine SGML-Parser implementiert. Beachten Sie hierzu 4.2 (SGML) und B.3 (SGML-Implementierungsanmerkungen) der HTML-4.01-Spezifikation. Diese entsprechen non-normativen Abschnitten der Spezifikation, stellen aber bereits den Unterschied zwischen HTML- und SGML-User-Agents heraus.
- HTML 5 wird durch seine eigenen Parseanforderungen definiert, die darauf beruhen, wie Browser tatsächlich mit HTML umgehen.
Markup
- Liste aller HTML-4.01-Elemente.
- Liste aller HTML-4.01-Attribute.
- Bisher gibt es noch keine Liste der Elemente und Attribute fĂĽr Web Applications 1.0.
Obsolete Attribute
Manche der in HTML 4 definierten Elemente werden nicht in HTML 5 berücksichtigt. Es folgt eine aktuelle Liste der obsoleten Attribute (diese kann sich ändern, bitte beachten Sie die Spezifikation).
html@version
;head@profile
;a@rev
,link@rev
;a@target
,area@target
,base@target
,form@target
(wie in Web Forms 2.0 erwähnt),link@target
;a@charset
,link@charset
,script@charset
;table@summary
;td@headers
,th@headers
;td@axis
,th@axis
;param@valuetype
;object@standby
;meta@scheme
;object@archive
.
Dazu umfasst HTML 5 keins der präsentationsbezogenen Attribute, die es in HTML 4 gibt (einschließlich der von table
). Jegliche bei Elementen definierten Attribute, die es nicht in HTMLÂ 5 gibt, gibt es (offensichtlich) auch nicht in XHTMLÂ 5.
Obsolete Elemente
Die folgenden Elemente gibt es in HTMLÂ 4, werden aber nicht in HTMLÂ 5 spezifiziert:
acronym
(verwenden Sie statt dessenabbr
);applet
(verwenden Sie statt dessenobject
);basefont
;big
;center
;dir
;font
;frame
;frameset
;isindex
;noframes
;noscript
(nur in XHTML);s
;strike
;tt
;u
.
Zeichenkodierung
HTML-4-Algorithmus
- HTTP-
charset
-Parameter in einemContent-Type
-Feld; meta
-Deklaration mit aufContent-Type
gesetztemhttp-equiv
-Attribut und einem fĂĽrcharset
gesetzten Wert;charset
-Attribut bei einem eine externe Ressource designierenden Element.
Quelle: 5.2.2 (Angabe der Zeichenkodierung), HTML-4.01-Spezifikation.
HTML-5-Algorithmus
Dieser ist in der Spezifikation gegenwärtig noch nicht definiert. Beachten Sie bitte die Dokumentation zur Zeichenkodierungsermittlung.
Ähnliche Themen
Das könnte dich ebenfalls interessieren:
- Prinzipien der Webentwicklung: Entwickeln Sie für was ist, nicht was sein könnte
- XHTML- und CSS-Code-Richtlinien bei GMX
- The Web Development Glossary
Schwerpunkt: Webentwicklung.

Freund von optimiertem HTML? Probiere Upgrade Your HTML (2019–2022). Gutes HTML ist nicht einfach. Minimales HTML wird unterschätzt. HTML aus dem Alltag kann man oft verbessern. Diese Buchserie macht das. Erhältlich bei Amazon, Apple Books, Kobo, Google Play Books und Leanpub.