web-dev-qa-db-fra.com

Où est la définition de type de document HTML5?

Les "anciens" standards HTML/XHTML ont une DTD (Document Type Definition) définie pour eux:

HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict

Ces DTD spécifient les règles d'imbrication des éléments - "quels types d'éléments peuvent apparaître dans quels types d'éléments". J'ai fait un diagramme pour XHTML 1.0 ici (désolé, je n'ai plus cette ressource)

Je voudrais mettre à jour ce diagramme avec une nouvelle version qui inclut également les nouveaux éléments HTML5. Cependant, il ne semble pas y avoir de DTD HTML5. Il semble que les règles d'imbrication soient définies par les différents modèles de contenu définis en HTML5.

Il n'y a donc pas de DTD, n'est-ce pas?

Question de suivi: Y a-t-il une raison pour laquelle il n'y a pas de DTD en HTML5? La DTD est une telle méthode Nice pour définir les règles d'imbrication pour tous les différents types d'éléments. Pourquoi n'incluraient-ils pas une telle chose?

Mise à jour: J'ai trouvé ceci: http://www.w3.org/TR/html5 /dom.html#kinds-of-content Je suppose que c'est le plus proche d'avoir une DTD.

Mise à jour: L'équipe Visual Studio a créé un schéma XML pour XHTML5. Je suppose que cela répond à ma question: http://blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio -2008-et-visual-web-developer.aspx

63
Šime Vidas

Il n'y a pas de DTD HTML5. Le HTML5 RC explicitement dit ceci lors de la discussion sur la sérialisation XHTML, et cela s'applique clairement à la sérialisation HTML également.

Les DTD ont été considérés par les concepteurs de HTML5 comme trop limités en puissance expressive, et les validateurs HTML5 (essentiellement le mode HTML5 de http://validator.n et sa copie en http://validator.w3.org/nu/ ) utilisez des schémas et des vérifications ad hoc, pas une validation basée sur DTD.

De plus, HTML5 a été conçu pour que l'écriture d'une DTD soit impossible. Par exemple, il n'existe aucun moyen SGML de capturer la règle HTML5 selon laquelle tout nom d'attribut commençant par "data-" et conforme à certaines règles générales est valide. Dans SGML, les attributs doivent être répertoriés individuellement, donc une DTD devrait être infinie.

Il est possible de concevoir des DTD qui correspondent à HTML5 avec quelques omissions et peut-être avec des règles supplémentaires imposées, mais ce ne seront pas vraiment des DTD HTML5. Mon expérience avec l'idée n'est pas très encourageant: trop de limitations, trop délicat, et la DTD devrait être si permissive que de nombreuses erreurs de syntaxe ne seraient pas détectées.

60
Jukka K. Korpela

Correct. Il n'y a pas de DTD. Cependant, les documents HTML5 doivent commencer par <!DOCTYPE html> Il y a donc un DOCTYPE, mais pas de DTD.

Voir:

23
Adam

J'ai créé une DTD HTML5 à utiliser dans mes projets PHP XML. Ce n'est pas beau, mais cela fonctionne avec XHTML5 bien formé (c'est-à-dire HTML5 exprimé en XML).

Vous pouvez le récupérer sur mon compte bitbucket ici:

https://bitbucket.org/kashbridge/dtd/overview

Prendre plaisir!

7
Kevin

Certains Marcus de sgmljs.net ont créé et analysé un SGML DTD pour HTML 5.1 et ont commencé un thread dans la liste de diffusion XML-DEV pour examen et discussion. Jusqu'à présent, la discussion tourne autour des définitions d'entités.

Je viens de terminer mon analyse de la recommandation HTML 5.1 du W3C à http://sgmljs.net/docs/html5.html (à partir d'un langage de balisage plutôt que de PoV de développement Web), et je publie ici pour examen sous la forme d'une DTD SGML initiale pour l'analyse HTML 5.1, avec un long texte d'analyse.

[…]

Je sais que WHATWG et W3C se sont depuis longtemps éloignés de SGML (et XML dans la plupart des travaux de spécification liés au Web), le traitant comme une technique héritée et avec une attitude quelque peu présomptueuse dans le texte de spécification et ailleurs. Mais comme le montre l'analyse de la grammaire HTML5, ils ont essentiellement abandonné l'utilisation de toutes les méthodes formelles ensemble (et cela montre au moins deux défauts discutés dans l'analyse).

Rien de officiel pour le moment, mais peut-être que cette initiative gagnera du terrain, ou du moins trouvera ses utilisateurs comme une ressource non officielle.

2
imhotap

Je pense qu'ils ont supprimé les anciennes DTD, maintenant nous commençons juste les pages HTML avec: <!DOCTYPE HTML>

Peut-être que le W3C en sortira éventuellement.

0
Blake