Autor Zpráva
yFang
Profil
Mám několik otázek ohledně dtd souborů, konkrétně části, kde je vyjmenovaný obsah elementů:

1. Co znamená +(...), jako to je například zde:
<!ELEMENT BODY O O (%flow;)* +(INS|DEL) -- document body -->
Je nějaký rozdíl v tom, kdyby to bylo takhle?
<!ELEMENT BODY O O ((%flow;)*|INS|DEL) -- document body -->
Chápu že -(...) vyjímá některé elementy, které mohou být v entitě zmíněné předtím, jako to je třeba u formu:
<!ELEMENT FORM - - (%flow;)* -(FORM)   -- interactive form -->
Ale k čemu je ten +?

2. Proč jsou někde explicitně zrušené elementy, které předtím vůbec nebyly zmíněné jako obsah elementu?
<!ELEMENT (DIR|MENU) - - (LI)+ -(%block;) -- directory list, menu list -->

3. Chápu správně, že operátory za seznamem prvků znamenají: ? 0-1, + 1 a více, * 0 a více? Pokud tam není uvedeno nic, znamená to právě jeden?

4. Co znamená & jako je třeba tady:
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- window subdivision-->

5. Pokud jsou elementy oddělené čárkou, znamená to, že musí být právě v tomto pořadí?
<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- form control group -->

Snažil jsem se to někde najít, ale asi špatně hledám.
margin
Profil *
Článek, jak číst DTD, je http://www.sovavsiti.cz/download/sova0208.txt
Pokud bys chtěl kouknout do dalších článků na sově, tak je na http://www.sovavsiti.cz/archiv.html
Chamurappi
Profil
Reaguji na yFanga:
V odkázaném Koptově článku nejsou odpovědi na otázky 1 a 2 důsledně vysvětleny. Chybí tam docela podstatná zmínka, že plus (respektive mínus) uvedené před názvem elementu způsobuje, že uvedený elementy může/nesmí být kdekoliv uvnitř, v libovolné úrovni zanoření.

Takže díky uvedené deklaraci elementu <body> je v HTML 4 dovolen i takovýto zápis:
<table>
  <tr>
    <td>Buňka</td>
    <ins>Něco vedle buňky</ins>
  </tr>
  <del>Něco vedle řádku</del>
</table>
… validátor nemá námitek. Prohlížečům však taková konstrukce může připadat divná, možná i chybná, rozhodně to není stav, který by jim připadal normální. Zejména dnes už jim je úplně jedno, co říká HTML 4, své parsery píší výhradně podle specifikace gramatiky v HTML 5.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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