Validation au W3C de pages HTML 4 avec frames

 
Pourquoi valider ses pages html ?
 

parce que ça flatte l'ego. Ça pose son mec d'avoir réussi à se dépêtrer des chausse-trapes de l'orthodoxie du W3C. Si vous n'êtes pas sensible à la beauté de cet acte, inutile d'aller plus loin.

vague avantage : parce que les navigateurs afficheront une mise en page conforme. Si le navigateur ne trouve pas d'indication du type de document au début de votre page (juste avant la balise <html>) , ou s'il détecte une contradiction entre cette indication et la sémantique déployée, il passe en mode dégradé.   A vrai dire, les navigateurs sont tellement bons qu'ils digèrent les cailloux et qu'on ne voit guère de différence.


 
Comment valider ses pages html ?
 

la page doit préalablement avoir été chargée en ligne sur un site.

se rendre sur le Markup Validation Service du W3C site exterieur, taper (ou copier/coller) dans la fenêtre l'URL de la page et cliquer. Attendez-vous à un déluge d'erreurs. S'il n'y en a pas (vous êtes très fort) c'est une barre verte et "Congratulations " qui s'affiche.

 

Attention : si vous voulez valider une page avec des frames, il faut valider successivement la page support, puis chacune des pages incluses dans les frames, en indiquant leur nom individuellement.

Exemple :   la page [ http://www.toto.org/mabellepage.htm ] est une page à frames, définissant trois cadres où s'inscriront respectivement les pages [ frame1.htm ] , [ frame2.htm ] et [ frame3.htm ] . Il faut donc tester [ http://www.toto.org/mabellepage.htm ] puis [ http://www.toto.org/frame1.htm ] puis [ http://www.toto.org/frame2.htm ] etc...   Donc, remplacer à la main "mabellepage" par "frame1" etc... puisqu'on ne peut pas faire de copier/coller, vu que le nom des pages contenues dans un frame n'apparaît pas dans la fenêtre du navigateur.


 
Pourquoi la présente page pour le cas des pages à frames ?
 

Parce que c'est bête comme chou si on sait ce qu'il faut faire mais que c'est l'enfer pour trouver la marche à suivre. Comme d'habitude les tutoriels du W3C sont abscons comme pas possible, partant du principe qu'ils s'adressent à des utilisateurs qui baignent dans l'abstraction symbolique utilisée. Je présume que les gens du W3C se délassent de leur tache ingrate en se marrant entre eux à l'idée que les utilisateurs "normaux" vont en baver.   En outre, si on a la chance de trouver de-ci de-là une bribe qui éclaire (voir liens ci-dessous), on ne vous dévoilera jamais tout en bloc.

La difficulté est d'indiquer les bonnes déclarations de type de document (en anglais "Doctype declaration") : c'est, dans chaque page, la mention qui précède la balise <html>. En premier lieu il faut choisir la bonne déclaration pour la page à frames (celle dont le corps de page comporte la mention "frameset"); or on a tendance à copier ce que l'on trouve à droite à gauche en espérant que ça gaze (et ça fonctionne, tant qu'on ne cherche pas à valider, c'est à dire que l'affichage dans un navigateur se passe bien). En second lieu on tombe sur la fourberie cachée : la bonne déclaration n'est pas la même pour la page à frames (qui doit comporter la déclaration "spéciale frames") et pour les pages incluses dans les frames. Si on y réfléchit bien, c'est logique car les pages incluses dans les frames sont des pages courantes manipulées par les instructions de frameset. Mais ça irait mieux en le disant.


 
Ce qu'il faut indiquer d'une part pour une page à frames et d'autre part pour les pages incluses dans les frames créés
 

  Page à frames   la déclaration doit être :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
  "http://www.w3.org/TR/html4/frameset.dtd">

la page se présentera comme suit :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
    <html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=le type que vous choisissez">
    <TITLE>Titre (obligatoire)</TITLE>
    (autres balises meta)
    ...
</head>
    <frameset   [ paramètres ]>
        <frame src="nom_de_la_page_1.html" name="le-nom-qui-vous-plaît-1">
        <frame src="nom_de_la_page_2.html" name="le-nom-qui-vous-plaît-2">
            etc...
        <noframes>
            (noframes est optionnel)
        </noframes>
    </frameset>
</html>

Remarques : (1) pas de <body> ... </body>   (2) ça se complique un peu si vous avez à la fois des cadres verticaux et horizontaux
 

  Les pages incluses dans chacun des frames   la déclaration doit être celle d'une page normale. Ce pourra être :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

la page se présentera comme suit :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
    <html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=le type que vous choisissez">
    <TITLE>Titre (obligatoire)</TITLE>
        (autres balises meta)
    ...
</head>
    <body>
        <br>
        <br>     corps de la page :
        <br>     comme vous avez beaucoup de choses à dire,
        <br>     j'ai prévu cinq lignes
        <br>
    </body>
</html>

Remarque : vous pouvez choisir de déclarer les frames dans un autre type que le 4.01 Transitional. Mais si vous choisissez le "strict", attention à la douane ! A priori vous pouvez prendre du 3, du 4 ou du 5, toutefois c'est plus homogène de développer des pages de frames en 4.01 car c'est celui qui comporte la variante de DTD "frameset".

 
Liens
 

page Wikipedia site exterieur
recommandations W3C site exterieur


 
Remarque au sujet du HTML 5 :
 

le HTML 5 comporte aussi des frames, les "iframes". C'est une autre histoire.

 


mon site photo site exterieur mon site sur les parcs de la fin XVIIIème site exterieur pages astronomie site exterieur
Accueil Plan des pages perso

 
©   D. Césari   contact - mise à jour le 16 décembre 2014