Wskaż błąd, który walidator HTML zgłosi dla przedstawionego fragmentu kodu.
<h2>Kontakt</h2> <p>Napisz do nas: <ul> <li>e-mail</li> </ul> </p>
Poprawna jest odpowiedź o liście wewnątrz akapitu. Element <p> może zawierać tylko treść frazową: tekst, odnośniki, wyróżnienia czy obrazy. Lista <ul> to element blokowy, więc parser HTML na jej widok automatycznie zamyka otwarty akapit. Końcowy znacznik </p> zostaje wtedy bez pary i walidator zgłasza błąd w rodzaju „No p element in scope but a p end tag seen”.
Do zapamiętania: w akapicie nie umieszcza się list, tabel, nagłówków ani innych akapitów. Poprawny zapis to akapit zamknięty przed listą: <p>Napisz do nas:</p>, a lista jako osobny element poniżej.
Wewnątrz akapitu można natomiast użyć elementu <span>.
Każda z błędnych odpowiedzi wymyśla ograniczenie, którego w HTML nie ma. Nagłówek przed akapitem to najzwyklejsza budowa strony - <h2> otwiera sekcję, a pod nim stoi jej treść. Atrybut value ma sens tylko w listach numerowanych <ol>, gdzie ustawia numer pozycji, i nigdy nie jest wymagany.
Lista z jednym elementem jest również poprawna: <ul> może mieć jedną pozycję, a nawet żadnej. Prawdziwy problem leży w zagnieżdżeniu. Przeglądarka pokaże ten kod w miarę poprawnie, bo naprawia błędy po cichu, więc łatwo go przeoczyć. Walidator nie jest tak wyrozumiały i wskazuje niesparowany znacznik zamykający akapitu. Przy szukaniu błędów walidacji warto sprawdzać, czy elementy blokowe nie trafiły do elementów, które dopuszczają wyłącznie treść tekstową.
Taki błąd łatwo poprawić: wystarczy zamknąć akapit przed listą i ewentualnie dodać po niej nowy akapit.