La version française de cette traduction est :
http://www.la-grange.net/w3c/html4.01/

Traducteur : J.J.Solari dans le cadre de l'effort de la liste de discussion w3c-translators.fr@w3.org
La version française peut contenir des erreurs. La version anglaise de cette note est l'unique version normative. Version originale : http://www.w3.org/TR/1999/REC-html401-19991224


21 La définition de type de document

<!--
    Ceci est le DTD HTML 4.01 Strict, qui exclut les attributs et les
    éléments de présentation que le W3C entend supprimer
    graduellement avec la gestion croissante des feuilles de style.
    Les auteurs devraient employer le DTD strict autant que possible,
    mais ils peuvent employer le DTD transitoire si la reconnaissance
    des attributs et éléments de présentation est exigée.

    HTML 4 inclut des mécanismes pour les feuilles de style,
    les scripts, l'incorporation des objets, la gestion accrue des
    sens d'écriture de droite à gauche et mixtes et
    l'amélioration des formulaires pour favoriser l'accessibilité
    pour les personnes avec des déficiences physiques.

          Projet : $Date: 1999/12/24 22:40:35 $

          Auteurs :
              Dave Raggett <dsr@w3.org>
              Arnaud Le Hors <lehors@w3.org>
              Ian Jacobs <ij@w3.org>

    On peut avoir plus d'informations sur HTML 4.01 à :

        http://www.w3.org/TR/1999/REC-html401-19991224


    La spécification HTML 4.01 comprend des contraintes
    syntaxique supplémentaires qui ne peuvent pas être
    exprimées dans les DTD.

-->
<!--
    Utilisation typique :

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    ...
    </head>
    <body>
    ...
    </body>
    </html>

    L'URI utilisé comme un identifiant de système avec l'identifiant
    public permet à l'agent utilisateur de télécharger le DTD
    et les jeux d'entités au besoin.

    Le FPI pour le DTD HTML 4.01 Transitional est :

        "-//W3C//DTD HTML 4.01 Transitional//EN"

    Cette version du DTD transitoire est :

        http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd

    Si vous écrivez un document qui comprend des cadres, utilisez
    le FPI suivant :

        "-//W3C//DTD HTML 4.01 Frameset//EN"

    Cette version du DTD avec jeu d'encadrement est :

        http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd

    Utilisez les URI (relatifs) suivants pour se référer
    aux DTD et aux définitions d'entités de cette spécification :

    "strict.dtd"
    "loose.dtd"
    "frameset.dtd"
    "HTMLlat1.ent"
    "HTMLsymbol.ent"
    "HTMLspecial.ent"

-->

<!--================== Noms importés ====================================-->
<!-- Interrupteur de fonctionnalité pour les documents avec jeu d'encadrement -->
<!ENTITY % HTML.Frameset "IGNORE">

<!ENTITY % ContentType "CDATA"
    -- type de média, selon [RFC2045]
    -->

<!ENTITY % ContentTypes "CDATA"
    -- liste de types de média, séparés par des virgules, selon [RFC2045]
    -->

<!ENTITY % Charset "CDATA"
    -- encodage de caractères, selon [RFC2045]
    -->

<!ENTITY % Charsets "CDATA"
    -- liste d'encodages de caractères, séparés par des virgules, selon [RFC2045]
    -->

<!ENTITY % LanguageCode "NAME"
    -- un code de langue, selon [RFC1766]
    -->

<!ENTITY % Character "CDATA"
    -- un caractère seul issu de [ISO10646]
    -->

<!ENTITY % LinkTypes "CDATA"
    -- liste de types de lien, séparés par des espaces
    -->

<!ENTITY % MediaDesc "CDATA"
    -- descripteur de média seul ou liste de descripteurs, séparés par des espaces
    -->

<!ENTITY % URI "CDATA"
    -- un identifiant de ressource uniforme (URI),
       voir [URI]
    -->

<!ENTITY % Datetime "CDATA" -- informations de date et d'heure. Format de date ISO -->


<!ENTITY % Script "CDATA" -- expression de script -->

<!ENTITY % StyleSheet "CDATA" -- données de feuille de style -->



<!ENTITY % Text "CDATA">


<!-- Entités paramètres -->

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- éléments d'en-tête répétables -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL | OL">

<!ENTITY % preformatted "PRE">


<!--================ Entités de caractères mnémoniques =========================-->

<!ENTITY % HTMLlat1 PUBLIC
   "-//W3C//ENTITIES Latin1//EN//HTML"
   "HTMLlat1.ent">
%HTMLlat1;

<!ENTITY % HTMLsymbol PUBLIC
   "-//W3C//ENTITIES Symbols//EN//HTML"
   "HTMLsymbol.ent">
%HTMLsymbol;

<!ENTITY % HTMLspecial PUBLIC
   "-//W3C//ENTITIES Special//EN//HTML"
   "HTMLspecial.ent">
%HTMLspecial;
<!--=================== Attributs génériques ===============================-->

<!ENTITY % coreattrs
 "id          ID             #IMPLIED  -- id unique au document --
  class       CDATA          #IMPLIED  -- liste de classes, séparées par des espaces --
  style       %StyleSheet;   #IMPLIED  -- info de style associé --
  title       %Text;         #IMPLIED  -- titre consultatif --"
  >

<!ENTITY % i18n
 "lang        %LanguageCode; #IMPLIED  -- code de langue --
  dir         (ltr|rtl)      #IMPLIED  -- direction du texte lâche/neutre --"
  >

<!ENTITY % events
 "onclick     %Script;       #IMPLIED  -- le bouton d'un pointeur est cliqué --
  ondblclick  %Script;       #IMPLIED  -- le bouton d'un pointeur est double-cliqué --
  onmousedown %Script;       #IMPLIED  -- le bouton d'un pointeur est appuyé  --
  onmouseup   %Script;       #IMPLIED  -- le bouton d'un pointeur est relâché --
  onmouseover %Script;       #IMPLIED  -- le bouton d'un pointeur est déplacé sur --
  onmousemove %Script;       #IMPLIED  -- le bouton d'un pointeur est à l'intérieur --
  onmouseout  %Script;       #IMPLIED  -- le bouton d'un pointeur est déplacé ailleurs --
  onkeypress  %Script;       #IMPLIED  -- une touche est pressée puis relâchée --
  onkeydown   %Script;       #IMPLIED  -- une touche est pressée --
  onkeyup     %Script;       #IMPLIED  -- une touche est relâcée --"
  >

<!-- Interrupteur de fonctionnalité réservé -->
<!ENTITY % HTML.Reserved "IGNORE">

<!-- Les attributs suivants sont réservés pour un usage futur -->
<![ %HTML.Reserved; [
<!ENTITY % reserved
 "datasrc     %URI;          #IMPLIED  -- un source de données seule ou tabulaire --
  datafld     CDATA          #IMPLIED  -- le nom de la propriété ou de la colonne --
  dataformatas (plaintext|html) plaintext -- format texte ou html --"
  >
]]>

<!ENTITY % reserved "">

<!ENTITY % attrs "%coreattrs; %i18n; %events;">


<!--=================== Balisage de texte ======================================-->

<!ENTITY % fontstyle
 "TT | I | B | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | DFN | CODE |
                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >

<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">

<!-- %inline; couvre les éléments en-ligne ou "de niveau texte" -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT (SUB|SUP) - - (%inline;)*    -- écriture en lettres inférieures ou supérieures -->
<!ATTLIST (SUB|SUP)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT SPAN - - (%inline;)*         -- conteneur générique de langue/style -->
<!ATTLIST SPAN
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                   -- réservé pour un usage futur --
  >

<!ELEMENT BDO - - (%inline;)*          -- surclassement de l'algorithme I18N BiDi -->
<!ATTLIST BDO
  %coreattrs;                          -- id, class, style, title --
  lang        %LanguageCode; #IMPLIED  -- code de langue --
  dir         (ltr|rtl)      #REQUIRED -- directionnalité --
  >


<!ELEMENT BR - O EMPTY                 -- saut de ligne forcé -->
<!ATTLIST BR
  %coreattrs;                          -- id, class, style, title --
  >

<!--================== Modèles de contenu HTML ===============================-->

<!--
    HTML a deux modèles de contenu principaux :

        %inline;     éléments au niveau du caractère et chaînes de texte
        %block;      éléments de type bloc, par exemple, paragraphes et listes
-->

<!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--=================== Corps du document ====================================-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- corps du document -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- le document est chargé --
  onunload        %Script;   #IMPLIED  -- le document est retiré --
  >

<!ELEMENT ADDRESS - - (%inline;)* -- informations sur l'auteur -->
<!ATTLIST ADDRESS
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DIV - - (%flow;)*            -- conteneur générique de langue/style -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- réservé pour possible utilisation future --
  >


<!--================== Élément ancre ================================-->

<!ENTITY % Shape "(rect|circle|poly|default)">
<!ENTITY % Coords "CDATA" -- liste de longueurs, séparées par des virgules -->

<!ELEMENT A - - (%inline;)* -(A)       -- ancre -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- encodage de caractères de la ressource reliée --
  type        %ContentType;  #IMPLIED  -- type de contenu consultatif --
  name        CDATA          #IMPLIED  -- extrêmité de lien nommée --
  href        %URI;          #IMPLIED  -- URI de la ressource reliée --
  hreflang    %LanguageCode; #IMPLIED  -- code de langue --
  rel         %LinkTypes;    #IMPLIED  -- types de lien progressif --
  rev         %LinkTypes;    #IMPLIED  -- types de lien régressif --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  shape       %Shape;        rect      -- utiliser avec les images cliquables côté client --
  coords      %Coords;       #IMPLIED  -- utiliser avec les images cliquables côté client --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  >

<!--================== Images cliquables côté client ============================-->

<!-- On peut les placer dans le même document ou les regrouper dans un
     document séparé, bien que ce ne soit pas encore largement reconnu -->

<!ELEMENT MAP - - ((%block;) | AREA)+ -- image cliquable côté client -->
<!ATTLIST MAP
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #REQUIRED -- pour appel par usemap --
  >

<!ELEMENT AREA - O EMPTY               -- zone d'image cliquable côté client -->
<!ATTLIST AREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  shape       %Shape;        rect      -- contrôle l'interprétation des coordonnées --
  coords      %Coords;       #IMPLIED  -- liste de longueurs, séparées par des virgules --
  href        %URI;          #IMPLIED  -- URI de la ressource reliée --
  nohref      (nohref)       #IMPLIED  -- cette région n'a pas d'action --
  alt         %Text;         #REQUIRED -- brève description --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  >

<!--================== Élément LINK ==================================-->

<!--
  Les valeurs de relation peuvent en principe être utilisée :

   a) pour les barres d'outils/menus propres au document, quand elles sont utilisés
      avec l'élément LINK dans l'en-tête du document
      par exemple, start, contents, previous, next, index, end, help
   b) pour relier une feuille de style séparée (rel=stylesheet)
   c) pour établir un lien vers un script (rel=script)
   d) par les feuilles de style pour contrôler comment les collections
      de nœuds HTML sont restituées en documents imprimés
   e) pour établir un lien vers une version imprimable du document
      par exemple, une version postscript ou pdf (rel=alternate media=print)
-->

<!ELEMENT LINK - O EMPTY               -- a media-independent link -->
<!ATTLIST LINK
  %attrs;                              -- %coreattrs, %i18n, %events --
  charset     %Charset;      #IMPLIED  -- encodage de caractères de la ressource reliée --
  href        %URI;          #IMPLIED  -- URI de la ressource reliée --
  hreflang    %LanguageCode; #IMPLIED  -- code de langue --
  type        %ContentType;  #IMPLIED  -- type de contenu consultatif --
  rel         %LinkTypes;    #IMPLIED  -- types de lien progressif --
  rev         %LinkTypes;    #IMPLIED  -- types de lien régressif --
  media       %MediaDesc;    #IMPLIED  -- pour restitution sur ces médias --
  >

<!--=================== Images ===========================================-->

<!-- Longueur définie dans le DTD strict pour cellpadding/cellspacing -->
<!ENTITY % Length "CDATA" -- longueur nn pour des pixels ou nn% pour un pourcentage -->
<!ENTITY % MultiLength "CDATA" -- en pixels, en pourcentage ou relative -->

<![ %HTML.Frameset; [
<!ENTITY % MultiLengths "CDATA" -- liste de longueurs multiples, séparées par des virgules -->
]]>

<!ENTITY % Pixels "CDATA" -- entier représentant la longueur en pixels -->


<!-- Pour éviter les problèmes avec les agents utilisateurs en
   mode texte seul comme pour rendre compréhensible et navigable le contenu des images
   pour l'utilisateur d'un agent utilisateur non-visuel, vous devez fournir
   une description via l'attribut ALT et éviter les images cliquables côté serveur -->
<!ELEMENT IMG - O EMPTY                -- Embedded image -->
<!ATTLIST IMG
  %attrs;                              -- %coreattrs, %i18n, %events --
  src         %URI;          #REQUIRED -- URI de l'image à incorporer --
  alt         %Text;         #REQUIRED -- brève description --
  longdesc    %URI;          #IMPLIED  -- lien vers une description longue
                                          (en complément de l'attribut alt) --
  name        CDATA          #IMPLIED  -- nom de l'image pour les scripts --
  height      %Length;       #IMPLIED  -- surclasse la hauteur --
  width       %Length;       #IMPLIED  -- surclasse la largeur --
  usemap      %URI;          #IMPLIED  -- utiliser une image cliquable côté client --
  ismap       (ismap)        #IMPLIED  -- utiliser une image cliquable côté serveur --
  >

<!-- l'attribut USEMAP pointe vers un élément MAP qui peut
  se trouver dans le document ou dans un document externe, biens que le dernier
  ne soit pas largement reconnu -->

<!--==================== OBJECT ======================================-->
<!--
  L'élément OBJECT s'utiliser pour incorporer des objets comme
  parties des pages HTML, les éléments PARAM devraient précéder
  un autre contenu. La technicité du modèle de contenu mixte de SGML
  empêche de spécifier ceci formellement...
-->

<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- objet incorporé générique -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- déclare mais n'instancie pas de drapeau --
  classid     %URI;          #IMPLIED  -- identifie une implémentation --
  codebase    %URI;          #IMPLIED  -- URI de base pour classid, data, archive --
  data        %URI;          #IMPLIED  -- référence aux données de l'objet --
  type        %ContentType;  #IMPLIED  -- type de contenu pour l'attribut data --
  codetype    %ContentType;  #IMPLIED  -- type de contenu pour l'attribut code --
  archive     CDATA          #IMPLIED  -- liste d'URI séparés par des espaces --
  standby     %Text;         #IMPLIED  -- message à montrer pendant le chargement --
  height      %Length;       #IMPLIED  -- surclasse la hauteur --
  width       %Length;       #IMPLIED  -- surclasse la largeur --
  usemap      %URI;          #IMPLIED  -- utiliser une image cliquable côté client --
  name        CDATA          #IMPLIED  -- soumettre comme partie d'un formulaire --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  %reserved;                           -- réservé pour possible utilisation future --
  >

<!ELEMENT PARAM - O EMPTY              -- valeur de propriété nommée -->
<!ATTLIST PARAM
  id          ID             #IMPLIED  -- id unique au document --
  name        CDATA          #REQUIRED -- nom de propriété --
  value       CDATA          #IMPLIED  -- valeur de propriété --
  valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
  type        %ContentType;  #IMPLIED  -- type de contenu pour l'attribut value
                                          quand valuetype=ref --
  >


<!--=================== Règle horizontale ==================================-->

<!ELEMENT HR - O EMPTY -- règle horizontale -->
<!ATTLIST HR
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Paragraphes =======================================-->

<!ELEMENT P - O (%inline;)*            -- paragraphe -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Titres =========================================-->

<!--
  Il y a six niveaux de titrage partant de H1 (le plus important)
  jusqu'à H6 (le moins important).
-->

<!ELEMENT (%heading;)  - - (%inline;)* -- titre -->
<!ATTLIST (%heading;)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--=================== Texte préformaté ================================-->

<!-- Exclut le balisage des images et les changements dans la taille de la police -->
<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">

<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- texte préformaté -->
<!ATTLIST PRE
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--===================== Citations en-ligne ==================================-->

<!ELEMENT Q - - (%inline;)*            -- brè citation en-ligne -->
<!ATTLIST Q
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI du document ou message sources --
  >

<!--=================== Citations en bloc ================================-->

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- longue citation -->
<!ATTLIST BLOCKQUOTE
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- URI du document ou message sources --
  >

<!--=================== Texte inséré/supprimé ============================-->


<!-- INS/DEL are handled by inclusion on BODY -->
<!ELEMENT (INS|DEL) - - (%flow;)*      -- texte inséré, ou supprimé -->
<!ATTLIST (INS|DEL)
  %attrs;                              -- %coreattrs, %i18n, %events --
  cite        %URI;          #IMPLIED  -- info sur le motif du changement --
  datetime    %Datetime;     #IMPLIED  -- date et heure du changement --
  >

<!--=================== Listes ============================================-->

<!-- Listes de définitions - DT pour le terme, DD pour sa définition -->

<!ELEMENT DL - - (DT|DD)+              -- liste de définitions -->
<!ATTLIST DL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT DT - O (%inline;)*           -- terme de définition -->
<!ELEMENT DD - O (%flow;)*             -- définition en question -->
<!ATTLIST (DT|DD)
  %attrs;                              -- %coreattrs, %i18n, %events --
  >


<!ELEMENT OL - - (LI)+                 -- liste ordonnée -->
<!ATTLIST OL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!-- Styles de puce des listes non-ordonnées (UL) -->
<!ELEMENT UL - - (LI)+                 -- liste non-ordonnée -->
<!ATTLIST UL
  %attrs;                              -- %coreattrs, %i18n, %events --
  >



<!ELEMENT LI - O (%flow;)*             -- item de liste -->
<!ATTLIST LI
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Formulaires ===============================================-->
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- formulaire interactif -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- gestionnaire de formulaire côté serveur --
  method      (GET|POST)     GET       -- méthode HTTP utilisée pour soumettre le formulaire --
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- liste de types MIME
                                          pour chargement de fichier sur serveur --
  name        CDATA          #IMPLIED  -- nom du formulaire pour les scripts --
  onsubmit    %Script;       #IMPLIED  -- le formulaire a été soumis --
  onreset     %Script;       #IMPLIED  -- le formulaire a été réinitialisé --
  accept-charset %Charsets;  #IMPLIED  -- liste des jeux de caractères reconnus --
  >

<!-- Chaque label doit contenir plus d'UN champs -->
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- texte de label d'un champs de formulaire -->
<!ATTLIST LABEL
  %attrs;                              -- %coreattrs, %i18n, %events --
  for         IDREF          #IMPLIED  -- correspond à la valeur ID d'un champs --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  >

<!ENTITY % InputType
  "(TEXT | PASSWORD | CHECKBOX |
    RADIO | SUBMIT | RESET |
    FILE | HIDDEN | IMAGE | BUTTON)"
   >

<!-- Nom d'attribut requis pour tous, sauf submit et reset -->
<!ELEMENT INPUT - O EMPTY              -- commande de formulaire -->
<!ATTLIST INPUT
  %attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- le type de gadget nécessaire --
  name        CDATA          #IMPLIED  -- soumettre comme partie du formulaire --
  value       CDATA          #IMPLIED  -- spécifier pour les boutons radio
                                          et les cases à cocher --
  checked     (checked)      #IMPLIED  -- pour les boutons radio et les cases à cocher --
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  readonly    (readonly)     #IMPLIED  -- pour les types text et passwd --
  size        CDATA          #IMPLIED  -- propre à chaque type de champs --
  maxlength   NUMBER         #IMPLIED  -- nombre de caractères maxi des champs textuels --
  src         %URI;          #IMPLIED  -- pour les champs avec des images --
  alt         CDATA          #IMPLIED  -- brève description --
  usemap      %URI;          #IMPLIED  -- utiliser une image cliquable côté client --
  ismap       (ismap)        #IMPLIED  -- utiliser une image cliquable côté serveur --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  onselect    %Script;       #IMPLIED  -- un certain texte a été sélectionné --
  onchange    %Script;       #IMPLIED  -- la valeur de l'élément a changé --
  accept      %ContentTypes; #IMPLIED  -- liste de types MIME
                                          pour chargement de fichier sur serveur --
  %reserved;                           -- réservé pour possible utilisation future --
  >

<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- sélecteur d'option -->
<!ATTLIST SELECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED  -- nom du champs --
  size        NUMBER         #IMPLIED  -- rangées visibles --
  multiple    (multiple)     #IMPLIED  -- une seule sélection par défaut --
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  onchange    %Script;       #IMPLIED  -- la valeur de l'élément a changé --
  %reserved;                           -- réservé pour possible utilisation future --
  >

<!ELEMENT OPTGROUP - - (OPTION)+ -- groupe d'options -->
<!ATTLIST OPTGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  label       %Text;         #REQUIRED -- à utiliser dans les menus hiérarchiques --
  >
 
<!ELEMENT OPTION - O (#PCDATA)         -- option sélectionnable -->
<!ATTLIST OPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  selected    (selected)     #IMPLIED  errata-05
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  label       %Text;         #IMPLIED  -- à utiliser dans les menus hiérarchiques --
  value       CDATA          #IMPLIED  -- defaults to element content --
  >

<!ELEMENT TEXTAREA - - (#PCDATA)       -- champs textuel multilignes -->
<!ATTLIST TEXTAREA
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  rows        NUMBER         #REQUIRED
  cols        NUMBER         #REQUIRED
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  readonly    (readonly)     #IMPLIED
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  onselect    %Script;       #IMPLIED  -- un certain texte a été sélectionné --
  onchange    %Script;       #IMPLIED  -- la valeur de l'élément a changé --
  %reserved;                           -- réservé pour possible utilisation future --
  >

<!--
  Le type #PCDATA est pour résoudre le problème du contenu mixte,
  selon la spécification seuls les blancs sont autorisés ici !
 -->
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- groupe de commandes de formulaire -->
<!ATTLIST FIELDSET
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!ELEMENT LEGEND - - (%inline;)*       -- légende du groupe de commandes -->

<!ATTLIST LEGEND
  %attrs;                              -- %coreattrs, %i18n, %events --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  >

<!ELEMENT BUTTON - -
     (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
     -- bouton poussoir -->
<!ATTLIST BUTTON
  %attrs;                              -- %coreattrs, %i18n, %events --
  name        CDATA          #IMPLIED
  value       CDATA          #IMPLIED  -- envoyé au serveur à la soumission --
  type        (button|submit|reset) submit -- à utiliser comme bouton de formulaire --
  disabled    (disabled)     #IMPLIED  -- indisponible dans ce contexte --
  tabindex    NUMBER         #IMPLIED  -- position dans l'ordre de tabulation --
  accesskey   %Character;    #IMPLIED  -- touche de caractère pour l'accessibilité --
  onfocus     %Script;       #IMPLIED  -- l'élément a l'attention --
  onblur      %Script;       #IMPLIED  -- l'élément perd l'attention --
  %reserved;                           -- réservé pour possible utilisation future --
  >

<!--======================= Tables =======================================-->

<!-- Norme des tables HTML IETF, voir [RFC1942] -->

<!--
 L'attribut BORDER fixe l'épaisseur du cadre autour de la table.
 L'unité par défaut est le pixel.

 L'attribut FRAME spécifie quelles parties du cadre autour de la table
 devraient être restituées. Les valeurs ne sont pas les même que pour
 COLS pour éviter un conflit de nom avec l'attribut VALIGN.

 La valeur "border" est incluses pour rétro-compatibilité avec <TABLE BORDER>
 ce qui produit frame=border et border=implied.
 Pour <TABLE BORDER=1>, on a border=1 et frame=implied. Dans ce cas, il vaut mieux traiter
 cela comme frame=border pour rétro-compatibilité avec les navigateurs actuels.
-->
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">

<!--
 L'attribut RULES définit quelles règles dessiner entre les cellules :

 si RULES est absent alors supposer :
     "none" si BORDER est absent ou BORDER=0, sinon "all"
-->

<!ENTITY % TRules "(none | groups | rows | cols | all)">

<!-- Placement horizontal de la table par rapport au document -->
<!ENTITY % TAlign "(left|center|right)">

<!-- Attributs d'alignement horizontal pour le contenu de la cellule -->
<!ENTITY % cellhalign
  "align      (left|center|right|justify|char) #IMPLIED
   char       %Character;    #IMPLIED  -- caractère d'alignement, e.g. char=':' --
   charoff    %Length;       #IMPLIED  -- décalage pour caractère d'alignement --"
  >

<!-- Attributs d'alignement vertical pour le contenu de la cellule -->
<!ENTITY % cellvalign
  "valign     (top|middle|bottom|baseline) #IMPLIED"
  >

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- légende de la table -->
<!ELEMENT THEAD    - O (TR)+           -- en-tête de la table -->
<!ELEMENT TFOOT    - O (TR)+           -- pied de la table -->
<!ELEMENT TBODY    O O (TR)+           -- corps de la table -->
<!ELEMENT COLGROUP - O (COL)*          -- groupe de colonnes de table -->
<!ELEMENT COL      - O EMPTY           -- colonne de table -->
<!ELEMENT TR       - O (TH|TD)+        -- rangée de table -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- cellule de rubrique ou de données de la table -->

<!ATTLIST TABLE                        -- l'élément table --
  %attrs;                              -- %coreattrs, %i18n, %events --
  summary     %Text;         #IMPLIED  -- objet/structure pour sortie vocale --
  width       %Length;       #IMPLIED  -- largeur de la table --
  border      %Pixels;       #IMPLIED  -- l'épaisseur du cadre autour de la table --
  frame       %TFrame;       #IMPLIED  -- quelles parties du cadre restituer --
  rules       %TRules;       #IMPLIED  -- règles entre rangées et colonnes --
  cellspacing %Length;       #IMPLIED  -- espacement entre cellules --
  cellpadding %Length;       #IMPLIED  -- espacement à l'intérieur des cellules --
  %reserved;                           -- réservé pour possible utilisation future --
  datapagesize CDATA         #IMPLIED  -- réservé pour possible utilisation future --
  >


<!ATTLIST CAPTION
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--
COLGROUP regroupe un jeu d'éléments COL. Il permet de
rassembler plusieurs colonnes sémantiquement liées.
-->
<!ATTLIST COLGROUP
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- nombre de colonne par défaut dans le groupe --
  width       %MultiLength;  #IMPLIED  -- largeur par défaut des COL contenues --
  %cellhalign;                         -- alignement horizontal dans les cellules --
  %cellvalign;                         -- alignement vertical dans les cellules --
  >

<!--
 Les éléments COL définissent les propriétés
 d'alignement des cellules dans une ou plusieurs colonnes.

 L'attribut WIDTH spécifie la largeur des colonnes, par exemple :

     width=64        largeur en pixels à l'écran
     width=0.5*      largeur relative de 0.5

 L'attribut SPAN amène les attributs d'un élément COL à
 s'appliquer sur plusieurs colonnes.
-->
<!ATTLIST COL                          -- groupes et propriétés de colonne --
  %attrs;                              -- %coreattrs, %i18n, %events --
  span        NUMBER         1         -- les attributs de COL affectent N colonnes --
  width       %MultiLength;  #IMPLIED  -- spécification de la largeur de colonne --
  %cellhalign;                         -- alignement horizontal dans les cellules --
  %cellvalign;                         -- alignement vertical dans les cellules --
  >

<!--
    Utilisez THEAD pour dupliquer les en-têtes lors de la rupture
    d'une table hors des limites de la page, ou pour avoir des en-têtes
    statique quand les sections TBODY sont restituées en panneaux
    défilants.

    Utilisez TFOOT pour dupliquer les pieds lors de la rupture d'une table
    hors des limites de la page, ou pour avoir des en-têtes statiques
    quand les sections TBODY sont restituées en panneaux défilants.

    Utilisez plusieurs sections TBODY quand il est besoin de règles entre
    des groupes de rangées de table.
-->
<!ATTLIST (THEAD|TBODY|TFOOT)          -- section de table --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alignement horizontal dans les cellules --
  %cellvalign;                         -- alignement vertical dans les cellules --
  >

<!ATTLIST TR                           -- rangée de table --
  %attrs;                              -- %coreattrs, %i18n, %events --
  %cellhalign;                         -- alignement horizontal dans les cellules --
  %cellvalign;                         -- alignement vertical dans les cellules --
  >



<!-- L'attribut scope est plus simple que l'attribut headers pour les tables communes -->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">

<!-- TH est pour une rubrique, TD pour des données,
   mais pour les cellules ambivalentes, utilisez TD -->
<!ATTLIST (TH|TD)                      -- cellule de rubrique ou de données --
  %attrs;                              -- %coreattrs, %i18n, %events --
  abbr        %Text;         #IMPLIED  -- abréviation pour cellule de rubrique --
  axis        CDATA          #IMPLIED  -- liste des rubriques en relation,
                                          séparées par des virgules --
  headers     IDREFS         #IMPLIED  -- liste d'id pour les cellules de rubrique --
  scope       %Scope;        #IMPLIED  -- portée couverte par les cellules de rubrique --
  rowspan     NUMBER         1         -- nombre de rangées couvertes par la cellule --
  colspan     NUMBER         1         -- nombre de colonnes couvertes par la cellule --
  %cellhalign;                         -- alignement horizontal dans les cellules --
  %cellvalign;                         -- alignement vertical dans les cellules --
  >


<!--================ En-tête du document =======================================-->
<!-- %head.misc; défini plus tôt comme "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- en-tête du document -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- dictionnaire nommé de méta-informations --
  >

<!-- L'élément TITLE n'est pas censé faire partie du flux de texte.
       Il devrait s'afficher, par exemple, comme en-tête de la page ou titre de la fenêtre.
       Il ne peut y avoir qu'un titre exactement par document.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- titre du document -->
<!ATTLIST TITLE %i18n>


<!ELEMENT BASE - O EMPTY               -- URI de base du document -->
<!ATTLIST BASE
  href        %URI;          #REQUIRED -- URI qui fait office d'URI de base --
  >

<!ELEMENT META - O EMPTY               -- méta-information générique -->
<!ATTLIST META
  %i18n;                               -- lang, dir, à utiliser avec l'attribut content --
  http-equiv  NAME           #IMPLIED  -- nom de l'en-tête HTTP de réponse --
  name        NAME           #IMPLIED  -- nom de méta-information --
  content     CDATA          #REQUIRED -- informations associées --
  scheme      CDATA          #IMPLIED  -- sélectionne la forme du contenu --
  >

<!ELEMENT STYLE - - %StyleSheet        -- indication de style -->
<!ATTLIST STYLE
  %i18n;                               -- lang, dir, à utiliser avec l'attribut title --
  type        %ContentType;  #REQUIRED -- type de contenu du langage de style --
  media       %MediaDesc;    #IMPLIED  -- conçu pour ces médias --
  title       %Text;         #IMPLIED  -- titre consultatif --
  >

<!ELEMENT SCRIPT - - %Script;          -- déclarations de script -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- encodage de caractères de la ressource reliée --
  type        %ContentType;  #REQUIRED -- type de contenu du langage de script --
  src         %URI;          #IMPLIED  -- URI d'un script externe --
  defer       (defer)        #IMPLIED  -- l'agent utilisateur peut différer
                                          l'exécution du script --
  event       CDATA          #IMPLIED  -- réservé pour possible utilisation future --
  for         %URI;          #IMPLIED  -- réservé pour possible utilisation future --
  >

<!ELEMENT NOSCRIPT - - (%block;)+
  -- conteneur du contenu de remplacement pour une restitution sans scripts -->
<!ATTLIST NOSCRIPT
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

<!--================ Structure du document ==================================-->
<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- élément racine du document -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >