5568 sujets

Sémantique web et HTML

Bonjour à tous,

Est-ce que dans la déclaration d'un doctype, l'url de son document est obligatoire ?

J'ai ceci :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


Le validateur du W3C ne bronche pas.

Dans la liste des doctype fournie par Validome, la déclaration des 2.0 et 3.0 est "courte", mais la 4.0 est avec l'adresse.

La lecture de cette page me laisse perplexe. Il est écrit, à propos de l'absence de l'url, que "le validateur du W3C n'en tient actuellement pas compte".

Ma question est donc : le validateur n'en tient pas compte parce qu'il ne sait pas détecter cette erreur ou parce que ce n'est pas obligatoire ?

Question subsidiaire : la présence d'un commentaire avant la déclaration du doctype ne gène pas le validateur, mais est-ce quand même une erreur qui n'est pas détectée ?

Par avance merci de m'éclairer de vos lumières Smiley smile
Modifié par boulaneige (18 Apr 2007 - 11:12)
Salut,

Je ne suis pas un expert en la matière, mais voilà ce qu'il me semble : L'url est optionnelle en SGML, le FPI (Formal Public Identifier) doit identifier de façon unique le type de document. Pour un identifiant "PUBLIC", il s'agit d'une chaîne de caractère unique (en l'occurrence "-//W3C//DTD HTML 4.0 Transitional//EN"). Pour un identifiant "SYSTEM", il s'agit de l'url de la DTD.

Ceci dit, le fait de fournir l'url permet aux parseurs SGML qui en connaissent pas le FPI donné d'accéder quand même à la DTD. De plus, c'est une garantie que ton document (X)HTML ne sera pas rendu en mode Quirks.

Mais une fois encore, tout ça est à prendre avec des pincettes.
Merci de ta réponse,

L'url serait donc facultative, son absence ne rendrait pas la déclaration invalide.

J'aurais du le préciser dès mon premier message, mais c'est dans ce cadre que je me pose cette question à propos du doctype "court" :

Fiche 1.8 AccessiWeb
Après un petit test avec le validateur du W3C pour la page suivante :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">

<html xmlns="http://www.w3.org/1999/xhtml"><head>
	<title></title>
</head><body>
</body></html>
J'obtiens le message suivant :
a écrit :
Your document includes a DOCTYPE declaration with a public identifier (e.g. "-//W3C//DTD XHTML 1.0 Strict//EN") but no system identifier (e.g. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"). This is authorized in HTML (based on SGML), but not in XML-based languages.
L'url (ou l'identifieur système) est apparemment donc bien optionnelle en SGML mais pas en XML. Mais encore une fois, je pense que l'omettre empêche que ton document soit utilisé par des outils manipulant le SGML mais ne connaissant pas le HTML (a priori, ce n'est pas très grave), et risque dans certains cas de faire passer le navigateur en mode Quirks.

C'est a priori une bonne habitude de la mettre systématiquement, surtout qu'elle est obligatoire pour les documents XML.
Je te remercie grandement de ton aide. Ne constatant pas de problème de validation avec le doctype concerné, j'ai pas pensé à tester la syntaxe avec une autre "version". Promis, ce soir je me fouette aux orties Smiley confused

a écrit :
This is authorized in HTML (based on SGML)


Ce doctype, version "courte", est donc valide, même si, effectivement, la version complète est préférable.

Encore merci pour ton aide.
boulaneige a écrit :
Encore merci pour ton aide.

Pas de problème, je pense que j'en ai appris autant que toi. Smiley smile
Modifié par Julien Royer (18 Apr 2007 - 11:17)
Tiens, je n'avais pas vu ta question subsidiaire. En XML, la présence d'un commentaire avant la déclaration de type de document est autorisée, je suppose donc que c'est aussi le cas en SGML. Ceci dit, je pense que ça peut faire passer IE 6 en mode quirks, à éviter donc.
Modifié par Julien Royer (18 Apr 2007 - 11:33)
Le validateur a validé la page avec le doctype "court" ayant un commentaire avant sa déclaration.

Par contre j'ignorais que ça faisait basculer IE en mode quirk.

Message de Laurent Denis :

a écrit :
Et pour en revenir à IE6 : n'importe quel chaîne de caractères (non espaces) placée AVANT la DTD va le faire basculer en mode de rendu Quirks, quelque-soit la DTD. C'est un bug : il ne cherche la DTD qu'au premier caractère différents d'une espace. Un bête commentaire en <-- --> ou en <![CDATA[... produira le même effet que le prologue XML.