DTD cs

Úvod
XML
Dokument
Deklarace typu dokumentu
DTD

Counter

V této části rozebereme použití DTD v XML.

DTD umožňuje definovat logickou strukturu dokumentu, a to pomocí definice elementů (včetně jejich logické struktury) a jejich atributů. XML dokumentu je možné přiřadit určité DTD. Pokud se navíc dokument tímto přiřazeným DTD řídí, tzn. že splňuje veškerá omezení na něj daným DTD kladená, pak o něm říkáme, že je validní.

DTD umožňuje kromě logické strukturace i její fyzické členění, a to předně pomocí definice externích entit a pomocí notací.

DTD může být samo uloženo v externím souboru, pak hovoříme o externí podmnožině DTD, nebo může být přímo obsaženo ve zpracovávaném souboru, pak hovoříme o interní podmnožině DTD. Je možná a poměrně častá i kombinace těchto dvou přístupů.

DTD následuje za případnou hlavičkou XML dokumentu, ale vždy předchází prvnímu „kořenovému“ elementu. Příklady DTD:


                           <?xml version="1.0" ?>
                           <!DOCTYPE root SYSTEM "first.dtd">
                           <root>
                           	Obsah dokumentu
                           </root>
                           

Příklad 10: Příklad externí podmnožiny DTD

                           <?xml version="1.0" ?>
                           <!DOCTYPE root [
                           	<!ELEMENT root (#PCDATA)>
                           ]>
                           <root>
                           	Obsah dokumentu
                           </root>
                           

Příklad 11: Příklad interní podmnožiny DTD
Tyto příklady ukazují dvě možná použití DTD. Definice DTD má vždy tvar <!DOCTYPE nazev_korenoveho_elementu externi_deklarace [interni_deklarace]>, přičemž externí a interní deklarace jsou nepovinné části. Název kořenového elementu se musí shodovat se skutečným názvem kořenového elementu v dokumentu.

Všechny značky v DTD mají strukturu <!NAZEV_ZNACKY obsah>.

DTD umožňuje omezit strukturu elementů, a to pomocí značky ELEMENT. U elementů omezuje výčtem elementy, které se mohou v dokumentu vyskytnout. Při deklaraci elementu však navíc omezuje i možný obsah deklarovaného elementu, takže DTD umožňuje i omezit kde se daný element může vyskytnout.

Jednotlivé elementy mohou mít atributy, a tyto atributy mohou mít určité hodnoty. Jednotlivé atributy a omezení týkající se jejich hodnot jsou deklarovány pomocí značky ATTLIST. Tento výčet se vždy vztahuje ještě k učitému elementu. Pro každý element je v seznamu uveden výčet atributů, jejich typ a případně i jejich standardní hodnota. Typ atributu je možné omezit na řetězec, výčet a „tokeny“ (jedná se o seznam jistých odkazů nebo o samostatný odkaz). Hodnota atributu může být navíc vždy vyžadována (#REQUIRED), určená programem (#IMPLIED) nebo může být stanovena jako neměnná (#FIXED). V případě, že nepoužijeme ani jeden z těchto modifikátorů, nebo jeli hodnota stanovena jako neměnná, pak je nutné uvést standardní hodnotu atributu, která se použije, není-li atribut v dokumentu explicitně uveden.

Předchozí značky se vztahovaly k logické struktuře dokumentu. K fyzické struktuře dokumentu se vztahují definice entit (značka ENTITY) a definice notací (NOTATION). Zpracovávané entity jsou vždy při použití nahrazeny svým obsahem. Tento obsah však může být dvojího druhu. Jeden typ je využit ve vlastním dokumentu, kde entitu použijeme například pro definici často opakovaného úseku textu (podobné makru). Druhý typ využití je pak při psaní DTD, kdy je možné do tzv. parametrické entity vložit jisté výčty parametrů, které je pak možné zadávat odkazem na parametrickou entitu. Samotný nahrazující text entity pak může být přímo součástí dokumentu, nebo může být v externím souboru. Jeli součástí dokumentu, pak je ohraničen uvozovkami nebo apostrofy. Jeli v externím souboru, pak je definován buď pomocí URI (SYSTEM "nazev_souboru") nebo pomocí veřejného identifikátoru (PUBLIC "verejny_identifikator" "nazev_souboru"). U obecné --- tj. neparametrické --- entity může být ještě definována použitá notace, která mj. určuje, že entita je nezpracovávaná, a tudíž na ní nemůže být uveden ani standardní odkaz.

Posledním standardním prvkem v DTD jsou definice notací. Notace jsou použity pro některé nezpracovávané prvky dokumentu, pro které určují program, který je schopen je zpracovat. Notace je definována svým názvem a kombinací souboru s programem nebo veřejným identifikátorem definujícím určitý formát.

Kromě těchto standardních prvků se v DTD mohou vyskytnout ještě zpracovací instrukce a poznámky.