Qu'est-ce qui fait partie de HTML 5 et qu'est-ce qui n'en fait pas partie?
On tend à englober dans le nouveau standard tous les formats du Web, y compris CSS 3, mais que comprend exactement HTML 5?
Ce doit faire partie de HTML 5, c'est bien sûr le code HTML décrit dans la spécification, mais ce n'est pas si simple car au cours du temps la spécification a évolué, a englobé des formats extérieurs et s'est scindée en plusieurs standards distincts.
Par ailleurs il y a une différence de conception entre le WHATWG qui considère HTML 5 comme une spécification en évolution constante tandis que le W3C a définit un standard qu'elle considère arrêté avant la création de la version suivante, HTML 5.1 ou HTML 6.
Une histoire de HTML 5 est incluse dans le document du WHATWG, un groupe de travail créé par Mozilla, Opera et Apple. Ce dernier à tendance à inclure dans un même document toutes les nouvelles technologies du Web.
Ce standard s'est développé de façon empirique et peu ordonnée à partir de sources diverses et on va voir que tout n'est pas évident dans la division en spécifications.
Ce qui fait effectivement partie de HTML 5
Formulaire
Lors de la création de HTML 5, le WHATWG qui voulait en faire un format d'interface pour les applications Web, ce qu'il est effectivement devenu, l'a décrit comme étant la réunion de Web Application 1 qui remplaçait HTML 4 et de Web Forms. DOM a été inclut après. Les balises de formulaires et les protocoles qui leur sont associés font partie du standard, et ce depuis l'origine.
Canvas
La spécification de Canvas parle de l'élément Canvas et il fait partie de HTML dans la spécification de WHATWG. Le W3C maintient un document séparé mais sous le nom de HTML Canvas 2D Context. Dans tous les cas, Canvas est considéré comme un élement de HTML 5, donc il fait bien partie du standard. C'est un de ces formats comme XHR qui se sont généralisés sur les navigateurs (il est apparu en premier dans WebKit) avant d'être intégré au standard. Celui-ci spécifie aussi les commandes JavaScript qui peuvent servir à générer le contenu.
Video
La balise <video> est dotée de nombreux attributs pour personnaliser le lecteur, et d'un protocole. Elle fait partie du standard même si l'on n'est pas parvenu à choisir un codec pour cause de brevets sur les techniques employées.
Audio
La balise <audio> fait aussi partie du standard. Elle permet de charger des morceaux musicaux et de les jouer et cela peut être contrôlé par des commandes en JavaScript.
XHTML
Le code XHTML et HTML font partie du même standard. Ce sont deux façons différentes de décrire les mêmes éléments pour des usages différents. Les navigateurs supportent les deux formulations.
Des API nouvelles
Canvas 2D est une API pour l'utilisation de la balise Canvas. Il en existe d'autres qui pour le stockage, le glisser-déposer, les micro données, le mode offline. Elles font partie de la spécification de WHATWG même si ce ne sont pas des balises HTML mais ne font pas toutes parties de celle du W3C.
Glisser-déposer (drag and drop), microdata, RDFa, le contenu éditable, le mode hors ligne, font partie de HTML 5.
Complètent HTML 5 mais n'en font pas partie
DOM
DOM est la structure d'un document et le moyen d'accéder à ses éléments, il fait originellement l'objet d'une spécification distincte du W3C qui a connu trois principales itérations: DOM Level 1 , 2 et 3. DOM 4 est en cours de définition. Lors de la création de HTML 5, le WHATWG a décidé de fusionner les deux standards. Il fait partie de HTML 5 pour le WHATWG qui n'est concerné que par HTML, mais pas pour le W3C qui définit aussi la spécification XML, et DOM supporte aussi ce format.
CSS 3
La version 3 apporte de nombreux effets dont les ombrages et les dégradés très utile pour améliore l'apparence d'une application. Cela va de pair avec la nouvelle fonction de HTML qui est de servir d'interface, mais pour autant, cela ne fait pas partie de HTML 5. Au contraire on veut séparer totalement le contenu et sa structure de son apparence qui est donnée par CSS.
SVG
Ce dialecte de XML s'intègre dans les pages HTML, fait partie du DOM et peut être généré et modifié en JavaScript. Il s'agit cependant d'un langage séparé et un document SVG peut être affiché indépendamment par les navigateurs.
Le W3C n'inclut pas SVG dans la recommandation HTML 5, mais le WHATWG l'inclut dans sa définition de HTML évolutive, donc HTML 5 ou pas, c'est une question de standard.
Indexed DB
C'est une API pour gérer une base de données sur le poste client depuis le browser. Elle succède à WebDB qui a été abandonné par le W3C. C'est encore une chose qui complète HTML 5, le langage d'interface des applications Web, mais n'en fait pas partie.
File API
FileReader et Writer font partie de la File API qui est une spec. séparée mais agit en conjonction avec XMLHttpRequest (antérieur à HTML 5) et Web Workers qui fait partie de HTML 5 ainsi qu'avec la balise <input>. En fait FileWriter est défini dans une spécification séparée.
Web storage
LocalStorage, le successeur des cookies permet de stocker des quantités importantes de données sur le poste du client, donc du navigateur. Au même titre que sessionStorage, il faisait initialialement partie de HTML 5 puis a été détaché dans une spécification indépendante par le W3C.
Géolocalisation
C'est une spécification différente même si l'API fonctionne dans les pages Web. Elle permet de connaître la localisation du client et donc de lui fournir des services en fonction de l'endroit où il vit.
WebSocket
Ce protocole d'accès bidirectionnel entre le navigateur et le serveur est standardisé par l'IETF et n'a donc rien à voir avec HTML 5. Mais on tendra à les utiliser conjointement, cela convient idéalement pour les applications fonctionnant avec un serveur local, entre autres (cela consomme beaucoup de bande passante ce qui en limite l'emploi sur le Web). Le W3C a une spécification pour l'API WebSocket.
WebRTC quand à elle est une spécification du W3C indépendante de HTML 5.
Conclusion
Au-delà de ces API essentielles, il en existent de nombreux autres qui confirment la vocation de HTML 5 d'être l'interface des applications universelles dans le navigateur, que ce soit sur le Web ou localement. HTML 5 normalement n'est que le langage d'interface. Mais ces éléments s'accompagnent de protocole d'utilisation, ce qui a conduit à incorporer des API dans la spécification. D'autres ont été développées séparément pour ne pas la surcharger, tout est donc une question d'histoire plus que de logique.