Chaque élément HTML doit respecter un certain nombre de règles définissant le type de contenu qu'il peut avoir. Ces règles sont regroupées dans des modèles de contenus, communs à plusieurs éléments. Chaque élément HTML appartient à zéro, un, ou plusieurs modèles de contenus. Chacun de ces modèles définit un ensemble de règles devant être respectées par le contenu de l'élément (pour que le document HTML soit conforme).
Il y a trois types différents de catégories de contenu :
- Les catégories de contenu principales qui décrivent un ensemble de règles de contenu partagées par une grande variété d'éléments
- Les catégories de contenu relatives aux formulaires qui décrivent les règles de contenu partagées par les éléments en lien avec les formulaires
- Les catégories de contenu spécifiques qui décrivent des catégories plus rares et qui s'appliquent à peu d'éléments, parfois dans un contexte particulier
Principales catégories de contenu
Contenu de méta-données
Les éléments appartenant à cette catégorie modifient la présentation ou le comportement du reste du document, insèrent des liens vers d'autres documents ou comportent des informations sur la structure même des données.
Les éléments appartenant à cette catégories sont : <base>, <command>, <link>, <meta>, <noscript>, <script>, <style> and <title>.
Contenu de flux
Les éléments appartenant à la catégorie de contenu de flux contiennent généralement du texte ou du contenu intégré. Ces éléments sont : <a>, <abbr>, <address>, <article>, <aside>, <audio>, <b>, <bdo>, <blockquote>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <datalist>, <del>, <details>, <dfn>, <div>, <dl>, <em>, <embed>, <fieldset>, <figure>, <footer>, <form>, <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, <header>, <hgroup>, <hr>, <i>, <iframe>, <img>, <input>, <ins>, <kbd>, <keygen>, <label>, <map>, <mark>, <math>, <menu>, <meter>, <nav>, <noscript>, <object>, <ol>, <output>, <p>, <pre>, <progress>, <q>, <ruby>, <samp>, <script>, <section>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <table>, <textarea>, <time>, <ul>, <var>, <video>, <wbr> et le texte.
Quelques autres éléments appartiennent à cette catégorie mais seulement sous certaines conditions :
<area>s'il est un descendant de l'élément<map><link>si l'attribut itemprop est présent<meta>si l'attribut itemprop est présent<style>si l'attributscopedest présent
Contenu sectionnant
Les éléments appartenant à cette catégorie sont ceux créant une nouvelle section dans le plan du document qui définit la portée des éléments <header>, des éléments <footer> et du contenu de titre.
Les éléments appartenant à cette catégorie sont les éléments <article>, <aside>, <nav> et <section>.
Note : Il ne faut pas confondre ce modèle de contenu avec la catégorie de racine de sectionnement qui isole un contenu par rapport à la structure (ou plan) principale.
Contenu de titre
Le contenu de titre définit le titre d'une section, qu'elle soit marquée par un contenu sectionnant de manière explicite ou qu'elle soit définie de manière implicite par le contenu de titre lui-même.
Les éléments appartenant à cette catégorie sont <h1>, <h2>, <h3>, <h4>, <h5>, <h6> et <hgroup>.
Note : Bien qu'il soit probable qu'un élément <header> comporte du contenu de titre, il ne représente pas, à lui tout seul, du contenu de titre.
Contenu phrasé
Le contenu phrasé définit le texte et le balisage qu'il contient. Des séquences de contenu phrasé constituent des paragraphes.
Les éléments appartenant à cette catégorie sont <abbr>, <audio>, <b>, <bdo>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <datalist>, <dfn>, <em>, <embed>, <i>, <iframe>, <img>, <input>, <kbd>, <keygen>, <label>, <mark>, <math>, <meter>, <noscript>, <object>, <output>, <progress>
