1141 sujets

Accessibilité du Web

bonjour - voila la première ligne HTML de mon site :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//FR "www.monsite.org"><html>


mon site fonctionne (pas de bug) mais je ne vois pas à quoi sert la première ligne HTML

le FR sert a indiquer la langue française - ce qui est le cas - mais ne vaut-il mieux pas remplacer 4.01 par 5 puisque mes lignes de code ont été réalisées avec la dernière syntaxe spécifique à HTML5 (quand elle diffère des version 4 ou 3 ... précédentes) ?

pour le reste je ne vois pas à quoi sert le code !DOCTYPE HTML PUBLIC ou DTD - c'est pour le référencement ?
Bonjour,

Tout d’abord,ton doctype (document type declaration) est incomplet/incorect.

Les doctype HTML 4.01 exacts sont :

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

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

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

Seuls les deux premiers ont une importance. Le dernier est utilisé pour des pages comportant des frames, ce qui est une technique complètement dépréciée. Le doctype Strict est plus restrictif que le doctype Transitional (balises HTML obligatoirement en minuscules, par exemple).

Pour faire court, les doctypes spécifient le lexique (les balises) et la syntaxe à employer dans la page (X)HTML qui les contient, qui sont définis dans une DTD (document type definition). Les doctypes HTML 4.01 et antérieurs et XHTML comportent donc une URL vers ladite DTD.

Ça ne sert plus à rien puisque les navigateurs intègrent les DTD, mais c’est comme ça, et si tes doctypes ne sont pas corrects, ta page sera déclarée non valide par les validateurs HTML.

Plus grave, un doctype incomplet ou carrément erroné peut générer des différences de rendu (et notamment de dimensions) dans certains navigateurs et versions de navigateurs, variables d’un navigateur à l’autre (en fait d’un moteur de rendu à l’autre). On appelle ça le mode Quirks, par opposition au mode Standard, en principe commun à tous les navigateurs, mais ce point peut devoir être actualisé.

En résumé si tu utilises les balises HTML5, ton doctype HTML 4.01 (de surcroît incorrect) ne convient normalement ni à tes balises ni à leur syntaxe. Je te conseille donc de le remplacer par un doctype HTML5. Ceci dit, tu pourras te retrouver avec des différences de rendu ou être amené à revoir la syntaxe de certaines balises (par exemple, en HTML5, la balise <a></a> peut inclure des balises de type block.

Enfin, je t’invite à revoir la site des balises HTML5 et leur syntaxe : si tu t’est trompé sur un doctype, tu devrais peut-être revoir tes connaissances sur ces points.

Et, point de détail, parler de “première ligne” de code n’a pas beaucoup de sens. Tu pourrais supprimer tous les sauts de ligne de ta page et avoir tout ton code sur la première ligne.

Des liens :

http://www.pompage.net/traduction/le-doctype-qu-il-vous-faut

http://www.alsacreations.com/article/lire/560-dtd-doctype-html-xhtml-comment-choisir.html

https://www.lesintegristes.net/2008/04/06/que-se-passe-t-il-en-mode-quirks-traduction/

Bonne continuation.
Modifié par thierry (23 Oct 2016 - 18:50)
Administrateur
Pour conclure le doctype HTML5 actuel est

<!doctype html>

Il n'y a pas mention d'un numéro de version. Et on ne peut pas inventer son propre doctype. Il n'a aucune conséquence sur le référencement.
je parlais bien sur de la “première ligne” contenant du code et non des vides (ligne sans code) la précédent - je ne parlais pas non plus des éventuelles instructions suivantes placées habituellement dans d'autres lignes - j'aurais du écrire “première instruction”

merci bien thierry pour ces explications complètes - je vais lire attentivement les 3 doc que tu as mis en lien ainsi que ton post puis je vais réécrire cette première instruction
Modifié par luc-g2016 (23 Oct 2016 - 19:25)
j'y vois plus claire après avoir lu la documentation cet après-midi

dans la documentation je constate que l'instruction <!DOCTYPE html> suffit pour HTML5 comme tu l'inque dew - mais alors plus besoin de précisier la langue FR ni d'autres paramètres !
Rebonjour.

La langue d'une page web doit être spécifiée das la balise <html> :

<html lang="fr">

Bien sûr,il y a également lieu de signaler toutes les parties d'une page web en d'autres langues que la principale, par exemple :

<blockquote lang="en-us"></blockquote>

Bonne continuation.
Modifié par thierry (23 Oct 2016 - 19:56)
thierry a écrit :
Rebonjour.

La langue d'une page web doit être spécifiée das la balise &lt;html&gt; :

&lt;html lang="fr"&gt;

Bien sûr,il y a également lieu de signaler toutes les parties d'une page web en d'autres langues que la principale, par exemple :

&lt;blockquote lang="en-us"&gt;&lt;/blockquote&gt;

Bonne continuation.

En complément, il me semble sauf erreur qu'il faut rajouter l'attribut @xml:lang sur la balise HTML lorsque le document est en XHTML.
Administrateur
luc-g2016 a écrit :
bonjour - voila la première ligne HTML de mon site :

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//FR "www.monsite.org"&gt;&lt;html&gt;

(…)
le FR sert a indiquer la langue française - ce qui est le cas - (…)

Je rajoute que ici ce FR est inexact :
- ce n'est pas un doctype valide parce que seul EN peut y figurer
- il s'agit de la langue dans laquelle a été écrite la DTD et ce fût en anglais. (il n'y a jamais eu de DTD en français)
Et comme précisé précédemment, vive HTML5 et son doctype ultra-simplifié grâce auxquel on n'a plus à s'embêter avec ça Smiley smile et la langue du document s'indique dans 99,99 % des cas sur l'élément html.

Pour ce qui concerne le référencement, ce qui importe commence dans l'élément head (title, meta, etc) et continue avec le contenu (le contenu, les titres, les liens, etc)
Sur la plupart c'est <!DOCTYPE html> suivi de la langue mais je n'ai jamais vue une déclaration comme cela: &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//FR "www.monsite.org"&gt;&lt;html&gt;
merci pour l'info thierry - je vais remplacer <html> par <html lang="fr"> quand je vais passer à HTML5

j'ai indiqué l'instruction <!DOCTYPE html> pour HTML5 mais j'ai du revenir à l'ancienne - en effet avec cette instruction j'ai un rendu des images dégradé - je ne souhaite pas qu'il y ait de micro-espace entre chaque image - ces micro-espace sont apparut quand j'ai choisit <!DOCTYPE html>

comment faire pour qu'il n'y en ais pas - que faut-il changer dans les lignes de code HTML4 pour faire disparaître ces micro-espace dans HTML5 ?