Již jsme se probrali v podstatě všemi elementy striktního XHTML. Poněkud jsme ale při tom zanedbávali obsah, který pro ně DTD povoluje. To v tomto článku napravíme.

Jak již z tohoto seriálu víte, povolený obsah elementů je reprezentován výčtem elementů (a sekce #PCDATA) spojených určitými speciálními znaky. Mnoho elementů má ale totožný povolený obsah, proto autoři DTD XHTML vytvořili tři parametrické entity – %Flow;, %Inline; a %Block;.

Tyto parametrické entity reprezentují nejčastější povolené obsahy elementů a v průběhu seriálu jsme se s nimi mnohokrát setkali. Mnoho elementů má také z těchto parametrických entit svůj obsah odvozen – většinou je zde o nějaký ten element víc nebo míň.

Nyní si představíme tyto tři nejčastější entity – u každé z nich si zároveň řekneme, které elementy mají z této entity obsah odvozen. Ve všech případech se také dozvíte, pro jaké elementy daná parametrická entita definuje povolený obsah.

Parametrická entita %Flow;

Parametrická entita %Flow; obsahuje text (#PCDATA) a tyto elementy:

  • odstavec (p),
  • nadpisy (h1, h2, h3, h4, h5 a h6),
  • kontejnery (div a span),
  • seznamy a výčty (ul, ol a dl),
  • blokové sémantické elementy (blockquote a address),
  • externí objekty (object a img),
  • řádkové sémantické elementy (a, em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub a sup),
  • elementy formulářů (form, fieldset, input, select, textarea, label a button),
  • a elementy table, map, noscript, ins, del, script, pre, hr a br.

Všechny tyto elementy a text se mohou vyskytovat v libovolném pořadí a množství.

Jak vidíte, do entity %Flow; se řadí téměř všechny elementy XHTML. Do elementů, které ji mají nastavenou jako svůj povolený obsah, proto můžete vnořit téměř všechno.

Entitu %Flow; mají nastavenou jako svůj povolený obsah elementy div, li, dd, ins a del.

Obsahy elementů odvozené z parametrické entity %Flow;

Element object má jako svůj povolený obsah také nastavenu entitu %Flow;, navíc se zde ale ještě může vyskytovat element param.

Element fieldset také může obsahovat elementy z %Flow;, navíc se zde ale může vyskytovat element legend – ten se, pokud je přitomen, musí nacházet hned na začátku obsahu elementu, nesmí být předcházen žádným textem ani jinými elementy.

Element button smí obsahovat všechny elementy z %Flow; s výjimkou a, form, input, select, textarea a button.

Parametrická entita %Inline;

Parametrická entita %Inline; obsahuje text (#PCDATA) a tyto elementy:

  • řádkový kontejner span,
  • řádkové sémantické elementy (a, em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub a sup),
  • externí objekty (object a img),
  • řádkové elementy formulářů (input, select, textarea, label a button),
  • a elementy map, ins, del, script a br.

Všechny tyto elementy a text se mohou vyskytovat v libovolném pořadí a množství.

Entita %Inline; v sobě zahrnuje veškerý řádkový obsah – tedy text a řádkové elementy (či elementy, které mohou být blokové i řádkové). Elementy, které mají na tuto entitu svůj obsah nastaven, by měly obsahovat pouze text a s ním spojené elementy (viz výše) – nejsou určeny jako kontejnery pro další prvky.

Na %Inline; mají svůj obsah nastaven tyto elementy:

  • odstavec (p),
  • nadpisy (h1, h2, h3, h4, h5 a h6),
  • kontejner span,
  • řádkové sémantické elementy s výjimkou a (em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub a sup),
  • a elementy dt, address, label, legend a caption.

Obsahy elementů odvozené z parametrické entity %Inline;

Element pre má nastaven svůj obsah na elementy z entity %Inline; s výjimkou elementů img a object.

Element a má také svůj obsah nastaven na %Inline;, výjimku zde ale tvoří element a (odkazy není možné vnořovat).

Parametrická entita %Block;

Parametrická entita %Block; obsahuje pouze tyto elementy (ne text):

  • odstavec (p),
  • nadpisy (h1, h2, h3, h4, h5 a h6),
  • kontejner div,
  • seznamy a výčty (ul, ol a dl),
  • blokové sémantické elementy (blockquote a address),
  • blokové formulářové elementy (form a fieldset),
  • a elementy table, noscript, ins, del, script, pre a hr.

Všechny tyto elementy se mohou vyskytovat v libovolném pořadí a množství.

Entita %Block; v sobě sdružuje blokové elementy. Narozdíl od %Flow; a %Inline; ale neobsahuje text – ten do elementů, které na ni mají nastaven povolený obsah, přímo vkládat nemůžete.

Elementy, které mají nastaven povolený obsah na %Block;, jsou noscript, body a blockquote.

Obsahy elementů odvozené z parametrické entity %Block;

Element map může obsahovat buď elementy z %Block; nebo elementy area.

Element form může také obsahovat elementy z %Block;, s jedinou výjimkou – element form (formuláře se nesmí vnořovat do sebe).

Závěr

A tímto článkem náš seriál po více než roce končí. Jeho čtení vás stálo jistě mnoho úsilí, ale pokud jste vydrželi až sem, můžete si říct, že velmi dobře ovládáte XHTML 1.0 Strict. Přeji vám mnoho dobře kódovaných stránek.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět