32 votes

Types HTML 4, HTML 5, XHTML, MIME - la ressource définitive

Les thèmes de l'HTML ou le XHTML et le XHTML en tant que text/html ou XHTML XHTML sont assez complexes. Malheureusement, il est difficile d'obtenir une image complète de la situation, étant donné que l'information se propage principalement dans les pièces et de morceaux autour du web, ou est enterré profondément dans le W3C tech jargon. En outre, il ya certains la désinformation diffusée actuellement. Je propose de faire cette définitif des ressources sur le sujet, en décrivant les aspects les plus importants de:

  • HTML 4
  • HTML 5
  • XHTML 1.0 text/html, application/xml+xhtml
  • XHTML 1.1 de l'application/xml+xhtml

Quelles sont les implications pratiques de chacun?
Quels sont les pièges les plus courants?
Quelle est l'importance de types MIME pour chaque?
Comment les différents navigateurs manipuler?

J'aimerais voir une réponse par la technologie. Je suis ce qui en fait un wiki de la communauté, donc, plutôt que de contribuer redondant réponses, merci d'éditer des réponses pour compléter le tableau. N'hésitez pas à commencer avec talons. Aussi n'hésitez pas à modifier cette question.

41voto

Alohci Points 30645

Contenu.

  • La terminologie
  • Langues et Serializations
  • Spécifications
  • Navigateur Analyseurs et de Contenu (MIME) Types
  • Prise En Charge Du Navigateur
  • Des validateurs et des Définitions de Type de Document
  • Bizarreries, Limitée Bizarreries, Normes et modes de.

La terminologie

Une des difficultés de l'décrivant c'est clairement que la terminologie dans les spécifications officielles a changé au fil des ans, depuis HTML a été introduite. Ce qui suit ci-dessous est basé sur HTML5 terminologie. Aussi, "fichier" est utilisé comme un terme générique pour désigner un fichier, document, flux d'entrée, le flux d'octets, etc pour éviter d'avoir à faire des distinctions subtiles.

Langues et Serializations

HTML et XHTML sont définis en termes de langue et de sérialisation.

Le langage définit le vocabulaire des éléments et des attributs, et leur modèle de contenu, c'est à dire les éléments qui sont autorisés à l'intérieur de laquelle d'autres éléments, dont les attributs sont autorisés sur l'élément, ainsi que l'objet et la signification de chaque élément et d'attribut.

La sérialisation définit la façon dont le marquage est utilisé pour décrire ces éléments et d'attributs dans un document texte. Ceci comprend les balises sont nécessaires et qui peuvent être déduites, et les règles de ces inférences. Il décrit par exemple comment annuler éléments doivent être marqués (par exemple, " > " vs "/>") et lorsque les valeurs d'attributs doivent être entre guillemets.

Spécifications

La spécification HTML 4.01 est l'actuel cahier des charges qui définit à la fois le langage HTML et le code HTML de sérialisation.

La spécification XML 1.0 définit une sérialisation, mais laisse la langue définie par d'autres spécifications, qui sont appelés "applications XML"

Le XHTML 1.0 et 1.1 spécifications sont à la fois en cours d'utilisation. Essentiellement, ils utilisent le même langage que le HTML 4.01, mais utiliser un autre sérialisation, celle qui est compatible avec la spécification XML 1.0. c'est à dire le XHTML est une application de XML.

Le HTML5 (comme de 2010-04-18, le projet d') spécification décrit une nouvelle langue pour le HTML et le XHTML. Cette langue est surtout un sur-ensemble de l'HTML 4.01 langue, mais elle est destinée à n'être vers l'arrière compatible avec les outils web (par exemple, les navigateurs, les moteurs de recherche et les outils de création) et pas avec les spécifications précédentes, où les différences surviennent. Donc, la signification de certains éléments sont parfois changé à partir de l'ancien cahier des charges. De même, chacun des serializations sont rétro-compatibles avec les outils actuels.

Navigateur Analyseurs et de Contenu (MIME) Types

Lorsqu'un fichier texte qui est envoyé à un navigateur, il est analysée dans sa mémoire interne de la structure (modèle d'objet). Pour ce faire, il utilise un analyseur qui suit, soit le code HTML de sérialisation des règles ou de la sérialisation XML règles. Analyseur il utilise dépend de ce qu'il en déduit le type de contenu de base pour les fichiers sur le "content-type" en-tête HTTP. En interne, une fois que le fichier a été analysé, le navigateur traite le modèle d'objet de pratiquement de la même manière, indépendamment du fait qu'il a été initialement fourni à l'aide d'un code HTML ou XHTML de sérialisation.

Pour un navigateur pour utiliser ses XHTML analyseur, le type de contenu d'en-tête HTTP doit être l'un des XML types de contenu. Le plus souvent, c'est soit l'application/xml ou application/xhtml+xml. Non XML type de contenu signifie que le fichier, indépendamment de savoir si elle répond à tous le langage XHTML et la sérialisation des règles ou pas, ne sera pas traité par le navigateur XHTML.

À l'aide d'un type de contenu HTTP texte/html (ou dans la plupart des scénarios de secours, où le type de contenu est manquant ou tout autre type non-XML) fera en sorte que le navigateur à utiliser son code HTML de sérialisation de l'analyseur.

Une différence essentielle entre les deux analyseurs est que le code HTML de la sérialisation de l'analyseur effectue le recouvrement d'erreur. Si le fichier d'entrée de l'analyseur ne respectent pas le code HTML de sérialisation des règles, l'analyseur va récupérer dans les moyens à l'ingénierie inverse de la précédente navigateurs et de poursuivre la construction de son modèle d'objet jusqu'à ce qu'il atteint la fin du fichier. HTML5 contient la première définition normative de la reprise, mais pas d'intégrer le navigateur a envoyé une mise en œuvre de l'algorithme activée dans une version de 2010-04-26.

En revanche, la sérialisation XML parser, s'arrête quand il rencontre quelque chose qu'il ne peut pas interpréter comme XML (c'est à dire lorsqu'il découvre que le fichier n'est pas XML bien formé). Ce qui est requis des analyseurs par la spécification XML 1.0.

Prise En Charge Du Navigateur

La plupart des navigateurs modernes en charge à la fois un analyseur HTML et d'un analyseur XML. Cependant, dans les versions de Microsoft Internet Explorer 8.0 et versions antérieures, le parseur XML ne peut pas créer directement un modèle d'objet pour le rendu de la page HTML. La structure XML peut, toutefois, être traitées avec un fichier XSLT pour créer un flux qui, à leur tour être analysée à l'aide de l'analyseur HTML pour créer un modèle d'objet qui peut être rendu.

À partir de Internet Explorer 9 Platform Preview, XHTML fournie à l'aide d'un fichier XML de type de contenu peut être analysé directement de la même manière que les autres navigateurs modernes.

Lors de leur parseurs XML détecter que leurs fichiers d'entrée ne sont pas XML bien formé, certains navigateurs affichent un message d'erreur, et d'autres montrent la page en tant que construit à l'endroit où l'erreur a été détectée et certaines offrent à l'utilisateur la possibilité d'avoir le fichier ré-analysée à l'aide de leurs analyseur HTML.

Des validateurs et des Définitions de Type de Document

Le HTML et le XHTML fichiers peuvent commencer par une Définition de Type de Document (DTD) de la déclaration qui indique la langue et la sérialisation qui est utilisée dans le document. Les validateurs, tels que celui de l' http://validator.w3.org/ utiliser cette information pour correspondre à la langue et la sérialisation utilisé dans le fichier contre les règles définies dans la DTD. Puis, il signale les erreurs sur la base où les règles dans la DTD sont violés par la marque dans le fichier.

Pas tout le code HTML de la sérialisation et les règles de la langue peut être décrit dans une DTD, de sorte que les validateurs seul test pour un sous-ensemble de toutes les règles décrites par le cahier des charges.

HTML 4.01 et XHTML 1.0 définir Stricte, de Transition et de Dtd Frameset qui diffèrent dans les éléments de langage et les attributs qui sont autorisés dans les fichiers conformes à la norme.

Les validateurs basé sur HTML5 comme le validateur.nu se comportent plus comme des navigateurs, le traitement de la page en fonction de l'adresse HTTP de type de contenu et l'utilisation d'une DTD à base de règle de jeu de sorte qu'ils attrapent des erreurs qui ne peuvent pas être décrites par des Dtd.

Bizarreries, Limitée Bizarreries, Normes et modes de.

Les navigateurs ne pas valider les fichiers envoyés. Ni n'en font aucune déclaration de DTD pour déterminer la langue ou de la sérialisation du fichier. Cependant, ils ne l'utilisent de deviner l'époque à laquelle la page a été créée, et donc les chances d'analyse et de rendu le comportement de l'auteur aurait attendu d'un navigateur à l'époque. En conséquence, ils définissent trois d'analyse et de rendu des modes, connu comme mode Quirks, Limitée Caprices (ou Presque Normes) le mode et le mode standard.

N'importe quel fichier a servi à l'aide d'un XML type de contenu est toujours traitée en mode standard. Pour les fichiers analysés à l'aide de l'analyseur HTML, si il n'y a pas de DTD ou la DTD est déterminé à être très vieux, les navigateurs utilisent leur mode quirks. Globalement, HTML 4.01 et XHTML dossiers traités en tant que texte/html seront traitées avec limitée en mode quirks si elles contiennent une DTD transitoire et avec les normes de la mode si vous utilisez une DTD strict.

Où la DTD n'est pas reconnue, le mode est déterminé par un ensemble complexe de règles. Un cas particulier est l'endroit où le public et les identifiants sont omis et la déclaration est tout simplement <!DOCTYPE html>. Ceci est connu pour être la plus courte déclaration doctype où les navigateurs actuels permettra de traiter le fichier en tant que normes de la mode. Pour cette raison, il est de la déclaration mentionnée à être utilisé pour le HTML5 fichiers conformes à la norme.

3voto

deceze Points 200115

XHTML

QA

XHTML est mature QA outils, mais looser Dtd (par exemple, <textarea rows="" est une conformité d'erreur en HTML 4.01 et XHTML 1.0, mais seulement une validité d'erreur en HTML 4.01*). C'est malgré XHTML 1.0 être, théoriquement, HTML 4.01 exprimé en XML. Il existe de nombreuses différences, qui ne sont pas documentées dans les "Différences avec le HTML 4" section de la spécification.

Un document XHTML lorsqu'il est servi avec le type MIME application/xhtml+xml (voir ci-dessous) doit être conforme à 100% aux normes XML, c'est à dire qu'il doit être "bien formé XML". Même un seul sans échappement esperluette peut causer de l'analyseur (le navigateur) pour lancer un avertissement et refuser de rendre le document. Lors de la création dynamique XHTML sites qui peuvent inclure du contenu fourni par des tierces parties (par exemple, l'intervention de l'utilisateur), un grand soin doit être pris pour échapper à toute et tous valides séquences de caractères, de ne pas autoriser les invalides des balises ou des attributs et correctement le nid de tous les éléments.

Prise En Charge Du Navigateur

  • XHTML en tant que text/html est bien pris en charge, mais vous devez sauter à travers la compatibilité des cerceaux. Sans sauter à travers ces cerceaux parfaitement valide, la page peut ne parviennent pas à rendre (par exemple, <script type="text/javascript" src="foo" /> entraînant le reste du document pour être traité comme un script au lieu de HTML) ou afficher d'autres questions.
  • XHTML en tant que application/xhtml+xml est assez bien pris en charge par la plupart des navigateurs (bugs mineurs peuvent exister). Il ne fonctionne pas dans Internet Explorer <= 8.

Le type MIME application/xhtml+xml vs texte/html

XHTML servi en tant que text/html n'est ni XHTML ni HTML. Il est traité comme du HTML par le navigateur, mais puisqu'il n'est pas du HTML, il est considéré comme la soupe de tags. Depuis Internet Explorer ne sait pas comment le gérer XHTML à l'aide de l'application/xhtml+xml, il aura besoin d'être servi en tant que texte/html pour IE seulement. Ce qui signifie XHTML pour IE est toujours la soupe de tags, à moins que les différences entre HTML et XHTML sont pris en charge (voir les Différences avec le HTML 4).

Bienvenue dans un monde de douleur. Vous obtenez en aval de la procuration (c'est à vous de varier la mise en cache basé sur n'importe quel en-tête de demande d'effectuer votre condition). Le document de modification de la structure (par exemple, les tableaux sans <tbody> balise peut ou peut ne pas avoir un <tbody> élément en fonction du type de contenu). C'est beaucoup de travail pour produire, essentiellement, deux presque identique documents.

XHTML et Javascript

Lorsqu'un document XHTML est analysé avec une bonne application/xhtml+xml de type MIME, il peut y avoir des différences lors de la manipulation des éléments du DOM avec Javascript. Certains scripts qui n'ont pas été préparés de façon appropriée peuvent travailler différemment ou ne parviennent pas à un XHTML environnement. **

Avantages de l'utilisation de XHTML (en tant que application/xhtml+xml)

  • Permet d'utiliser un entrelacement d'autres formats XML comme MathML et SVG.
  • Est théoriquement plus rapide à analyser. La différence est négligeable dans la pratique, cependant.

* Point besoin d'être amélioré.
** J'ai vu cela dans la pratique, mais ont peu de connaissances de base, merci de développer.

2voto

Quentin Points 325526

HTML

QA

  • HTML5 a encore assez immature QA outils
  • HTML 4 a été autour depuis longtemps et est très mature QA outils

Prise En Charge Du Navigateur

  • HTML 5 - pièces et de morceaux sont pris en charge par les différents navigateurs. Vous avez besoin de Javascript pour soutenir la plupart des choses, les éléments de construction de base (comme <section>) tombent très mal si le Javascript n'est pas disponible. *
  • HTML 4 est bien pris en charge

* Quelques précisions et les exemples nécessaires.

1voto

scunliffe Points 30964

Stricte de Transition vs vs jeu de cadres

Pourquoi?

HTML ainsi que le XHTML vient en différentes saveurs, à savoir l' Strict, Transitional et Frameset. Chaque "dialecte" spécifie un ensemble de différents éléments qui sont autorisés à être utilisés.

Sauter dans la partie profonde avec Strict limites de certains de vos options de la boîte (par exemple, de ne pas être en mesure de spécifier target attributs) qui en font un no-go pour beaucoup.

Principales Différences

Merci de développer

-5voto

Paul D. Waite Points 35456

Ce n'est vraiment pas si complexe et cela n'a pas vraiment d'importance.

  • HTML et XHTML ne diffèrent que par la syntaxe.
  • Vous ne pouvez pas servir XHTML en XML à Internet Explorer, et vous n'obtenez aucun avantage dans d'autres navigateurs en le faisant.

Que devez-vous savoir d'autre?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X