Toto neni nahrada w3c.org nebo vycerpavajici popis vsech moznosti, ale obecne shrnuticko :)
1. Obecne DTD
-------------
DTD je obyc TXT soubor s priponou DTD.
Deklaruje elementy, atributy a parametricke entity.
Uplne obecne se DTD sklada ze zaznamu o formatu:
KEYWORD znaci to, co se v DTD ma definovat, pricemz telo (...) je pak ruznorode.
1.0 Elementy
------------
Deklarace elementu ma formu:
Na poradi definice elementu nezalezi, neni nutne resit tedy nejake dopredne
deklarace a podobne
1.0.1. Prazdny element
----------------------
Pokud element nema nic obsahovat, jako napriklad nebo tak
je na miste OBSAHu uvedeno "EMPTY". Pozor na to, ze 'mezery' jsou obsah - tedy
MUZE byt chybne (viz [2])
Priklad:
1.0.2. Model popisujici obsah
-----------------------------
Model je defacto predpis obsahu elementu. Musi se uzavrit to kulatych (zavorek). Obsah je
slozen z:
jmena elementu - dany element je na danem miste povolen/vyzadovan
#PCDATA - zastupce pro 'text' (text nejsou elementy ale jen 'text')
volby - symbol pipe |
- ma tvar: A | B a rika, "A nebo B"
spojeni - carka ,
- ma tvar: A , B a rika "A nasledovanym B"
() - vnorena skupina, rekurze
+ ? * - opakovani
? 0 nebo 1
* 0 a vic (0,1,2,3,...)
+ 1 a vic (1,2,3,...)
lze pouzit jako pro element "element+, element2*" tak pro celou
supinu "(a | b)+ , c , d?"
Pro model plati nasledujici pravila:
1. v ramci jedne skupiny se nesmi pouzit zaroven , a |
a | b | c - platne
a , b , c - platne
x | y , z - chyba - ze zapisu nevyliva, co je presne mysleno. Je treba prepsat na
"(x | y) , z" nebo "x | (y , z)" dle toho co ma autor na mysli
2. pokud se v modelu vyskytuje #PCDATA musi mit model uzity pouze konektor volby (|)
a cela skupina musi byt opakovatelna - napriklad: (#PCDATA | elem | elem2)*
Jinak ne pouziti PCDATA neplatne
3. validatory nezkoumaji dopredu - zapis: "a | (a,b)" neni platny, protoze valdiator
nemuze u elementy 'a' rozhodnout, jesli pujde prvni nebo druhou cestou. Musel by
se podivat na nasledujici tag. To nedelaji. Pozor tedy na nejednoznacny zapis
Priklad:
nameprvniprvniprvni