5568 sujets

Sémantique web et HTML

Bonjour,

J'espère poster dans le bon forum..

Je suis en train de travailler sur un nouveau site, mais j'ai un soucis de validation de code que je n'arrive pas à comprendre. L'erreur selon le validator du W3C est la suivante :

   1.   Error  Line 13, Column 7: end tag for "head" which is not finished


upload/6636-capture.jpeg

Et voici mon code source :

    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr" xml:lang="fr"> 



<head>

    <link href='/Css/styles.css' rel='stylesheet' type='text/css' />
    <!--[if  IE]><link href='/Css/style_ IE.css' rel='stylesheet' type='text/css' /><![endif]-->
    <link rel='shortcut icon' type='image/x-icon' href='/Images/favicon.ico' />
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="keywords" content="mot cle1, mot cle 2" />

    <meta name="description" content="La description de mon site" />
</head>

<body>
...
</body>

</html>





Ma balise <head> est bien fermée, mes links aussi, je ne vois aucune erreur... Quelqu'un a-t-il une idée ?

Merci
Modifié par gussoner (02 Aug 2010 - 21:12)
Administrateur
Hello,

Comme l'explique l'erreur, tu n'as pas d'élément (obligatoire) <title> dans ton <head> Smiley smile

PS : je déplace dans le salon HTML puisqu'il ne s'agit pas d'une question de critique de site Smiley cligne
Modifié par Raphael (02 Aug 2010 - 21:04)
Ha OK, tout simplement.. En fait le <title> vient après j'appelle un fonction

<script type='text/javascript'>
document.title = 'mon titre';
</script>


Je mettrais quand même un <title></title> pour respecter les standards quitte à le modifier par la suite avec la fonction.

C'est vrai que je n'avais pas bien lu le message du validateur Smiley confused

Merci !
Salut,

Quoi qu'il en soit, ton <title>, qu'il provienne d'une base de donnée ou non, doit être renseigné entre les balises <head> et </head>, sinon ce sera une erreur.

Quand à appeler ton titre via javascript, si javascript est désactivé, ton titre ne sera plus accessible, c'est bien loin d'être idéal et il conviendrait de faire différemment (soit en php, soit en dur). Smiley cligne
Mikachu a écrit :
Salut,

Quoi qu'il en soit, ton <title>, qu'il provienne d'une base de donnée ou non, doit être renseigné entre les balises <head> et </head>, sinon ce sera une erreur.

Quand à appeler ton titre via javascript, si javascript est désactivé, ton titre ne sera plus accessible, c'est bien loin d'être idéal et il conviendrait de faire différemment (soit en php, soit en dur). Smiley cligne


Salut,

oui je comprends ce que tu dis. Du coup ce que je pense faire c'est mettre un titre en dur en insérant des <title></title> dans le <head>, puis appeler ma fonction en js pour personnaliser le titre selon la page chargée.

Quand à faire ca en php, la seule astuce que j'ai trouvé consiste à utiliser ob_start() puis faire un preg_replace("/<title>(.*?)<\/title>) solution que je trouve un peu fastidieuse, d'ou l'appel d'une fonction JS, dont j'essaye pourtant de limiter au maximum l'utilisation...
Salut,

gussoner a écrit :
Quand à faire ca en php, la seule astuce que j'ai trouvé consiste à utiliser ob_start() puis faire un preg_replace("/<title>(.*?)<\/title>) solution que je trouve un peu fastidieuse, d'ou l'appel d'une fonction JS, dont j'essaye pourtant de limiter au maximum l'utilisation...
Euh... ça me semble bien compliqué. Smiley rolleyes

Ne pourrais-tu pas simplifier comme dans cet exemple ?

Au passage il n'y a aucune raison de limiter l'utilisation de JavaScript à condition de bien s'y prendre (ce qui ne me semble pas du tout le cas ici Smiley cligne ).
Heyoan a écrit :
Salut,

Euh... ça me semble bien compliqué...



Salut,

Bon la on est sur carrément autre chose que le sujet de départ..

J'ai jeté un oeil à la solution proposée dans l'autre topic, mais le problème est qu'en php j'utilise un include pour introduire mon <head>, qui est dans un fichier qui s'appelle head.php. Ce fichier est appelé depuis toutes les pages. Si j'utilise basename(__FILE__), il va m'afficher head.php depuis toutes les pages. La fonction que j'appelle pour changer le titre de ma page ne se trouve pas dans le head.php mais dans la page elle même, index.php, test.php etc, après le <head>.. D'ou la nécessité d'utiliser ob_start(), ou du JS dans manière pas très conventionnelle je te l'accorde.

Quand au lien des bonnes pratiques en JS, c'est sur qu'il faudrait que j'arrive à lui consacrer du temps.. Smiley rolleyes
Si la solution à base de __FILE__ pose problème tu pourrais jeter un oeil à ce sujet qui propose plusieurs pistes (dont la bufferisation).