XHTML et & (Esperluette) encodage
Mon site est en XHTML Transitional conforme sauf pour une chose: le & (commercial) dans l'URL sont écrites comme il est, au lieu de &
Qui est, de toutes les url dans mes pages sont généralement comme ceci:
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
Mais Validateur XHTML génère cette erreur:
ne peut pas générer un identifiant du système général de l'entité "y"
... et il veut l'url à être écrit comme ceci:
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
Le problème est que IE et Firefox ne gère pas l'URL correctement et d'ignorer le paramètre y. Comment puis-je faire le lien entre ces travaux et de valider correctement?
Il me semble qu'il est impossible d'écrire des pages XHTML si les navigateurs ne fonctionnent pas avec le strict codé en XHTML Url.
Voulez-vous voir en action? Voir la différence entre ces deux types de liens (copiez et collez ce qu'ils sont):
http://stackoverflow.com/search?q=ff&sort=newest
et
http://stackoverflow.com/search?q=ff&sort=newest
- À l'aide de & dans l'Url de votre XHTML doc devrait fonctionner très bien, donc le problème est sans doute ailleurs, comme d'autres l'ont déjà souligné. Si vous générer l'URL à l'aide d'un serveur langage de script côté, peut-être que vous pouvez publier certains de ce code, afin que d'autres puissent voir si le problème pouvait être là?
Vous devez vous connecter pour publier un commentaire.
J'ai juste essayé ce. Ce que vous avez essayé de faire est correcte. En HTML si vous écrivez un lien de la
&
les caractères doivent être encodés comme&
Vous ne codent la&
comme%26
si vous vouliez une valeur de paramètre contient une esperluette. Je viens d'écrire une simple page HTML contenant un lien:<a href="Default2.aspx?param1=63&param2=hel">Click me</a>
et il a bien fonctionné:
default2.aspx
reçu les paramètres de l'intention et de la source réussi la validation.L'encodage de
&
comme&
est nécessaire dans le code HTML, pas dans le lien. Lorsque le navigateur voit le&
dans la source HTML pour un lien, il va l'interpréter comme le signe et la cible du lien sera comme prévu. Si vous collez l'URL dans votre barre d'adresse du navigateur, il ne s'attend pas à en HTML et ne pas essayer d'interpréter n'importe quel code HTML de codage qu'il peut contenir. C'est pourquoi votre exemple les liens que vous suggérez qu'on devrait copier/coller dans un navigateur ne fonctionnent pas et pourquoi on ne s'attendrait pas à travailler.Si vous post un peu plus de votre code, nous pourrions être en mesure de voir ce que vous avez fait de mal, mais vous avez l'air de se diriger vers la bonne direction en utilisant
&
dans vos balises d'ancrage.C'était de ma faute: le contrôle Hyperlink déjà codé &, de sorte que mon url
http://foo?x=1&y=2
a été encodée àhttp://foo?x=1&amp;y=2
Normalement le & à l'intérieur de l'url est correctement gérée par les navigateurs, comme vous l'avez indiqué. Grâce
vous pouvez utiliser
&
au lieu de & dans ton url dans votre page.Qui devrait lui permettre d'être validé xhtml strict...
Remarque, si elle est utilisée par un ASP.NET Demande.QueryString fonction, la chaîne de requête ne pas utiliser l'encodage XML, il utilise Le codage d'URL:
Vous devez donc fournir une fonction de traduction "& " dans %26
Remarque: dans ce cas, le Serveur.URLEncode(”neetu & geetu”), qui permettrait de produire de neetu+%26+geetu, n'est pas ce que vous voulez, car vous avez besoin de traduire & en %26, et pas seulement les " &". Vous devez ajouter un replace() appel appliquée à la fonction URLEncode résultat, dans le but de remplacer " %26amp;' par '%26'.
Pour être encore plus complet: utilisation
&
, un caractère numérique de référence.Parce que
&
est un caractère de l'entité de référence:Qui vient de le sage au W3C (lire cette pour plus de détails).
Bien sûr, ce n'est pas une très grosse affaire, mais la suggestion du W3C, c'est que le numérique sera valide et utilisable partout et toujours, alors que le nom est " bon " pour le code HTML, mais rien de plus.
&
fonctionne partout.&
est pris en charge par tous les XML et DTD HTML, c'est à peu près toujours. Cependant, sans la DTD ou la 'plaine' SGML de l'analyse du nommé l'un ne fonctionnera pas et le numérique va. Aussi, XML 1.0 a seulement cinq pré-définis nommé références, de sorte que vous pourriez être un mélange des noms et des numéros au lieu d'utiliser seulement des chiffres.Le problème est pire que vous ne le pensez - essayer dans Safari. & est converti en & et le hachage termine l'URL. La réponse correcte est pas sortie XHTML - il n'y a aucune raison qui justifie de passer plus de temps sur le développement et de s'aliéner les utilisateurs de mac.