La référence à l'entité «foo» doit se terminer par «;» délimiteur

92

J'ai un code HTML généré par le bac à sable Google Checkout qui fonctionne bien dans la page HTML. Lorsque je mets le même code dans la page XHTML, cela lève l'exception ci-dessous:

la référence à l'entité "w" doit se terminer par ";" délimiteur

Il fait référence au paramètre de requête wdans l'URL dans l' srcattribut ci-dessous :

<input type="image" name="Google Checkout" alt="Fast checkout through Google"
    src="http://sandbox.google.com/checkout/buttons/checkout.gif?merchant_id=211512493599623&w=180&h=46&style=white&variant=text&loc=en_US"
    height="46" width="180" />

Comment cela est-il causé et comment puis-je le résoudre?

Adnan
la source

Réponses:

207

L'esperluette & est un caractère spécial en HTML et XML. Si vous voulez l'utiliser comme caractère normal, vous devez l'encoder correctement. Écrivez &amp;au lieu de& :

src="...9623&amp;w=180&amp;h=46&amp;style=white&amp;variant=text&amp;loc=en_US"

&désigne le début d'une entité codée, telle que &lt;for <ou &amp;for &. Dans votre cas, l'analyseur essaie d'interpréter &wcomme une entité. Mais les entités sont toujours terminées par un ;, donc si le; est manquant, vous obtenez le message d'erreur.

Floern
la source
Simple et direct! En fait, j'ai utilisé cette réponse pour résoudre un problème avec la bibliothèque XML SIMPLE Android haha ​​...
ryvianstyron
Et je viens de l'utiliser pour résoudre un problème avec l'API Google Spreadsheets =)
gerbz
puis-je résoudre ce problème sans changer mon XML?
Amjad Rehman A
0

Cela a fonctionné de mon côté, lors de l'utilisation du code d'installation de search iq sur le fichier HTML de mon blog Blogger:

<script type="text/javascript">
(function () {
    window.siqConfig = {
        engineKey: "6e14b3aacb2b93b658f8729adec0c030",
        forceLoadSettings: false        // change false to true if search box on your site is adding dynamically
    };
    window.siqConfig.baseUrl = "//pub.searchiq.co/";
    var script = document.createElement("SCRIPT");
    script.src = window.siqConfig.baseUrl + '/js/container/siq-container-2.js?cb=' + (Math.floor(Math.random()*999999)) + '&engineKey=' + siqConfig.engineKey;
    script.id = "siq-container";
    document.getElementsByTagName("HEAD")[0].appendChild(script);
})();

M'a donné une erreur ici: & engineKey, après avoir ajouté & amp en remplaçant le & j'ai pu enregistrer mon fichier HTML. Connaissance appréciée. ^ _ ^

cyberabel
la source