HTML 5 und XHTML 5 im Vergleich (WHATWG)
Ăbersetzung eines Artikels der WHATWG vom 27. Februar 2007. Schwerpunkt: Webentwicklung (RSS-Feed fĂŒr alle Themen).
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 BeitrĂ€ge
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 3K

Freund von optimiertem HTML? Probier Upgrade Your HTML (2019â2024). 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.