<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>Openweb.eu.org - Toi comprendre moi ?</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
    <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
    <meta name="DC.Language" scheme="RFC3066" content="fr" />
    <meta name="DC.Identifier" content="toi_comprendre_moi" />
    <meta name="DC.Creator" content="Tristan Nitot" />
    <meta name="DC.Date.created" scheme="W3CDTF" content="2003-04-21" />
    <meta name="DC.Date.modified" scheme="W3CDTF" content="2003-04-21" />
    <meta name="DC.Rights" content="Cet article est sous licence Creative Commons Attribution-ShareAlike." />
    <meta name="DC.Subject" content="expert, gourou, decideur, xhtml, structure" />
  </head>
  <body>
    <h1>Toi comprendre moi ?</h1>
    <ul>
      <li>
        <strong>Profil :</strong> <a href="/expert/">Expert</a>, <a href="/gourou/">Gourou</a>, <a href="/decideur/">Décideur</a>
      </li>
      <li>
        <strong>Technologie :</strong> <a href="/xhtml/">(X)HTML</a>
      </li>
      <li>
        <strong>Thème :</strong> <a href="/structure/">Structure</a>
      </li>
      <li>
        <strong>Auteur :</strong> <a href="mailto:tristan.nitot%40openweb.eu.org">Tristan Nitot</a>
      </li>
      <li>
        <strong>Mise à jour :</strong> 21/04/2003</li>
    </ul>
    <h2>En bref</h2>
    <p>Validation, Déclaration de Type de Document : la grammaire d'un langage Web universel.</p>
    <hr />
    <p>Il est bizarre, ce titre… Pourtant, vous avez bien compris qu'il signifiait <q>Me comprenez-vous ?</q> L'idée à exprimer était simple. Mais si elle avait été plus compliquée et si l'auteur et le lecteur n'avaient pas eu les mêmes références culturelles, le message risquait de beaucoup moins bien passer, voire de donner lieu à de splendides quiproquos à faire pâlir les auteurs de théâtre de boulevard.</p>
    <h3>Lever l'ambiguïté</h3>
    <p>Pour le Web, dont il est parfois nécessaire de rappeler qu'il a été inventé pour partager l'information en faisant fi des ordinateurs et des programmes utilisés, bien se faire comprendre est un impératif. Et les langages du Web, comme <acronym title="HyperText Markup Language" lang="en">HTML</acronym> et <acronym title="eXtensible HyperText Markup Language" lang="en">XHTML</acronym>, sont en fait des langues qui obéissent chacune à une grammaire. Il est possible de se faire comprendre en s'exprimant de façon imprécise, mais on prend un risque, car le lecteur doit interpréter, deviner le sens. Quand une chose est exprimée de façon ambiguë, chacun peut interpréter le message à sa façon. C'est là tout l'intérêt des outils de validation comme le validator, qui rassure l'auteur sur la qualité de son langage (notez bien qu'on peut continuer à dire des âneries syntaxiquement correctes, comme il est tout à fait possible de fabriquer des gilets de sauvetage en béton armés estampillés <acronym title="International Standard Organization" lang="en">ISO</acronym>-9000 :-).</p>
    <h3>Ménager le passé, le présent et le futur</h3>
    <p>Le Web évolue et ses langages aussi. Alors qu'<acronym>HTML</acronym> s'améliore (<acronym>HTML</acronym> 3.2 et 4.01, <acronym>XHTML</acronym> 1.0 et 1.1), sa syntaxe change. Cela signifierait-il que du code <acronym>HTML</acronym> pourrait être conforme à la grammaire du moment, mais ne le serait plus quand une nouvelle version d'<acronym>HTML</acronym> apparaît ? Une telle hypothèse est absurde : devrait-on mettre à jour toutes les pages Web quand le <acronym title="World Wide Web Consortium" lang="en">W3C</acronym> sort une nouvelle spécification   Bien sûr que non. C'est pourquoi chaque document Web doit mentionner la « grammaire » à laquelle il se réfère. Dans le jargon du <acronym>W3C</acronym>, la grammaire est appelée <acronym title="Document Type Definition" lang="en">DTD</acronym> et cette référence est appelée <em>DOCTYPE</em> (pour <em>Type de Document</em>). C'est pour cette raison que le validateur, mentionné précédemment, exige un DOCTYPE pour valider un document, faute de quoi il ne sait pas à quelle grammaire se référer. Le DOCTYPE est nécessairement placé sur la première ligne du document, et concerne l'ensemble du document (remarque : pour les documents <acronym>XHTML</acronym>, il est aussi possible de disposer d'un prologue <acronym title="eXtensible Markup Language" lang="en">XML</acronym>, qui serait alors juste avant le DOCTYPE).</p>
    <h3>Faux-plis contre amidonnage</h3>
    <p>Les navigateurs anciens (comprendre les versions 4.X de Netscape et d'<acronym>IE</acronym>) ont des comportements qui ne sont pas toujours très logiques, mais comparables entre eux, et non conformes aux spécifications du <acronym>W3C</acronym>. Alors que les navigateurs récents se veulent plus conformes aux standards, le dilemme était le suivant : faut-il reproduire les bogues des versions 4 (et rester compatible avec toutes les anciennes pages), ou bien faut-il respecter les standards et simplifier la création de nouvelles pages ? La réponse est (pardonnez-moi ce retour éclair à ma période « culottes courtes ») : « Les deux, mon Capitaine ». Pour les anciennes pages, utiliser le mode de compatibilité avec les bogues, aussi appelé <em>Quirks</em> (faux plis, en anglais). Pour les plus récentes, on utilisera le mode dit <em>strict</em> ou <em>standard</em>, qui respecte au plus près les normes du <acronym>W3C</acronym> (non, la notion d'amidonnage n'existe pas dans <acronym>XHTML</acronym>…). Mais comment le navigateur sait-il faire la différence ? Tout simplement en regardant le DOCTYPE. S'il n'y en a pas, le problème est vite résolu, c'est une page ancienne. Si c'est un DOCTYPE « strict », alors le navigateur est en mode strict. Il existe quantité de  combinaisons possibles, entre les différentes versions de navigateurs et de DOCTYPE. Pour faire le point, Henri Sivonen propose un <a href="http://www.hut.fi/u/hsivonen/doctype.html">tableau récapitulatif</a> à conserver soigneusement. Par ailleurs, le problème le plus fréquemment rencontré par les développeurs est lié à la volonté de rajouter un DOCTYPE à une page contenant un tableau dont les cellules contiennent à leur tour des morceaux d'images. Eric Meyer a écrit un <a href="http://devedge.netscape.com/viewsource/2002/img-table/">article</a> décrivant le problème et propose plusieurs solutions.</p>
    <h3>Conclusion</h3>
    <p>Que l'on parle français ou <acronym>HTML</acronym>, pour être bien compris, il est nécessaire de s'exprimer correctement. Si je m'exprime en <q>soupe de balises</q> (on dirait <q>petit nègre</q> en langage familier), les chances de me faire comprendre sont moindres. Evidemment, je peux vérifier auprès des gens autour de moi qu'ils comprennent bien mon charabia. C'est ce que fait un développeur Web qui produit du code non conforme, le teste dans <acronym title="MicroSoft Internet Explorer" lang="en">MSIE</acronym> et se réjouit qu'il soit visiblement bien interprété, malgré l'ambiguïté. Mais qui dit que d'autres personnes vont comprendre correctement ce que j'exprime mal ? Vais-je demander à tout le monde, autour de moi, s'ils comprennent bien ce que j'exprime mal ? Le développeur Web va-t-il tester son oeuvre dans tous les navigateurs ? C'est une possibilité, mais cela n'est sûrement pas la plus efficace. Pour être compris de façon universelle est sans ambiguïté, mieux vaut prendre l'habitude de s'exprimer correctement dans un langage simple (<acronym>XHTML</acronym>), avec un dictionnaire (le validateur) à portée de main.</p>
    <h3>Liens sur le sujet</h3>
    <ul>
      <li>
        <a href="http://www.hut.fi/u/hsivonen/doctype.html">matrice de compatibilité</a> ;</li>
      <li>
        <a href="http://www.mozilla.org/docs/web-developer/quirks/doctypes.html">modes Quirks dans Mozilla</a> ;</li>
      <li>
        <a href="http://www.opera.com/docs/specs/doctype/">Opera et le DOCTYPE</a> ;</li>
      <li>
        <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp">
          <acronym>IE</acronym> 6/Windows et le DOCTYPE</a> ;</li>
      <li>
        <a href="http://devedge.netscape.com/viewsource/2002/img-table/">les tableaux, les images et les fossés mystérieux</a> ;</li>
      <li>
        <a href="http://devedge.netscape.com/viewsource/2002/almost-standards/">le mode presque standard de Netscape 7.x et Mozilla.</a>
      </li>
    </ul>
  </body>
</html>
