XML - DTD (definice typu dokumentu) část druhá - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Web

XML - DTD (definice typu dokumentu) část druhá

13. února 2001, 00.00 | Celkově již čtvrtý díl seriálu o XML a v pořadí druhý v
povídání o DTD XML dokumentů. Dnes se zaměříme na správnou deklaraci elementů.

Vítejte u druhé části povídání o DTD XML dokumentů. V této části si povíme o správné deklaraci elementů v DTD.

Elementy jsou základem XML dokumentů a DTD určuje jaké elementy mohou být v daném dokumentu použity a co mohou obsahovat. Obecná deklarace elementu v DTD vypadá takto:

<!ELEMENT "název elementu" "obsah elementu">

Až na malé vyjímky nejste při tvorbě názvů elementů omezeni. Názvy mohou obsahovat písmena s diakritikou, číslice (na začátku názvu číslice být nemůže). Pozor si však dávejte při volbě velikosti písmen, na rozdíl od HTML kde na velikosti písmen nezáleží, je XML přísnější. Následující ukázka deklaruje dva různé elementy:

<!ELEMENT Objednávka ...>
<!ELEMENT objednávka ...>

Zajímavější než název je to, co může daný element obsahovat. Nejjednoduší je prázdný element, který nemůže obsahovat text ani žádné další elementy. Deklarace prázdného elementu vypadá takto:

<!ELEMENT "název elementu" EMPTY>

Klíčové slovo EMPTY určuje že element nemůže mít žádný obsah. Divíte se k čemu se dá takový element využít? Například ho můžeme použít pro vložení obrázku do dokumentu, kde pomocí atributů elementu určíme URL adresu souboru s obrázkem. V dokumentu prázdný element zapíšeme buďto pomocí dvou tagů <název elementu></název elementu> nebo jenom jedním tagem s ukončovacím lomítkem <název elementu/>.

Na rozdíl od prázdných elementů můžeme však mít elementy, které mohou obsahovat úplně všechno. Takovýto element deklarujeme pomocí klíčového slova ANY:

<!ELEMENT "název elementu" ANY>

Deklarace pomocí klíčového slova ANY se však moc nepoužívá, protože příliš uvolňuje strukturu dokumentu a to je proti samotné myšlence XML.

Dále může element obsahovat samotný text, to v DTD vyjádříme pomocí klíčového slova #PCDATA:

<!ELEMENT "název elementu" #PCDATA>

Nejčastěji se setkáme s tím, že element obsahuje další elementy. V tom případě použijeme pro deklaraci tzv. modelovou skupinu (model group). Modelová skupina je vždy uzavřena do kulatých závorek a obsahuje alespoň jedno slovo (tím je nejčastěji jméno elementu, který může být obsažen v právě deklarovaném elementu). Vnořené elementy můžeme kombinovat pomocí znaků "," a "|". Pokud elementy oddělíte čárkou musí následovat v pořadí, v jakém jsou zapsány. Například:

<!ELEMENT článek (nadpis, odstavec)>

Pokud je v dokumentu zapíšete obráceně ohlásí parser chybu. Jestliže naopak oddělíte elementy znakem "|", může být v dokumentu uveden pouze jeden z nich. Pomocí závorek můžeme obě varianty kombinovat. Pokud má například element objednávka obsahovat elementy jméno a adresa a za nimi má být uveden telefon domů nebo do zaměstnání, vypadal by celý zápis následovně:

<!ELEMENT objednávka (jméno, adresa, (telefon_domů | telefon_do_zaměstnání))>

Kromě pořadí elementů musíme určit také jejich počet, zda jsou povinné nebo zda se mohou opakovat. Jestliže v modelové skupině uvedeme pouze jméno elementu, musí být přítomen právě jednou. Pokud je však element nepovinný, uvedeme za jeho název znak "?". Ukážeme si to na pozměněném příkladě předchozí objednávky:

<!ELEMENT objednávka (jméno, adresa, (telefon_domů, telefon_do_zaměstnání?))>

Mohla by ovšem nastat taková situace, kdy se může element opakovat, ale musí být přítomen alespoň jednou. Například článek může mít pouze jeden odstavec a může jich mít také několik:

<!ELEMENT článek (odstavec+)>

Nyní uvedu další situaci, kterou vysvětlím na příkladě. Vezmeme si nějakou knihu, tuto knihu mohl napsat jeden autor nebo jejími tvůrci mohl být kolektiv autorů, ale také nemusíme jméno autora znát, v tom případě nemá autora žádného. Tento problém vyřešíme následovně:

<!ELEMENT kniha (název, autor*)>

Poslední možností obsahu elementů je kombinace samotného textu a elementů:

<!ELEMENT název (#PCDATA | element1 | element2 ...)>

Tímto příkladem se s vámi loučím a těším se na shledanou u další části povídání o DTD XML dokumentů, kde budeme probírat deklaraci atributů.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Web  

 » Rubriky  » HTML  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: