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:
<
Znak > to znak większości. Nazywa się gt, od ang. greater than. Czyli znak > można zapisać jako:
>
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):
–
A znak copyright to po prostu copy, czyli:
©
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.