Błędy [zgłaszane przez walidator]

0

Witam,

wyskakuje mi błąd w kodzie:

'.showProductsLink($id, 'Promocja ').

to chyba jest błąd w 'width=120&height=120"

Było więcej błędów ale zmieniłem w=120 na width=120. Chodzi dokładnie chyba o zapis height=120 (pierwotnie było h=120). Nie mogę sobie z tym poradzić.

A błedy to:
Line 197, Column 237: cannot generate system identifier for general entity "h"

…LC0147/RTVSA1TLC0147_1.jpgwidth=120&h=120" border="0" alt="Promocja"> </a></d

oraz

Line 197, Column 235: entity was defined here

…1TLC0147/RTVSA1TLC0147_1.jpgwidth=120&h=120" border="0" alt="Promocja"> </a><

0

Zamiast & wpisz &, bo taki jest prawidłowy zapis tej encji.

0

Myślę, że warto zrozumieć czemu tak jest, bo to jeden z najczęstszych problemów z walidacją. Wyjaśnię więc łopatologicznie, bo to dość prosta rzecz.

W HTML-u (i XML-u, a tym samym XHTML-u) niektóre znaki mają specjalne znaczenie. Przykładowo, znak < oznacza otwarcie znacznika. Dlatego jeśli chcesz w tekście strony napisać np. nierówność (matematyczną) x<a , to nie możesz po prostu wklepać tam "x<a". Bo znak < otwiera znacznik, więc ciąg "<a" z Twojej nierówności wyglądałby trochę jak niedorobione otwarcie znacznika linku (...).

Czasem chcesz użyć na stronie znaku, którego nie ma na klawiaturze. Np. znaczek copyrightu, czyli takie (c) (c w kółeczku). Albo dbasz o szczegóły i chcesz użyć na stronie poprawnego typograficznie znaku myślnika (jest on sporo dłuższy niż znajdujący się na klawiaturze znak -, który tak naprawdę jest minusem, a nie myślnikiem). Jak wklepać te dziwne znaki, niedostępne na klawiaturze? Jak wklepać znaki zastrzeżone, takie jak <?

Tutaj z pomocą przychodzą nam tzw. odwołania znakowe, zwane również encjami. Najczęściej używane, nazwane odwołania znakowe (oprócz nazwanych są jeszcze numeryczne) mają postać:

&NAZWA;

Czyli znak ampersand (and, &), następnie nazwa odwołania, następnie średnik.

Nazwy poszczególnych odwołań można znaleźć w rozmaitych dostępnych w Sieci tabelkach (google: character entities albo html entities). Przykładowo, znak < nosi nazwę lt. lt od ang. less than, czyli po prostu znak mniejszości. W sumie więc znaki < zapisujemy w HTML-u tak:

&lt;

Znak > to znak większości. Nazywa się gt, od ang. greater than. Czyli znak > można zapisać jako:

&gt;

Z kolei poprawny typograficznie myślnik nazywa się ndash (dash to kreska pozioma, n oznacza długość 1en; en to typograficzna jednostka długości):

&ndash;

A znak copyright to po prostu copy, czyli:

&copy;

Jak widzisz, encje są dość przydatne. To, że są dostępne, rodzie jednak jedną komplikację. Jak wiadomo, znak < jest w HTML-u zarezerwowany na rozpoczęcie znacznika. Natomiast na rozpoczęcie encji zarezerwowany jest znak &. Każda encja rozpoczyna się od niego, więc nie możesz tak po prostu napisać sobie na stronie &, bo wygląda to jak rozpoczęcie encji. To działa na tej samej zasadzie, co znak <. Ale zamiast znaku < możesz użyć przecież odpowiedniej encji (<). A co możesz zrobić, jeśli chcesz użyć znaku &? Ano, też użyć odpowiedniej dla niego encji! Znak & nazywamy ampersandem, a encja generująca ten znak nazywa się amp. Dlatego wszystkie normalne wystąpienia znaku & na stronie (normalne czyli takie, które nie rozpoczynają encji) musisz zamienić na &. Dotyczy to również znaków & w linkach i jest jednym z najczęstszych problemów przy walidacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1