Podczas walidacji dokumentu HTML5 pojawił się komunikat o treści: „Error: Element img is missing required attribute src.”. Oznacza to, że
A. znacznik <img> nie został zamknięty przez </img>.
B. w znaczniku <img> nie zdefiniowano obowiązkowego atrybutu src.
C. atrybut src w znaczniku <img> nie jest wymagany.
D. w atrybucie src znacznika <img> podano adres nieistniejącego pliku.
Komunikat walidatora Element img is missing required attribute src oznacza, że w elemencie <img> brakuje atrybutu src, czyli źródła obrazka. W HTML5 element img służy do osadzania grafiki w dokumencie, ale przeglądarka musi wiedzieć, skąd ma pobrać plik. Do tego właśnie jest src, np. <img src='obrazy/logo.png' alt='Logo firmy'>. Bez tego atrybutu znacznik jest niepełny semantycznie i walidator zgłasza błąd, bo element nie ma podstawowej informacji potrzebnej do działania. Moim zdaniem to jeden z tych komunikatów, które warto czytać dosłownie, bo walidator mówi dokładnie, czego brakuje. Dobra praktyka branżowa mówi też, żeby razem z src podawać alt, czyli tekst alternatywny dla czytników ekranowych i sytuacji, gdy grafika się nie załaduje. Samo src nie gwarantuje jeszcze, że obraz istnieje, ale jego obecność jest wymagana składniowo. To ważne przy tworzeniu poprawnych, dostępnych i łatwych w utrzymaniu stron WWW.
Ten komunikat nie mówi, że atrybut src jest opcjonalny. Wręcz przeciwnie, słowo missing required attribute oznacza brak wymaganego atrybutu. Czasem ktoś patrzy tylko na nazwę elementu img i myśli, że skoro obrazek może być pusty albo ładowany później przez JavaScript, to src nie jest potrzebny. W zwykłym, poprawnym kodzie HTML element obrazka powinien jednak wskazywać źródło pliku graficznego właśnie przez src. Walidator sprawdza zgodność kodu ze standardem, a nie domyśla się, co autor strony miał na myśli. Nie chodzi również o zamykanie znacznika przez </img>. W HTML element img jest elementem pustym, czyli nie ma zawartości tekstowej ani dzieci, dlatego nie zapisuje się dla niego osobnego znacznika końcowego. Poprawny zapis to np. <img src='baner.jpg' alt='Baner reklamowy'>, a nie konstrukcja z </img>. To częsty błąd osób, które próbują traktować wszystkie znaczniki HTML tak samo. Komunikat nie oznacza też, że w src wpisano adres nieistniejącego pliku. Gdyby atrybut src był podany, ale prowadził do złej ścieżki, walidator składniowy zwykle nie sprawdzi fizycznego istnienia pliku na serwerze. Taki problem objawiłby się raczej w przeglądarce jako niedziałający obrazek albo błąd 404 w narzędziach deweloperskich. Tutaj problem jest wcześniejszy i prostszy: atrybutu src w ogóle nie ma w kodzie.