5568 sujets

Sémantique web et HTML

Sur un modèle validé strict sans difficulté, j'ai fait quelques modifications, et patatra il me trouve 73 erreurs ! L'inconvénient c'est que ces erreurs là me laissent perplexe. A part le fait que le site soit en https je vois pas la différence avec l'autre modèle (changement des titres des menus, page avec tableau valide...)

Pour chaque lien il me trouve 4 erreurs :


# Info  Line 32 column 149: entity was defined here.

...| <a href="article.php3?id_article=15&id_rubrique=7" title="Espace Paye" tabi

# Warning Line 32 column 593: reference not terminated by REFC delimiter.

...rticle.php3?id_article=13&id_rubrique=38" title="Page de contact" accesskey="

&#9993;
# Warning Line 32 column 593: reference to external entity in attribute value.

...rticle.php3?id_article=13&id_rubrique=38" title="Page de contact" accesskey="

&#9993;
# Error Line 32 column 593: reference to entity "id_rubrique" for which no system identifier could be generated.

...rticle.php3?id_article=13&id_rubrique=38" title="Page de contact" accesskey="




Je met l'url provisoirement vers le validateur...
Modifié par Samuel Berg (09 Feb 2006 - 12:41)
Le caractère & n'est pas valide, juste pour tester, remplace le partout dans le source de ta page par &amp; et essaies de valider Smiley cligne

un peu plus d'infos ici

<edit>Oups, bien vu laHyenne!</edit>
Modifié par SuD (09 Feb 2006 - 12:25)
Il me semble que dans la validation, ils te précisent :

The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".

Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&amp;"


Essaye donc de mettre "&amp;" au lieu de tes "&" ?

---
EDIT : (comme sud, mais apparemment il fait un ";" en plus Smiley cligne )
Modifié par LaHyenne (09 Feb 2006 - 12:23)
Bonjour,

L'erreur est simple et très fréquente: le signe & (ampersand) doit être encodé sous la forme &amp; quand il ne sert pas à écrire une référence d'entité comme &eacute; ou &nbsp; ou &#8364; etc. Il faut donc effectivement écrire &amp; au lieu de & dans chaque url.

Ce qui est peut-être plus important à retenir, c'est le mode de fonctionnement du validateur et pourquoi ces accumulations de messages d'erreurs apparemment redondants (4 messages d'erreurs pour une seule erreur à chaque &) : le validateur est un parseur qui n'effectue aucune correction (à la différence de Tidy, par exemple). Une erreur va donc souvent être lue successivement pour chaque partie du contenu concernée. Ici :
- pour le parseur, &id_rubrique se présente comme une entité caractère... mais elle n'existe pas dans la DTD XHTML. Première erreur.
- le parseur continue et se retrouve à tenter à nouveau d'identifier id_rubrique : seconde erreur factuelle
- il poursuit toujours dans l'idée qu'il s'agit d'une entité caractère, et constate qu'elle n'est pas terminée par le point-virgule réglementaire : troisième déclaration d'erreur
- etc.

Il en est de même pour les éléments HTML propriétaire. <embed> par exemple, ou <marquee>, vont générer une cascade d'erreur :
- une pour l'élément
- une pour chacun de ses attributs
Modifié par Laurent Denis (09 Feb 2006 - 12:27)
Je sais pourquoi maintenant :

J'ai oublié d'installer Tidy sur ce site !
Forcément avec Tidy on a pas besoin de s'en soucier, mais c'est bon à savoir, maintenant je ferais attention...

Merci à tous...
Modifié par Samuel Berg (09 Feb 2006 - 12:35)
Laurent,
vu que cette erreur est surtout une erreur d'interprétation du validateur, que faut-il faire dans ce cas?:
- Laisser seulement le caractère & quitte à avoir des erreurs à la validation.
- Corriger pour remplacer dynamiquement par &amp; avec un ini_set (dans le cas de php)

Parce que, finalement, ajouter une lourdeur en plus au code PHP juste pour faire plaisir au validateur ça mérite réflexion?
Ah... non, ce n'est absolument pas une erreur d'interprétation du validateur !

Si je me suis mal fait comprendre, j'en suis désolé.

Il est impératif de corriger systématiquement ces erreurs en remplaçant tous les & "hors entités" par des &amp;

La présence de ces & non encodés ne génèrera pas de problèmes majeurs tant que le rendu se fera en text/html. En revanche, ils pourront être beaucoup plus problématiques dès que le contenu concerné fera l'objet d'un traitement XML (recyclage en fil RSS, par exemple, ou utilisation dans le contenu d'un trackback et insertion par ce biais dans un site au contenu traité en application/xhtml+xml, etc)

Tiens, avec le & de "Blog & Blues" et quelques instants d'inattention lors de simples trackbacks, je me souviens avoir plusieurs fois provoqué de beaux plantages ici et là (Notament chez l'ami Denis Boudreau, qui fut heureusement toujours très indulgent Smiley biggol )
Modifié par Laurent Denis (09 Feb 2006 - 12:49)
Ok, merci, donc encore une mauvaise habitude à changer pour moi alors Smiley ohwell

Laurent Denis a écrit :
Tiens, avec le & de "Blog & Blues" et quelques instants d'inattention lors de simples trackbacks, je me souviens avoir plusieurs fois provoqué de beaux plantages ici et là (Notament chez l'ami Denis Boudreau, qui fut heureusement toujours très indulgent Smiley biggol )


inattention inattention... saboteur oui! Smiley lol
Modifié par SuD (09 Feb 2006 - 12:51)
Samuel Berg a écrit :
Forcément avec Tidy on a pas besoin de s'en soucier, mais c'est bon à savoir, maintenant je ferais attention...


Il serait très intéressant que tu documentes un peu ton utilisation de Tidy côté serveur, si c'est bien cela. Ce type de "validation forcée" est appelée à être de plus en plus nécessaire. N'hésites pas à nous contacter à ce sujet Smiley cligne
SuD a écrit :
inattention inattention... saboteur oui! Smiley lol


Je paie chaque jour le prix de ce fichu ampersand dans ce nom de site. Au début, j'ai trouvé cela amusant (ce n'était pas le but, bien-sûr, mais juste un effet de bord). Mais à l'usage, c'est aussi pénible aujourd'hui que d'utiliser des IDN. Affreux, je vous dit Smiley langue
Laurent Denis a écrit :

Il serait très intéressant que tu documentes un peu ton utilisation de Tidy côté serveur, si c'est bien cela. Ce type de "validation forcée" est appelée à être de plus en plus nécessaire. N'hésites pas à nous contacter à ce sujet Smiley cligne


Je comprends pas votre souhait : vous voulez que je vous explique comment ça fonctionne tout en vous demandant conseil en cas de problème ?

L'utilisation de tidy est dans mon cas très simple : il répond aux carences de Spip (c'est à dire une création de code automatique dans les articles sur laquelle on a peu de possibilité d'intervention et qui n'est pas valide Xhtml)

1- Je l'ai installé sur le serveur
2- Rajouté une fonction dans un fichier de Spip (ecrire/mes_options.php3)
3- Il me corrige toutes les pages automatiquement pour des broutilles (ferme les balises, change le codage des caractères en html etc...)
4- Si la validation strict est impossible dûe aux erreurs grossières sur la page, il change la doctype en transitionnal, ce qui n'est jamais pénalisant.

Malgrés tout je ne me repose pas que sur lui :

- Tout ce que j'écris à la main ou dans mes modèles répond au xhtml au sens strict du terme (mis à part des oublis comme on vient de le voir)
- J'ai analysé le code généré par Spip dans les articles pour mettre au point une charte des rédacteurs afin de rester le plus propre et logique possible dans le code (exemple ne pas faire une liste à puce avec des sauts de paragraphes - correspondant à deux ul pour spip - c'est souvent bête mais les rédacteurs trouvent ça joli et c'est là que notre métier doit s'imposer)
Modifié par Samuel Berg (10 Feb 2006 - 10:04)