Autor Zpráva
anonymní
Profil *
Zajímalo by mě, proč mi validátor nepovolí tagy <pre> a <ul> uvnitř <p>

Píše mi:
document type does not allow element "pre" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag.

Zajímalo by mě, proč tyto tagy nemohou být uvnitř odstavce.

Díky za odpovědi
Chamurappi
Profil
Reaguji na anonymního:
Protože to W3C a výrobci prohlížečů takhle kdysi dávno vymysleli.

Užíváš-li XHTML, můžeš se na validátor klidně vybodnout a fungovat to bude správně.
Užíváš-li HTML (což je pravděpodobné), tak ti <pre> do <p> dát ani nepůjde, protože se odstavec sám zavře.

O tom, jestli užíváš HTML nebo XHTML, nerozhoduje <!doctype>. Zkus si dát do dokumentu tohle:
<p style="color: red">a<pre>b</pre>c</p> 
— červené bude jen písmeno „a“, protože ostatní už nejsou v odstavci.
Joker
Profil
Protože ty prvky prostě uvnitř <p> být nemohou.
Příklad, část kódu:
<body>
<p><ul><li>test</li></ul></p>
</body>

Zpracování se bude lišit podle toho, jestli jde o HTML nebo XHTML (XML):
- HTML: Protože <ul> nemůže být uvnitř <p>, domyslí si před ním </p>. Výsledkem bude:
<body>
<p></p><ul><li>test</li></p>
</body>
...a chyba: přebytečný </p> na konci. Pokud kodér vynechává koncové značky odstavců, může tenhle kód být dokonce validní, ale prvek <ul> nebude uvnitř odstavce- odstavec bude parserem "tiše ukončen" před <ul>

- XHTML: <ul> sice nepatří dovnitř <p>, ale XHTML si značky nedomýšlí, takže ten kód zpracuje skutečně tak, jak je napsaný. Akorát validátor si bude stěžovat.
anonymní
Profil *
Myslel jsem si, že značky <p> a <pre> označují blokové elementy, a tedy, že je možné je do sebe vkládat.
Ale mýlil jsem se...

Díky za odpovědi.
Dero
Profil
anonymní: <p> je blokový element, jehož obsahem mohou být pouze řádkové prvky a prvky s obojakým charakterem (např. <ins>).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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