2010-09-25 9 views
2

Possible en double:
Do I really need to encode '&' as ' &' ?Est-il invalide HTML d'écrire "&" par lui-même? Pourquoi?

Je sais que W3C recommends à "utiliser" & amp; »(décimal ASCII 38) au lieu de "&" pour éviter toute confusion avec le début de une référence de caractère ", et que bien rangé avertit d'un" & non échappé qui devrait être écrit comme & amp; " mais, malgré ces avertissements, est-il valable d'écrire (dire) "Tiffany & Co." au lieu de plus de cautios "Tiffany & amp; Co."?

Je sais que l'exemple ci-dessus se déroule comme prévu (c'est-à-dire la même chose) dans tous les navigateurs que j'ai essayés, mais c'est une question de syntaxe pour les juristes. Il me semble que, tant que l'expression n'est pas de la forme "&blah;", elle devrait être légitime. (Même avec l'aide de crochets si vous n'écrivez pas « <bla> ».)

En aparté, le fait que sauter </li > « s n'est pas considéré comme un avertissement, alors que unescaped & » s sont, parle des volumes de l'incohérence de la syntaxe HTML. En fait, si nous devons compter sur l'intelligence de l'analyseur, omettre un </ul > (par exemple) devrait être OK si la liste (inachevée) est la toute dernière partie du document: non </ul >, no </body >, no </html > ... pas d'ambiguïté possible, non? PS: Je viens de découvrir que les équerres non évidées (sensibles) n'apportent aucun avertissement, mais sont détectées comme des erreurs par le validator du W3C, alors que les esperluettes non évasées donnent des avertissements aux deux endroits. Allez comprendre ...

+0

En langage SGML et HTML5, une esperluette libre est autorisée lorsqu'elle est suivie d'un caractère qui n'est pas valide dans un jeton NAME. Donc 'a & b' est OK et vous n'obtiendrez qu'un avertissement, alors que' a & b' est une erreur correcte. Aucun n'est permis en XHTML et c'est certainement une mauvaise idée de s'en remettre à ça. – bobince

Répondre

4

Invalide? Oui. Une esperluette libre à l'intérieur du balisage HTML entraînera une erreur de l'analyseur.

Les navigateurs modernes peuvent-ils ignorer l'erreur et analyser correctement? Probablement.

Mais est HTML mal formé.

+0

Merci pour votre réponse. Le validateur du W3C ne donne qu'un avertissement, bien qu'une erreur soit émise pour les équerres libres. Cela ne gâchera pas ma journée, mais tout ceci est très incohérent, n'est-ce pas? En outre, le mot «devrait» au lieu de «doit» dans les normes est parfois considéré comme une option. À propos, même le bon vieux lynx obtient ces bons exemples (sans ambiguïté). –

+1

Vous avez affaire à du HTML. Les navigateurs ont pratiquement inventé le mot "inconsistant" quand il s'agit de traiter avec HTML. –