KWALIFIKACJA INF3 - CZERWIEC 2023 (test 2)

PYTANIE NR 40.
Walidator W3C wygenerował błąd walidacji: End tag p seen, but there were open elements. Którego fragmentu kodu on dotyczy?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Komunikat "End tag p seen, but there were open elements" pojawia się, gdy walidator napotyka zamknięcie <p>, mimo że w środku nadal jest otwarty inny element (np. <b>). W zapisie <p>Ala ma <b>kota</p></b> znacznik <p> domyka się przed <b>, czyli zagnieżdżenie jest niepoprawne.

Pełne wyjaśnienie:

Walidator HTML analizuje strukturę dokumentu i pilnuje, aby elementy były poprawnie zagnieżdżone. Oznacza to, że jeśli otworzysz element wewnątrz innego, to musisz go też zamknąć zanim zamkniesz element zewnętrzny.

Komunikat "End tag p seen, but there were open elements" wskazuje konkretną sytuację: parser zobaczył zamknięcie </p>, ale w tym miejscu "na stosie" nadal znajduje się inny, niezakończony element potomny (np. <b>). To typowy objaw złej kolejności domykania.

Dlatego poprawny jest fragment: <p>Ala ma <b>kota</p></b>. Najpierw otwierasz <p>, potem otwierasz <b>, a następnie błędnie domykasz <p> zanim domkniesz <b>. Prawidłowa kolejność (dla porównania) wyglądałaby jak: <p>Ala ma <b>kota</b></p>.

Pozostałe odpowiedzi nie pasują do tego komunikatu:

  • <p>Ala ma kota</p> ma poprawnie otwarty i zamknięty akapit bez dodatkowych, niezakończonych elementów.
  • <p>Ala ma kota zawiera brak domknięcia </p>, co może powodować inne komunikaty (często o brakującym znaczniku końcowym lub o tym, że dokument został "naprawiony" przez parser), ale nie jest to klasyczny przykład zamknięcia <p> przy nadal otwartym elemencie potomnym.
  • <p>Ala ma <b>kota</b></p> jest poprawnie zagnieżdżone: najpierw zamyka się <b>, dopiero potem <p>.

W praktyce na egzaminie warto zapamiętać zasadę: domykasz w odwrotnej kolejności niż otwierasz (jak nawiasy). Jeśli w środku akapitu otworzysz pogrubienie, to najpierw kończysz pogrubienie, a dopiero potem akapit.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To informacja, że parser/walidator napotkał zamknięcie </p>, gdy wewnątrz akapitu nadal był otwarty inny element (np. <b>). Najczęściej oznacza to niepoprawne zagnieżdżenie: element wewnętrzny nie został domknięty przed domknięciem <p>.
Najpierw otwierasz <p>, potem <b>, następnie zamykasz </b> i dopiero </p>. Przykład: <p>Tekst <b>pogrubiony</b></p>. Domykanie powinno być w odwrotnej kolejności do otwierania.
Bo HTML wymaga poprawnej struktury drzewa elementów. Jeśli zamkniesz <p> wcześniej, to element <b> zostaje "osierocony" lub parser próbuje naprawić dokument, co może dać inne DOM niż oczekujesz i prowadzić do błędów walidacji oraz problemów z renderowaniem.
Zwykle tak, ponieważ ma poprawnie otwarty i zamknięty akapit. Oczywiście cały dokument musi też zawierać poprawną strukturę (np. deklarację typu dokumentu i poprawne osadzenie w <html>), ale sam fragment nie ma błędu zagnieżdżenia.
Walidator/parser śledzi otwarte znaczniki jak stos: gdy widzi tag otwierający, dodaje go do listy otwartych elementów, a gdy widzi tag zamykający, oczekuje domknięcia właściwego elementu. Jeśli pojawi się </p>, a w środku nadal "wisi" np. <b>, zgłasza błąd.
Częste są: krzyżujące się tagi (np. <i>...<b>...</i>...</b>), brak domknięcia elementu inline, niepoprawne umieszczenie elementów blokowych wewnątrz innych elementów oraz błędy w listach (<ul>/<ol> bez <li>).
Niekoniecznie. Brak </p> często skutkuje innymi ostrzeżeniami/błędami (zależnie od narzędzia i kontekstu), bo parser może automatycznie domknąć akapit w pewnym miejscu. Komunikat o "End tag p seen…" dotyczy typowo sytuacji, gdy </p> pojawia się za wcześnie przy otwartych potomkach.
Sprawdź numer linii/kolumny podany przez walidator, a potem przeanalizuj zagnieżdżenia w najbliższym fragmencie: czy każdy tag otwarty ma domknięcie i czy domykasz je w odwrotnej kolejności. Pomaga też formatowanie (wcięcia) oraz podświetlanie par tagów w edytorze.
Przydatne są podpowiedzi w IDE (np. wykrywanie par tagów), lintery oraz wbudowane podglądy DOM w narzędziach deweloperskich przeglądarki. W praktyce łączysz: automatyczną diagnostykę w edytorze + walidację w narzędziu typu nu validator.
Najczęściej mylą "brak domknięcia" z "niepoprawnym zagnieżdżeniem" oraz czytają komunikat bez sprawdzenia relacji rodzic–dziecko między tagami. Pomaga reguła: jeśli w środku otworzyłeś tag, musisz go zamknąć przed zamknięciem elementu zewnętrznego.
info

Około 68% zdających odpowiada poprawnie na to pytanie. średnie

Eksperci podkreślają: "Komunikat "End tag p seen, but there were open elements" pojawia się, gdy walidator napotyka zamknięcie &lt;p&gt;, mimo że w środku nadal jest otwarty inny element (np. &lt;b&gt;)."

Źródła:

  • W3C Nu Validator (Messages): https://validator.w3.org/nu/messages/ - accessed 2026-02-28
  • WHATWG HTML Living Standard (parsing and error handling): https://html.spec.whatwg.org/multipage/parsing.html - accessed 2026-02-28
  • MDN Web Docs: HTML element reference (nesting/valid markup basics): https://developer.mozilla.org/en-US/docs/Web/HTML - accessed 2026-02-28

Materiały:

  • Dokumentacja walidatora W3C/nu (komunikaty i typowe błędy)
  • Specyfikacja HTML (zasady zagnieżdżania i parsowania)
  • Kurs podstaw HTML: poprawna struktura dokumentu i semantyka

Aktualizacja pytania: 31.03.2026

Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego