web-dev-qa-db-fra.com

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

Qu'est-il donc arrivé à XHTML5?

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

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

93
W3C

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

  • Seules quelques personnes étaient vraiment intéressées par XHTML. La plupart des sites Web ont été écrits en HTML simple.

  • Encore moins ont vraiment compris en quoi consiste XHTML et comment l'utiliser. Trop de sites Web qui prétendaient servir XHTML utilisaient des en-têtes incorrects, au lieu de Content-Type: application/xhtml+xml.

  • Même lorsque vous comprenez parfaitement ce qu'est XHTML et ce que doivent être les en-têtes, la chose est vraiment délicate avec certains navigateurs pourris qui n'acceptent/ne prennent pas en charge application/xhtml+xml type de contenu. Cela signifiait que vous deviez changer l'en-tête en fonction du navigateur.

  • La partie XML de XHTML a également provoqué des situations étranges que les développeurs ont dû résoudre. L'un est INVALID_STATE_ERR: DOM Exception 11 message apparaissant 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 grande application Web après avoir fait une demande AJAX, vous n'avez vraiment aucune idée si c'est la faute de JQuery, AJAX ou autre chose.

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

  • Aux débuts des téléphones portables, XHTML était intéressant pour les appareils mobiles qui n'étaient pas très puissants. L'analyse XML est beaucoup plus facile que HTML. Maintenant, avec les appareils mobiles à double cœur, peu importe s'ils doivent analyser un XML valide ou un HTML sale plein de hacks et de balises mixtes.

La spécification d'octobre 2014 mentionne syntaxe XHTML . Pour le moment, on ne sait pas s'il existe une telle chose comme le nouveau XHTML langue (pas syntaxe), et s'il y en a, quelle sera la position de XHTML, ni l'adoption de la nouvelle norme XHTML par les navigateurs grand public.

78
Arseni Mourzenko

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

Il existe différentes syntaxes concrètes qui 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 XML MIME, tel que application/xhtml + xml, il est traité comme un document XML par les navigateurs Web, pour être analysé par un processeur XML. Il est rappelé 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 étiqueté XML, alors qu'elles seraient ignorées dans la syntaxe HTML. Cette spécification définit la version 5.0 de la syntaxe XHTML, connue sous le nom de "XHTML 5".

En outre, il y a un bon document sur l'écriture des polyglottes HTML5 (pages, qui peuvent être sérialisées à la fois en HTML5 et XML) ici:

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

Et même un validateur!

http://html5.validator.nu/

Il est rarement appelé XHTML5 de nos jours (et probablement encore plus rarement utilisé), car il est essentiellement encore HTML5, mais il est toujours là.

Autrement dit: chaque modification de la spécification HTML5 est également une modification implicite et correspondante de XHTML5.

33
user88637

HTML5 est un de facto et de jure standard! XHTML est là aussi en standard.

HTML5 - Un vocabulaire et des API associées pour HTML et XHTML

Recommandation W3C du 28 octobre 2014

Le titre de la norme contient la chaîne "et XHTML", nous parlons donc d'une décision finale du W3C de fusionner HTML et XHTML en un seul standard ; et cette norme montre comment sérialiser un fichier HTML en fichier XHTML et vice-versa.

XHTML parties 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 puisque XHTML5 est une application 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 sont à 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 est juste une syntaxe pour la sérialisation XML", il n'y a pas DTD ou autre sorte de schéma XML.

Certaines personnes n'aiment pas dire "XHTML5 est XHTML". La question doit être divisée en une mini-FAQ sur "quand je peux l'utiliser comme XHTML". Ceci est un WIKI, veuillez corriger s'il y a des "malentendus" ...


FAQ

Puis-je utiliser XHTML5 comme "version 2014 de la norme XHTML"?

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

  • Parler librement: OUI. Il existe de nombreux exemples (simples) où la cartographie est parfaite et réversible.

  • à proprement parler: NON. Voir aussi le commentaire @vaxquis ci-dessous et les anciennes réponses sur cette page. Quelques problèmes typiques:

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

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

Puis-je valider XHTML5?

Oui, mais pas aussi rapide et facile que les anciennes DTD ... Voir validateurs complexes, comme validator.n

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

Oui, vous pouvez. Expliquons ce que vous pouvez.

Certains frameworks, comme Cocoon , utilisent " 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 il n'est pas XML, mais XHTML5 peut être utilisé.

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

Lors de l'utilisation de DOMDocument d'une page HTML5, puis-je utiliser une méthode saveXML()?

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

10
Peter Krauss

Oui, malheureusement, XHTML a disparu.

Ajout d'une raison de plus à la grande réponse de MainMa:

Lorsque XHTML a été créé, il était destiné à être utilisé par les WebApps pour servir du contenu structuré qui serait compris par les logiciels autres que les navigateurs, qui ne disposeraient pas d'analyseurs HTML de soupe-tag. Pour ScreenReaders XHTML est toujours génial, mais pour tout autre type de logiciel, les WebServices répondent à ce besoin, et ils utilisent principalement XML ou JSON. SOAP lui-même a son propre schéma XML, plus simple que XHTML et orienté opération.

Pour autant que je sache, il n'y a même pas 1 WebApp au monde qui sert le même message HTTP aux navigateurs et aux autres clients. Même REST, qui était censée servir la même représentation d'un conten dans plusieurs types de contenu en fonction des préférences du client, n'est pas utilisée pour servir les navigateurs XHTML/flux .

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

La principale raison pour laquelle REST est rejeté est exactement la complexité (et c'était censé être simple!) De développer un serveur qui sert le même contenu pour tout type de client sans rien savoir à ce sujet. Et il est également difficile de gérer le besoin d'évolution rapide du Web, tout en conservant une définition stable qui n'obligerait pas les clients non-navigateurs à être mis à jour chaque fois qu'un XHTML change, dites-le pour garder le XHTML valide lorsqu'il est construit par de nombreux modules différents.

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 s'il est valide, à cause de tous ces éléments XML qui sont destinés à structurer la mise en page rendue par le navigateur, et non à contenir du contenu.

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

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

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 la bonne forme XML.

9
Hikari