Ist XHTML5 tot oder ist es nur ein Synonym für HTML5?

87

Was ist mit XHTML5 passiert?

http://www.w3.org/TR/html5/

Diese Seite ist ein Entwurf für xhtml5 und html5? Es gibt also keinen Unterschied zwischen diesen Doktypen?

W3C
quelle
1
Ab dem 08.12.2014 scheint W3C immer noch am Standard zu arbeiten. w3.org/TR/html5 und w3.org/TR/html5/the-xhtml-syntax.html wurden am 28.10.2014 aktualisiert.
Russel Winder
6
Heutzutage ist XHTML 2015 ein W3C-Standard! ... Siehe aktualisierte Diskussion
Peter Krauss
2
Sie haben die falsche Antwort akzeptiert. Die Antwort von vaxquis ist die richtige Antwort.
JacquesB

Antworten:

77

Im Jahr 2012 war zum Zeitpunkt des Schreibens klar, dass W3C beschlossen hat, XHTML für HTML 5 aufzugeben. Diese Entscheidung war aus mehreren Gründen motiviert:

  • Nur wenige Menschen interessierten sich wirklich für XHTML. Die meisten Websites wurden in einfachem HTML geschrieben.

  • Noch weniger haben wirklich verstanden, worum es bei XHTML geht und wie man es benutzt. Zu viele Websites, die vorgab, XHTML zu liefern, verwendeten stattdessen falsche Header Content-Type: application/xhtml+xml.

  • Selbst wenn Sie vollständig verstehen, was XHTML ist und was die Überschriften sein müssen, ist die Sache wirklich schwierig mit einigen beschissenen Browsern, die den application/xhtml+xmlInhaltstyp nicht akzeptieren / unterstützen . Dies bedeutete, dass Sie die Kopfzeile je nach Browser ändern mussten.

  • Der XML-Teil von XHTML verursachte auch einige seltsame Situationen, die die Entwickler lösen mussten. Eine INVALID_STATE_ERR: DOM Exception 11Meldung wird angezeigt, wenn Sie éeinem Element auf der XHTML-Seite einen Text zuweisen, der HTML-Zeichen (wie ) enthält. Wenn Sie diesen Fehler mit seiner sehr hilfreichen Meldung in einer großen Webanwendung nach dem Ausführen einer AJAX-Anforderung feststellen, wissen Sie nicht, ob JQuery, AJAX oder etwas anderes daran schuld ist.

  • Das Schreiben von HTML 5-Code bedeutet nicht, dass die Tags überall verwechselt werden. Wenn Sie sich leidenschaftlich für XML und XHTML interessieren, können Sie dennoch HTML 5-Code schreiben, der XML sehr nahe kommt.

  • In den Anfängen von Mobiltelefonen war XHTML für die mobilen Geräte interessant, die nicht sehr leistungsfähig waren. Das Parsen von XML ist viel einfacher als HTML. Bei Dual-Core-Mobilgeräten spielt es keine Rolle, ob sie gültiges XML oder schmutziges HTML mit vielen Hacks und gemischten Tags analysieren müssen.

Die Spezifikation von Oktober 2014 erwähnt die XHTML-Syntax . Derzeit ist unklar, ob es eine neue XHTML- Sprache gibt (keine Syntax ), und falls ja, wie wird XHTML positioniert sein oder ob der neue XHTML-Standard von den gängigen Browsern übernommen wird.

Arseni Mourzenko
quelle
11
Ich denke, das einzige, was Ihre Antwort fehlt, ist ein Verweis auf Polyglot Markup
yannis
2
Sie können HTML5 jedoch als XML bereitstellen und die Vorteile einer strengeren Syntax nutzen.
Erik Reppen
3
@ErikReppen, aber Sie verlieren den Nutzen von Entity-Referenzen wie 
Mr Lister
4
Eine schreckliche Entscheidung. Wir haben das XSL-Tool, das mit XML verfügbar gewesen wäre, weggeworfen.
Mihai Danila
5
Diese Aussage ist falsch. Das W3C hat XHTML in HTML5 nicht aufgegeben. Die XHTML-Syntax, das Vokabular und die APIs
Rob
32

XHTML5 ist ein Synonym für "HTML5 serialisiert als XML".

Es gibt verschiedene konkrete Syntaxen, die zum Übertragen von Ressourcen verwendet werden können, die diese abstrakte Sprache verwenden, von denen zwei in dieser Spezifikation definiert sind.

...

Die zweite konkrete Syntax ist die XHTML-Syntax, bei der es sich um eine Anwendung von XML handelt. Wenn ein Dokument mit einem XML-MIME-Typ wie application / xhtml + xml übertragen wird, wird es von Webbrowsern als XML-Dokument behandelt und von einem XML-Prozessor analysiert. Die Autoren werden darauf hingewiesen, dass die Verarbeitung für XML und HTML unterschiedlich ist. Insbesondere verhindern selbst geringfügige Syntaxfehler, dass ein als XML bezeichnetes Dokument vollständig gerendert wird, während sie in der HTML-Syntax ignoriert werden. Diese Spezifikation definiert Version 5.0 der XHTML-Syntax, bekannt als "XHTML 5".

Außerdem gibt es hier ein schönes Dokument zum Schreiben von HTML5-Polyglots (Seiten, die sowohl als reguläres HTML5 als auch als XML serialisiert werden können):

http://dev.w3.org/html5/html-polyglot/html-polyglot.html#bib-HTML5

Und sogar ein Validator!

http://html5.validator.nu/

Heutzutage heißt es selten XHTML5 (und wird wahrscheinlich noch seltener verwendet), da es im Grunde immer noch HTML5 ist, aber es ist immer noch da.

Einfach ausgedrückt: Jede Änderung der HTML5-Spezifikation ist auch eine implizite, entsprechende Änderung von XHTML5.

vaxquis
quelle
10

HTML5 ist de facto und de jure Standard! XHTML gibt es standardmäßig auch.

HTML5 - Ein Vokabular und zugehörige APIs für HTML und XHTML

W3C-Empfehlung 28. Oktober 2014

Der Titel des Standards enthält die Zeichenfolge "und XHTML". Es handelt sich also um eine endgültige Entscheidung von W3C, HTML und XHTML zu einem einzigen Standard zusammenzuführen . und dieser Standard zeigt, wie man eine HTML-Datei in eine XHTML-Datei serialisiert und umgekehrt.

XHTML Teile und wichtige Hinweise:


Verstehen und benutzen

Wie von LF Sikos zusammengefasst

XHTML5 ist die XML-Serialisierung von HTML5. Die Syntax wird durch die HTML5-Spezifikation beschrieben. Man sollte jedoch nicht verwechseln, da XHTML5 eine Anwendung von XML ist. Mit anderen Worten, HTML5 und XHTML5 haben dasselbe Vokabular, aber unterschiedliche Analyseregeln.

HTML5-Dokumente können auch gültige XML-Dokumente sein. Dieses Markup wird oft als "polyglotte" Sprache bezeichnet. Dies ist die Überlappungssprache von Dokumenten, die gleichzeitig HTML5- und XML-Dokumente sind. HTML5- und XHTML5-Serialisierungen sind kompatibel. XHTML5 hat jedoch eine strengere Syntax. Darüber hinaus sind einige Teile von XHTML5 in HTML5 nicht gültig, z. B. Verarbeitungsanweisungen.

Also, streng genommen (und betonte , durch @vaxquis) „XHTML ist nur eine Syntax für XML - Serialisierung“, gibt es keine DTD oder andere Art von XML - Schema .

Einige Leute sagen nicht gerne "XHTML5 ist XHTML". Die Frage muss in eine Mini-FAQ über "Wenn ich es als XHTML verwenden kann" aufgeteilt werden. Dies ist ein WIKI, bitte korrigieren Sie, wenn es ein "Missverständnis" gibt ...


FAQ

Kann ich XHTML5 als "2014er Version des XHTML-Standards" verwenden?

Es gibt einige Probleme bei einer "perfekten und generischen HTML5-zu-XHTML5 / XHTML5-zu-HTML5-Konvertierung". Sie müssen "persönliche Entscheidungen treffen" und Informationen verlieren. Da wird der Kontext unterschiedliche Antworten geben:

  • Loses Sprechen : JA. Es gibt viele (einfache) Beispiele, bei denen das Mapping perfekt und reversibel ist.

  • Streng genommen : NEIN. Siehe auch @vaxquis Kommentar unten und alte Antworten auf dieser Seite. Einige typische Probleme:

Kann ich die (furchtlose!) XHTML5-Serialisierung mit XSLT, XPath usw. verwenden?

Ja, du kannst. Sogar Fragmente serialisieren.

Kann ich XHTML5 validieren?

Ja, aber nicht so schnell und einfach wie die alten DTDs ... Siehe komplexe Validatoren, wie validator.nu

Kann ich XHTML5 als Nicht-Terminal-Ausgabe in einer XSLT-Kette verwenden?

Ja, du kannst. Lassen Sie uns erklären, was Sie können.

Einige Frameworks, wie Cocoon , verwenden " XSLT-Ketten ". HTML5- und XHTML5-Ausgaben können als "letzte Ausgabe in der Kette" verwendet werden. Natürlich kann HTML5 in Zwischenschritten nicht verwendet werden, da es sich nicht um XML handelt, aber XHTML5 kann verwendet werden.

Das obige Problem der Validierung tritt hier erneut auf: Es gibt keine strengen Konventionen, so dass manchmal weniger Klarheit über die "XHTML-Standardstruktur" besteht. In dieser Situation müssen Sie in "Selbstkonventionen" aufpassen und konsequent sein.

Kann ich bei Verwendung von DOMDocument einer HTML5-Seite eine saveXML()Methode verwenden?

Ja. Dies ist eine typische Situation, in der die Serialisierungsempfehlungen verwendet werden. Das XML ist gültig, der XHTML5-Code wird aus dem ursprünglichen HTML5- und DOM-Status zugeordnet. In einigen Strukturen können jedoch einige Informationen verloren gehen, wie oben erläutert.

Peter Krauss
quelle
Nee. XHTML ist nur eine Syntax für die XML-Serialisierung von HTML5, ein Thema, das ich bereits vor etwa einem Jahr in meiner Antwort behandelt habe. Es gibt keine "Zusammenführung", da sie bereits von den frühen W3C / WHATWG-HTML5-Entwürfen nach der Einstellung von XHTML 2.0 "zusammengeführt" wurde. Sie verstehen den Kontext hier falsch. Außerdem sind XPath und XSLT nur tangential mit der Angelegenheit verbunden. Wie ist ein bekannter MIME-Typ "XHTML-Teil und / oder Notiz"? Außerdem können Sie HTML- Code im Grunde nicht in XHTML serialisieren. Die vorgeschlagene Lösung besteht darin, Polyglots so zu schreiben, dass beide serialisiert werden, und sie nicht erneut zu serialisieren.
Vaxquis
hum ... @vaxquis, ok, ich bearbeitete, bitte helfen. Und hier, bei Kommentaren, lassen Sie uns in derselben Sprache sprechen: Sie verwenden "streng gesprochen" und ich verwendete "breiter gesprochen" in der Einleitung ... Jetzt können wir im Antworttext angeben, was Sie korrigieren möchten.
Peter Krauss
9

Ja leider ist XHTML weg.

Hinzufügen eines weiteren Grundes zu MainMas großartiger Antwort:

Als XHTML erstellt wurde, sollte es von WebApps verwendet werden, um strukturierte Inhalte bereitzustellen, die von Nicht-Browser-Software verstanden werden und keine Tag-Soup-HTML-Parser enthalten. Für ScreenReaders ist XHTML immer noch großartig, aber für jede andere Art von Software sind WebServices genau das Richtige und verwenden meistens XML oder JSON. SOAP selbst verfügt über ein eigenes XML-Schema, das einfacher als XHTML und betriebsorientiert ist.

So lange ich weiß, gibt es nicht einmal eine WebApp auf der Welt, die dieselbe HTTP-Nachricht sowohl für Browser als auch für andere Clients bereitstellt. Selbst die REST-Architektur, die die gleiche Darstellung eines Inhalts in mehreren Inhaltstypen basierend auf den Vorlieben des Kunden bereitstellen sollte, wird nicht für die Bereitstellung von XHTML- / Feed-Browsern verwendet.

In Java EE können wir zum Beispiel mit Eclipse eine eindeutige War-Datei bereitstellen, die Servlets + JSPs zum Bereitstellen von HTML sowie Axis2 zum Bereitstellen eines WebService enthält. Es ist einfach einfacher, separate Software für Browser und WebService zu entwickeln, als eine einzigartige, komplexe Software zu haben, die sie alle bedient.

Der Hauptgrund für die Ablehnung von REST ist genau die Komplexität (und es sollte einfach sein!) Der Entwicklung eines Servers, der für jeden Client-Typ den gleichen Inhalt bereitstellt, ohne etwas darüber zu wissen. Und es ist auch schwierig, das Bedürfnis des Webs nach einer schnellen Entwicklung zu bewältigen und eine stabile Definition beizubehalten, die nicht-Browser-Clients nicht zwingt, jedes Mal aktualisiert zu werden, wenn sich ein XHTML ändert.

Auf die gleiche Weise ist es sehr schwierig, einen Nicht-Browser-Client zu entwickeln, der ein XHTML-Dokument analysiert, auch wenn es gültig ist, da all diese XML-Elemente das vom Browser gerenderte Layout strukturieren und keinen Inhalt enthalten sollen.

Wenn sich REST-Anwender bereits über die XML-Komplexität von SOAP beschweren, die viel einfacher ist als ein für einen Browser gedachtes XHTML, stellen Sie sich vor, wie schwierig es ist, XHTML für mehrere Client-Typen, Server und Client-Seite, zu handhaben.

In der Praxis: Verwenden Sie HTML, wenn Sie möchten XML, um WebSites für Browser und jede Art von WebService-Lösung für Nicht-Browser-Clients zu erstellen.

ABER ich denke auch, dass XHTML5 erstellt werden muss. XHTML 1.1 (ok, 1.0, 1.1 ist nicht mehr verwendbar) wird mit HTML5 veraltet und wir benötigen noch einen Validator, der die HTML5-Elemente akzeptiert und die XML-Richtigkeit überprüft.

Hikari
quelle
1
Vielleicht bin ich etwas spät dran, aber wie ist XHTML 1.1 im Vergleich zu 1.0 unbrauchbar? Wenn überhaupt, enthält seine DTD mehr Elemente. Es sei denn, Sie sprechen über Framesets und ähnliches?
Mr Lister