XHTML5 est-il mort ou est-ce simplement un synonyme de HTML5?

87

Alors qu'est-il arrivé à XHTML5?

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

Cette page est un brouillon pour xhtml5 et html5? Donc, il n'y a pas de différence entre ces doctypes?

W3C
la source
1
Il semble que, à partir du 08/12/2014, le W3C travaille toujours sur la norme. w3.org/TR/html5 et w3.org/TR/html5/the-xhtml-syntax.html ont été mis à jour le 2014-10-28.
Russel Winder
6
De nos jours, en 2015, XHTML est une norme W3C! ... Voir la discussion mise à jour
Peter Krauss le
2
Vous avez accepté la mauvaise réponse. La réponse de vaxquis est la bonne réponse.
JacquesB

Réponses:

77

En 2012, au moment d'écrire ces lignes, il était clair que le W3C avait décidé d'abandonner XHTML pour HTML 5. Cette décision était motivée par plusieurs raisons:

  • Peu de gens s’intéressaient vraiment à XHTML. La plupart des sites Web ont été écrits en HTML.

  • Encore moins de gens comprenaient vraiment ce qu'est le langage XHTML et comment l'utiliser. Trop de sites Web prétendant servir XHTML utilisaient de mauvais en-têtes au lieu de Content-Type: application/xhtml+xml.

  • Même lorsque vous comprenez parfaitement ce qu'est le XHTML et ce que doivent être les en-têtes, la chose est vraiment délicate avec des navigateurs de mauvaise qualité qui n'acceptent / supportent pas le application/xhtml+xmltype de contenu. Cela signifiait que vous deviez modifier l'en-tête en fonction du navigateur.

  • La partie XML de XHTML a également provoqué certaines situations étranges que les développeurs ont dû résoudre. Le premier est le INVALID_STATE_ERR: DOM Exception 11message qui apparaît lorsque vous affectez le texte contenant des caractères HTML (comme é) à un élément de la page XHTML. Lorsque vous rencontrez cette erreur avec son message très utile dans une application Web volumineuse après une requête AJAX, vous ne savez vraiment pas si c'est la faute de JQuery, AJAX ou autre chose.

  • Écrire du code HTML 5 ne signifie pas mélanger les balises. Si vous êtes passionné par XML et XHTML, vous pouvez toujours écrire du code HTML 5 qui ressemblera beaucoup à XML.

  • Au début des téléphones mobiles, XHTML était intéressant pour les appareils mobiles peu puissants. L'analyse XML est beaucoup plus facile que HTML. Désormais, avec les appareils mobiles bicœurs, peu importe s'ils doivent analyser du code XML propre valide ou du code HTML sale plein de hacks et de balises mixtes.

La spécification d'octobre 2014 mentionne la syntaxe XHTML . Pour le moment, il est difficile de savoir s'il existe un nouveau langage XHTML (pas de syntaxe ) et, le cas échéant, quelle sera la position de XHTML, ni l'adoption du nouveau standard XHTML par les principaux navigateurs.

Arseni Mourzenko
la source
11
Je pense que la seule chose qui manque à votre réponse est une référence au balisage polyglot
yannis
2
Vous pouvez cependant utiliser HTML5 en tant que XML et bénéficier de la syntaxe plus stricte.
Erik Reppen
3
@ErikReppen mais vous perdrez le bénéfice des références d'entités comme 
M. Lister
4
Une décision terrible. Nous avons jeté les outils XSL qui auraient été disponibles avec XML.
Mihai Danila
5
Cette déclaration est fausse. Le W3C n'a pas abandonné le XHTML dans HTML5 La syntaxe, le vocabulaire et les API XHTML
Rob
32

XHTML5 est un synonyme de "HTML5 sérialisé en XML".

Diverses syntaxes concrètes peuvent être utilisées pour transmettre des ressources qui utilisent ce langage abstrait, dont deux sont définies dans cette spécification.

...

La deuxième syntaxe concrète est la syntaxe XHTML, qui est une application de XML. Lorsqu'un document est transmis avec un type MIME XML, tel que application / xhtml + xml, il est traité comme un document XML par les navigateurs Web et doit être analysé par un processeur XML. Nous rappelons aux auteurs que le traitement pour XML et HTML diffère; en particulier, même des erreurs de syntaxe mineures empêcheront le rendu complet d'un document appelé XML, alors qu'elles seraient ignorées dans la syntaxe HTML. Cette spécification définit la version 5.0 de la syntaxe XHTML, appelée "XHTML 5".

En outre, il y a un bon document sur l'écriture de polyglots HTML5 (pages pouvant être sérialisées à la fois en HTML5 et XML standard) ici:

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

Et même un validateur!

http://html5.validator.nu/

Il s'appelle rarement XHTML5 de nos jours (et probablement encore plus rarement), car il s'agit toujours de HTML5, mais il existe toujours.

En termes simples: chaque modification de la spécification HTML5 est également une modification implicite correspondant à XHTML5.

vaxquis
la source
10

HTML5 est un standard de facto et de jure ! Le XHTML est là, en standard également.

HTML5 - Vocabulaire et API associées pour HTML et XHTML

Recommandation du W3C du 28 octobre 2014

Le titre de la norme contient la chaîne "and XHTML" , nous parlons donc d’une décision finale du W3C de fusionner HTML et XHTML en une seule norme ; et cette norme explique comment sérialiser un fichier HTML dans un fichier XHTML et inversement.

XHTML pièces et notes importantes:


Comprendre et utiliser

Comme résumé par LF Sikos

XHTML5 est la sérialisation XML de HTML5. La syntaxe est décrite par la spécification HTML5. Cependant, il ne faut pas confondre XHTML5 étant une application de XML. En d'autres termes, HTML5 et XHTML5 ont un vocabulaire identique mais des règles d'analyse différentes.

Les documents HTML5 peuvent également être des documents XML valides. Ce balisage est souvent appelé langage «polyglotte». C’est le langage de chevauchement des documents qui est à la fois des documents HTML5 et XML. Les sérialisations HTML5 et XHTML5 sont compatibles entre elles. Cependant, XHTML5 a une syntaxe plus stricte. De plus, certaines parties de XHTML5 ne sont pas valides en HTML5, par exemple les instructions de traitement.

Donc, à proprement parler (et souligné par @vaxquis) "XHTML n’est qu’une syntaxe pour la sérialisation XML", il n’existe aucune DTD ou autre type de schéma XML .

Certaines personnes n'aiment pas dire "XHTML5 est XHTML". La question doit se scinder en une mini-FAQ sur "quand je peux l'utiliser comme XHTML". Ceci est un WIKI, corrigez s'il vous plaît s'il y a un "malentendu" ...


questions - réponses

Puis-je utiliser XHTML5 comme "version 2014 du standard XHTML"?

Il y a quelques problèmes dans "une conversion parfaite et générique HTML5-à-XHTML5 / XHTML5-à-HTML5", vous devez faire des "choix personnels" et des informations perdues. Comme le contexte sera différentes réponses:

  • Parler en vrac : OUI. Il y a beaucoup d'exemples (simples) où la cartographie est parfaite et réversible.

  • Strictement parlant : NON. Voir aussi le commentaire @vaxquis ci-dessous et les anciennes réponses de cette page. Quelques problèmes typiques:

Puis-je utiliser (sans peur!) La sérialisation XHTML5 avec XSLT, XPath, etc.?

Oui, vous pouvez. Même en sérialisant des fragments.

Puis-je valider XHTML5?

Oui, mais pas si vite et si facile que les anciennes DTD ... Voir les validateurs complexes, en tant que validator.nu

Puis-je utiliser XHTML5 comme sortie non-terminal dans une chaîne XSLT?

Oui, vous pouvez. Expliquons ce que vous pouvez.

Certains frameworks, comme Cocoon , utilisent des " chaînes XSLT ". Les sorties HTML5 et XHTML5 peuvent être utilisées comme "dernière sortie de la chaîne" ... Bien sûr, dans les étapes intermédiaires, HTML5 ne peut pas être utilisé car non XML, mais XHTML5 peut être utilisé.

Le problème de validation ci-dessus réapparaît ici: il n'y a pas de convention forte, donc, parfois, la "structure standard XHTML" est moins claire . Dans cette situation, vous devez faire attention dans "vous-même conventions" et être cohérent.

Lorsque j'utilise DOMDocument d'une page HTML5, puis-je utiliser une saveXML()méthode?

Oui. C'est une situation typique où les recommandations de sérialisation sont utilisées. Le code XML sera valide, le code XHTML5 est mappé à partir des états HTML5 et DOM d'origine ... Mais, dans certaines structures, certaines informations peuvent être perdues, comme indiqué ci-dessus.

Peter Krauss
la source
Nan. XHTML est juste une syntaxe pour la sérialisation XML de HTML5, un sujet que j'ai déjà traité dans ma réponse il y a environ un an. Il n'y a pas de "fusion", car il avait déjà été "fusionné" par les versions préliminaires HTML5 du W3C / WHATWG après le classement en XHTML 2.0; Vous comprenez mal le contexte ici. En outre, XPath et XSLT ne sont liés de manière tangentielle à la question; aussi, comment est un type MIME bien connu "partie et / ou note XHTML"? En outre, vous ne pouvez pas sérialiser le code HTML en XHTML. La solution proposée consiste à écrire la sérialisation des polyglottes comme les deux, et non à la "re-sérialiser".
vaxquis
hum ... @vaxquis, d'accord, j'ai édité, s'il vous plaît, aidez-moi. Et ici, dans les commentaires, parlons dans la même langue: vous utilisez "à proprement parler" et j'ai utilisé "à parler plus large" dans l'introduction ... Maintenant, nous pouvons indiquer dans le texte de la réponse ce que vous voulez corriger.
Peter Krauss
9

Oui, malheureusement, XHTML est parti.

Ajouter une raison de plus à la réponse géniale de MainMa:

Lors de la création de XHTML, les applications Web devaient l’utiliser pour fournir un contenu structuré qui serait compris par les logiciels autres que les navigateurs, sans analyseurs HTML balises. Pour les ScreenReaders, le format XHTML est toujours intéressant, mais pour tout autre type de logiciel, les WebServices répondent à ces besoins et utilisent principalement XML ou JSON. SOAP a son propre schéma XML, plus simple que XHTML et orienté vers les opérations.

Aussi longtemps que je sache, il n'y a même pas une WebApp au monde qui envoie le même message HTTP aux deux navigateurs et aux autres clients. Même l'architecture REST, qui devait servir la même représentation d'un contenu dans plusieurs types de contenu en fonction des préférences du client, n'est pas utilisée pour servir les navigateurs XHTML / feed.

Dans Java EE, par exemple, en utilisant Eclipse, nous pouvons déployer un fichier war unique contenant des servlets + JSP pour servir le langage HTML, ainsi que Axis2 pour servir un WebService. Il est tout simplement plus facile de développer des logiciels distincts destinés aux navigateurs et à WebService que de disposer d'un logiciel unique et complexe qui les sert tous.

La principale raison du rejet de REST est précisément la complexité (et elle se voulait simple!) De développer un serveur qui sert le même contenu pour n'importe quel type de client sans rien savoir à son sujet. Et il est également difficile de gérer le besoin de Web d'évoluer rapidement, tout en conservant une définition stable qui ne forcerait pas les clients non-navigateurs à être mis à jour chaque fois qu'un fichier XHTML est modifié.

De la même manière, il est très difficile de développer un client non-navigateur qui analyse un document XHTML, même valide, en raison de tous ces éléments XML destinés à structurer la présentation rendue par le navigateur et non à contenir du contenu.

Si les utilisateurs de REST se plaignent déjà de la complexité XML de SOAP, beaucoup plus simple qu'un XHTML destiné à un navigateur, imaginez à quel point il est difficile de gérer XHTML pour plusieurs types de clients, serveur et côté client.

En pratique: utilisez HTML, XML si vous le souhaitez, pour créer des sites Web pour les navigateurs et tout type de solution WebService pour des clients autres que des navigateurs.

MAIS, je pense aussi que XHTML5 doit être créé. XHTML 1.1 (ok, 1.0, 1.1 est inutilisable) deviendra obsolète avec HTML5, et nous avons toujours besoin d'un validateur qui accepte les éléments HTML5 et valide le bon fonctionnement de XML.

Hikari
la source
1
Je suis peut-être un peu en retard, mais comment XHTML 1.1 est-il inutilisable par rapport à 1.0? Si quelque chose, sa DTD contient plus d'éléments. À moins que vous ne parliez de cadres et de choses comme ça?
M. Lister