web-dev-qa-db-fra.com

HTML 5 contre XHTML 1.0 Transitional?

Il semble que HTML 5 soit pris en charge (partiellement) par Firefox 3.1 et d'autres navigateurs. Il ajoute la prise en charge de la vidéo et de l'audio en tant que balises, mais ce sont de nouvelles balises que XHTML 1.0 Transitional ne reconnaît pas. Quel est le comportement supposé être si j'utilise une nouvelle balise HTML 5 dans une future version de Firefox mais que j'utilise la DTD pour XHTML? Et si je mélange le balisage HTML 5 avec XHTML 1.0 Trans?

Cela devient déroutant. Pourquoi n'ont-ils pas simplement ajouté ces balises à XHTML? Comment prenons-nous en charge XHTML et HTML 5?

Vidéo sur HTML 5: http://www.youtube.com/watch?v=xIxDJof7xxQ

54
Brennan

Eh bien, en général, HTML est SGML et XHTML est exprimé en XML. Pour cette raison, la création de XHTML est associée à plus de restrictions (sous forme de balisage) que HTML. ( basé sur SGML contre HTML basé sur XML )

Comme mentionné sur Wikipedia , HTML 5 aura également une variante XHTML (XHTML 5).

Règle générale: vous devez toujours utiliser un balisage valide. Cela signifie également que vous ne devez pas utiliser les balises <video> Ou <audio> Mentionnées dans XHTML 1.0 Transitional, car celles-ci ne font pas partie de cette spécification. Si vous avez vraiment besoin d'utiliser ces balises (dont je doute fortement), alors vous devez vous assurer que vous utilisez la DTD HTML 5/XHTML 5 pour pour spécifier que votre document se trouve dans ce DOCTYPE.

Utiliser HTML 5 ou XHTML 5 dans l'état donné de l'implémentation (AFAIK, la norme n'est même pas encore établie, n'est-ce pas?) Pourrait être contre-productif, car presque tous les utilisateurs peuvent ne pas voir le site Web rendu incorrect de toute façon.

Edit 2013: En raison des récents votes négatifs et comme cette réponse acceptée ne peut pas être supprimée (par moi), je voudrais ajouter que le processus de prise en charge et de normalisation de HTML5 est aujourd'hui totalement différent de ce qu'il était lorsque j'ai écrit cette réponse il y a cinq ans . Étant donné que la plupart des principaux navigateurs prennent en charge la plupart des parties du brouillon HTML5 et parce que beaucoup de choses peuvent être corrigées avec des polyfills dans les navigateurs plus anciens, j'utilise principalement HTML5 maintenant.

10
hangy

HTML5 est tellement plus facile à écrire que XHTML 1.0.

  1. Vous n'avez pas à déclarer manuellement l'espace de noms " http://www.w3.org/1999/xhtml ".

  2. Vous n'avez pas à ajouter d'attributs de type aux éléments de script et de style (ils sont par défaut text/javascript et text/css).

  3. Vous n'avez pas à utiliser un long doctype où le navigateur ignore simplement la plupart d'entre eux. Vous devez utiliser <! DOCTYPE html>, qui est facile à retenir.

  4. Vous n'avez pas le choix d'inclure ou non un uri dtd dans le doctype et vous n'avez pas le choix entre transitionnel et strict. Vous avez juste un doctype strict qui invoque le mode standard complet. De cette façon, vous n'avez pas à vous soucier d'être accidentellement en mode Presque standard ou en mode Quirks.

  5. La déclaration charset est beaucoup plus simple. C'est juste <meta charset = "utf-8">.

  6. Si vous trouvez confus d'écrire des éléments vides comme <nom>, vous pouvez utiliser <nom />, si vous le souhaitez.

  7. HTML5 a un très bon validateur sur http://validator.nu/ . Le validateur n'est pas lié par une DTD de merde qui ne peut pas exprimer toutes les règles.

  8. Vous n'avez pas besoin d'ajouter // <! [CDATA etc. dans les scripts en ligne ou les feuilles de style (dans certaines situations) pour valider.

  9. Vous pouvez utiliser l'intégration si nécessaire.

Simplement sur le plan de la syntaxe, lorsque vous utilisez HTML5, vous vous retrouvez avec un balisage plus propre et plus facile à lire qui invoque toujours le mode standard. Lorsque vous utilisez XHTML 1.0 (servi comme texte/html), vous spécifiez un tas de crud (afin de valider contre un dtd merdique) que le navigateur fera automatiquement.

97
Shadow2531

Les mythes et les idées fausses abondent dans ce fil.

  1. XHTML 1.0 est plus ancien que HTML 5. Il ne peut utiliser aucun nouveau vocabulaire. En effet, son principal argument de vente est qu'il utilise exactement le même vocabulaire que HTML 4.01.

  2. Il n'y aura pas de XHTML 1.2 - très probablement. Et ce n'est pas nécessaire. XHTML 5 est la sérialisation XML de HTML 5. Vocabulaire identique, différentes règles d'analyse.

  3. Le HTML n'a jamais été traité comme un vrai SGML dans les navigateurs. Aucun navigateur n'a jamais implémenté un analyseur compatible SGML. HTML 5 fera de ce fait une règle et la sérialisation HTML suivra la norme de facto actuelle. On pourrait peut-être dire que c'est "SGML-ish".

  4. Comme il a été dit, la DTD sert exactement un but DANS LES NAVIGATEURS, c'est-à-dire faire la distinction entre le mode de conformité aux normes et le mode excentrique. Ainsi, cela n'affecte que le style et les scripts. Si vous utilisez des cadres sur une page avec un doctype astrict, ils s'afficheront très bien. De même que <embed> et même <Marquee> - même si ce dernier est une abomination et le premier n'est dans aucune norme actuelle. Il fait cependant partie de HTML 5.

  5. La vidéo et l'audio peuvent être utilisés indépendamment de la sérialisation, XML ou HTML. ils font partie à la fois de HTML 5 et de XHTML 5. Une fois l'étape d'analyse terminée, un navigateur aura construit un DOM interne du document. Ce DOM sera à toutes fins pratiques le même quelle que soit la sérialisation. Et oui, le XHTML envoyé avec text/html est toujours du html normal, quel que soit le doctype.

28
Lars Gunther

Vous cherchez peut-être le problème dans le mauvais sens car la section relation avec XHTML 1.x , HTML 5 indique:

"Cette spécification est destinée à remplacer XHTML 1.0 comme définition normative de la sérialisation XML du vocabulaire HTML."

Maintenant que ce langage est controversé (le GT XHTML 2 l'a contesté et le GT HTML essaie de résoudre les différences ...) mais c'est là que nous en sommes en ce moment.

Quelques notes:

7
soypunk

Gardez à l'esprit que les doctypes n'ont qu'un seul but dans les navigateurs: basculer entre les bizarreries, presque les normes et le mode standard. Par conséquent, en utilisant <video> et <audio> fonctionnera avec n'importe quelle déclaration doctype. IMO, l'utilisation d'un doctype XHTML est tout à fait inutile, car chaque page que vous envoyez avec text/html Le type MIME est de toute façon analysé en tant que (tag-soup) HTML. Je suggère d'utiliser le doctype HTML5 (<!doctype html>), car il est plus facile à retenir et ne vous force pas dans la syntaxe XML sans raison.

Pourquoi n'ont-ils pas simplement ajouté ces balises à XHTML?

Ils l'ont fait, il existe une sérialisation XML de HTML 5 (XHTML5). Pour l'utiliser, vous devez envoyer vos pages avec un type XML MIME, tel que application/xhtml+xml. Cependant, ce n'est pas (encore) pris en charge par IE.

4
Ms2ger

Quel est le comportement supposé être si j'utilise une nouvelle balise HTML 5 dans une future version de Firefox mais que j'utilise la DTD pour XHTML?

Et si je mélange le balisage HTML 5 avec XHTML 1.0 Trans?

Si votre balisage n'est pas implémenté dans le cadre de votre DTD choisie - alors logiquement, ce balisage ne doit pas être suivi. Mais les implémentations de navigateur ne sont pas toujours strictement logiques.

Pourquoi n'ont-ils pas simplement ajouté ces balises à XHTML? Comment prenons-nous en charge XHTML et HTML 5?

xHTML n'est pas meilleur que HTML, mais il est plus adapté à certaines applications. L'un des principaux avantages de xHTML est qu'il peut être transformé en différents formats à l'aide de XSLT. Par exemple, vous pouvez utiliser XSLT pour transformer automatiquement xHTML en un flux RSS ou un autre format XML.

Vous n'avez pas besoin de prendre en charge les deux formats - pesez les avantages/inconvénients de chacun avec les exigences de votre projet. HTML 5 ne sera probablement pas standard pendant un certain temps.

3
codeinthehole

(X) HTML5 n'est que la prochaine version. Vous devez utiliser XHTML1.1 jusqu'à ce que XHTML5 soit bien pris en charge.

Vous ne devriez probablement pas utiliser le profil SGML à compatibilité descendante de HTML5. Cela rend les choses plus difficiles pour les grattoirs et les petits analyseurs.

1
singpolyma