Autor Zpráva
Yur4Y
Profil
Zdravím.
Pokúšal som sa Chamurappiho kontaktovať na email, ktorý má uvedený na validator.webylon.info, ale neodpovedá mi, tak píšem sem. Neviem, či som tému dobre zaradil, ale v popise sekcie je "validita", tak snáď :)
No ale prejdime k veci. Dal som validovať najprv tento pokusný HTML kód:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en-US">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title></title>
</head>
<body>
	<p id=odstavec>Ahoj
</body>
</html>
<P> má voliteľnú ukončovaciu značku a hodnota atribútu nemusí byť v úvodzovkách, dokument je validný HTML 4.01 Strict, to je jasné.
Potom zmením DOCTYPE na XHTML 1.0 Strict, ale nepridávam ukončovaciu lomku do <meta>, nevkladám úvodzovky okolo hodnoty atribútu ani nepridávam ukončovací tag </p>. Dokument vyzerá teda takto:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en-US">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title></title>
</head>
<body>
	<p id=odstavec>Ahoj
</body>
</html>
Toto následne validujem s mime typom text/html.
Validátor by mal následne zobraziť takýto výsledok:
Dokument neprošel validací, 1 chyba
definice typu dokumentu "-//W3C//DTD XHTML 1.0 Strict//EN" obsahuje chyby

Je jasné, že validujem HTML, preto by nemal hlásiť "chyby", ktoré sú v HTML povolené, ale v XHTML nie. Dostávam však takýto výsledok:
Dokument neprošel validací, 2 chyby
definice typu dokumentu "-//W3C//DTD XHTML 1.0 Strict//EN" obsahuje chyby
ukončovací značka elementu "P" je vynechána, což jeho deklarace nepřipouští


Čudujem sa. Validátor predsa validuje HTML v oboch prípadoch, ale v druhom prípade mu prekáža neuzavretý element <p>, čo by malo prekážať iba v XHTML.

Na jednej strane teda tento validátor povoľuje HTML konštrukcie (<meta>, id=odstavec), ale na druhej mu niektoré HTML konštrukcie prekážajú (chýbajúce </p>). Bude táto chyba opravená?

Ďakujem.
Chamurappi
Profil
Reaguji na Yur4Y:
Jsi tu správně, tady odpovídám rychleji :-)

Syntaktická pravidla (jako povinnost uvozovek, zápis prázdných elementů) jsou určená vyšším protokolem, tedy MIME typem, ale validátor se pořád musí řídit tím, co je v uvedené DTD. Bere odkázanou „xhtml1-strict.dtd“ jako odrůdu HTML DTD, takže z ní je schopen vyčíst, které elementy či atributy jsou kde povolené. Ale něco mu v ní přeci jen vadí — že chybí údaj o volitelnosti značek. Přesně kvůli tomu naříká, že „definice typu dokumentu "-//W3C//DTD XHTML 1.0 Strict//EN" obsahuje chyby“. Deklarace odstavce vypadá v HTML DTD takto:
<!ELEMENT P - O (%inline;)*            -- paragraph -->
Kdežto v XHTML DTD je takováto:
<!ELEMENT p %Inline;>
Není tam ani „- -“, ani „- O“, ani nic jiného, co by v HTML DTD smělo být, proto validátor řve. Ovšem z chyby se zotaví. Předpokládá, že obě značky jsou povinné.

Mimochodem, zkus si zvalidovat v oficiálním validátoru tento kód, který by měl být ekvivalentní k tvému (druhému):
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en-US">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>
    <p id=odstavec>Ahoj
</body>
</html>
Nedá ti pěknou hlášku o tom, že odkázaná HTML DTD obsahuje chyby, ale chybějící „omitted tag minimization parameter“ též nahlásí.
Yur4Y
Profil
Ďakujem, už mi je to jasné :-) Nevedel som, že možnosť vynechania uzatváracích značiek je v DTD.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: