Odniesienie do podmiotu „foo” musi kończyć się znakiem „;” ogranicznik

95

Mam kod HTML wygenerowany przez piaskownicę Google Checkout, który działa dobrze na stronie HTML. Kiedy umieszczam ten sam kod na stronie XHTML, rzuca poniższy wyjątek:

odniesienie do podmiotu „w” musi kończyć się znakiem „;” ogranicznik

Odnosi się do parametru żądania ww adresie URL w poniższym srcatrybucie:

<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" />

Jak to się dzieje i jak mogę to rozwiązać?

Adnan
źródło

Odpowiedzi:

210

Znak ampersand &to znak specjalny w językach HTML i XML. Jeśli chcesz używać go jako zwykłego znaku, musisz go poprawnie zakodować. Napisz &amp;zamiast& :

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

&oznacza początek zakodowanej jednostki, na przykład &lt;for <lub &amp;for &. W twoim przypadku parser próbuje interpretować &wjako jednostkę. Ale encje są zawsze zakończone przez ;, więc jeśli ;brakuje, pojawia się komunikat o błędzie.

Floern
źródło
Prosto i prosto do celu! Właściwie użyłem tej odpowiedzi, aby rozwiązać problem z biblioteką Android SIMPLE xml haha ​​...
ryvianstyron
I właśnie użyłem go do rozwiązania problemu z Google Spreadsheets API =)
gerbz
czy mogę to naprawić bez zmiany mojego XML?
Amjad Rehman A,
0

To zadziałało po mojej stronie, gdy korzystałem z kodu instalacyjnego wyszukiwarki iq w pliku HTML mojego bloga Bloggera:

<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);
})();

Podał mi błąd tutaj: & engineKey, po dodaniu & amp zastępując & udało mi się zapisać mój plik HTML.

cyberabel
źródło