XML

typ dokumentu

DTD (Document Type Definition) je nepovinnou súčasťou XML dokumentov, ale jeho používanie prináša podstatné výhody a uľahčuje prácu. DTD je šablóna, podľa ktorej sa tvoria a kontrolujú XML dokumenty.

Ďalšiu výhodu prináša DTD programátorom aplikácií, ktoré spracovávajú XML dokumenty. A to tým, že program určite nenarazí na neočakávaný vstup, pretože dokument nevyhovujúci DTD je automaticky vyradený zo spracovávania.

Kontroly dokumentu pomocou podľa DTD umožňuje PARSER, ktorý môže byť ako samostatná aplikácia alebo súčasť internetového prehliadača.

Použitie DTD je podmienené jeho deklaráciou. Deklarácia typu dokumentu sa umiestňuje na začiatok dokumentu, hneď za XML deklaráciu. Deklarácia môže mať niekoľko podôb, a to podľa toho, ako je DTD s dokumentom zlúčené.

1. DTD je priamo súčasťou XML dokumentu:


...
<!DOCTYPE nazov_elementu [
<!-- Samotné DTD -->
<! ... >
<! ... >
]>
...

V prvom riadku je uvedené, že sa jedná o DTD. Za ním je uvedený názov koreňového elementu. Tak nasleduje samotné DTD.


2. DTD je umiestnené v externom súbore s príponou DTD:


<...!DOCTYPE nazov_elementu SYSTEM url_suboru_s_dtd [
<!-- Samotné DTD -->
<! ... >
<! ... >
]>


Elementy sú základom XML dokumentov a DTD určuje, aké elementy môžu byť v danom dokumente použité, a čo môžu obsahovať. Deklarácia elementu v DTD vyzerá nasledovne:


<!ELEMENT nazov_elementu obsah_elementu>

Najjednoduchší je prázdny element, ktorý nemôže obsahovať text ani žiadne ďalšie elementy:


<!ELEMENT nazov_elementu EMPTY>


Na rozdiel od prázdnych elementov možno zadeklarovať element, ktorý môže obsahovať všetko:

<!ELEMENT nazov_elementu ANY>

Ďalej môže obsahovať element obsahovať samotný text:

<!ELEMENT nazov_elementu #PCDATA>

Najčastejšie však obsahuje vnorené elementy:

<!ELEMENT nazov_elemetu(…)>

kde namiesto ... píšeme názvy elementov:

1. Oddelené čiarkou “,”, ak chceme, aby nasledovali v poradí
2. Oddelené znakom “|”, ak má element obsahovať práve jeden vnorený element spomedzi možných.

Je možné tieto varianty kombinovať pomocou zátvoriek.
Okrem poradia môžeme tiež určiť ich počet, či sú povinné, a či sa môžu opakovať. Ak uvedieme len meno, musí byť v XML prítomný práve raz. Ak je element nepovinný, uvedieme za jeho názov otáznik „?“. Ak sa element môže opakovať, ale musí sa vyskytnúť aspoň raz, píšeme za názov plus „+“. Ak sa element môže opakovať, ale nemusí sa vyskytnúť vôbec, píšeme za názov hviezdičku „*“.
Tiež je možné kombinovať v obsahu elementu vnorené elementy spolu so samotným textom.

Elementy v XML dokumente môžu mať ľubovoľné množstvo atribútov. Deklarácia atribútu elementu vyzerá nasledovne:

<!ATTLIST meno_elementu deklaracia_atributu>

Kľúčové slovo ATTLIST určuje, že sa jedná o deklaráciu atribútu. Nasleduje názov elementu, pre ktorý atribút definujeme. Samotná deklarácia atribútu sa skladá z troch častí. Prvé je meno atribútu. Pre mená atribútov platia rovnaké obmedzenia ako pre názvy elementov. Za menom nasleduje typ atribútu: 

1. CDDATA – umožňuje atribútu zadať v XML ľubovoľnú hodnotu.
2. NMTOKEN – umožňuje atribútu zadať v XML ako hodnotu iba jedno slovo.
3. NMTOKENS – umožňuje atribútu zadať v XML ako hodnotu viac slovo.


<!ATTLIST stranka farba_pozadia NMTOKEN ...>
<!ATTLIST stranka rozmery NMTOKENS ...>


4. ID, IDREF – používajú sa pre tvorbu odkazov.
5. vymenovanie prípustných hodnôt

<!ATTLIST stranka farba_pozadia (cierna | biela | modra) ...>

V tretej časti sa uvádza predvolená hodnota, alebo či je daný atribút povinný (#REQUIRED) alebo nie (#IMPLIED). Špecifikovanie štandardnej hodnoty možno urobiť priamo jej uvedením za deklaráciou prípustných hodnôt.

<!ATTLIST stranka farba_pozadia (cierna | biela | modra) “biela”>