DTD (definice typu dokumentu) část třetí - 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

DTD (definice typu dokumentu) část třetí

20. února 2001, 00.00 | V dnešní v pořadí třetí části povídání o DTD XML dokumentů se naučíme deklarovat atributy elementů a parametrické entity.

V dnešní v pořadí třetí části povídání o DTD XML dokumentů se naučíme deklarovat atributy elementů a parametrické entity.

Elementy v XML dokumentu mohou mít libovolné množství atributů, které se používají především pro připojení různých metainformací k elementům nebo k tvorbě odkazů atd. Obecná deklarace atributu elementu vypadá následovně:

<!ATTLIST "jméno elementu" "deklarace atributu">

Klíčové slovo ATTLIST určuje, že se jedná o deklaraci atributu. Za jméno elementu dosadíme název elementu pro který atributy definujeme. Samotná deklarace atributu se skládá ze tří částí. První částí je jméno atributu. Pro vytváření jmen atributů platí stejná omezení jako pro elementy, o kterých jsme si říkali v minulém díle seriálu. I v názvech atributů se rozlišují malá a velká písmena, takže Novy_atribut a NOVY_ATRIBUT jsou dva odlišné atributy. Za jménem následuje typ atributu. Nejobecnějším typem atributu je CDATA, který umožňuje v dokumentu zadat libovolný textový řetězec např.:

<!ATTLIST uvodni_stranka datum CDATA ...>

V XML dokumentu můžeme tento atribut použít třeba takto:

<uvodni_stranka datum="13.únor 2001">

Typ CDATA se však příliš nepoužívá, protože velmi uvolňuje pravidla zápisu dokumentů podle určitého DTD.

Odlišným typem než CDATA je NMTOKEN. Tento typ atributu může obsahovat pouze jedno slovo, pro jehož zápis platí stejná pravidla jako pro názvy elementů a atributů s tou vyjímkou, že na začátku slova může být číslice. NMTOKEN má i své rozšíření NMTOKENS. Typ NMTOKENS může obsahovat několik slov, která však musí být opět zapsána podle pravidel NMTOKEN. Nyní uvedu příklad, kde použiji oba typy atributů:

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

V dokumentu můžeme element stranka použít následovně:

<stranka barva_pozadi="černá" rozmery="20cm 35cm">
...
</stranka>

Dalšími typy atributů jsou ID, IDREF a IDREFS. Tyto atributy se požívají pro tvorbu odkazů. Odkazy se budeme zabývat v některém z následujících dílů seriálu, proto zde nebudu tyto typy podrobněji rozebírat.

Dalším typem atributu je NOTATION, tento typ se v praxi příliš nepoužívá, slouží k určení typu dat elementu, pokud data nejsou ve formátu XML.

Poslední možností, jak vymezit typ atributu, je uvedení výčtu přípustných hodnot. Napřiklad:

<!ATTLIST stranka barva_pozadi (černá | bílá | modrá) ...>

Pokud použijeme tento typ deklarace může atribut obsahovat pouze jednu z uvedených hodnot.

Při deklaraci atributů jsem ve všech příkladech uváděl na konci tři tečky, místo nich se uvádí standardní hodnota atributu nebo zda je atribut povinný. Pokud budeme XML dokumenty kontrolovat parserem, ohlásí chyby vždy, když nebude povinný atribut v dokumentu použit. V opačné situaci si aplikace hodnotu nepovinného atributu domyslí sama. V tomto případě použijeme klíčové slovo #IMPLIED.

Specifikování standardní hodnoty můžeme provést přímo jejím uvedením za deklarací všech hodnot:

<!ATTLIST stranka barva_pozadi (černá | bílá modrá) "bílá">

Před standardní hodnotu můžeme ještě uvést slovo #FIXIED, kterým stanovíme, že v dokumentu nemůže mít atribut jinou hodnotu než standardní. Možná se vám zdá, že je tato funkce neužitečná, ale mohou nastat i takové situace, kdy slovo #FIXIED použijete.

Na závěr si ještě povíme o deklaraci parametrických entit. Parametrické entity slouží především k ušetření práce při tvorbě DTD, kde se často opakují stejné sekvence textu, které bysme jinak museli neustále opisovat. Použitím těchto entit také zamezíte zbytečnému výskytu chyb, ke kterému může při opisování dojít. Ptáte se jak to celé funguje? Je to velmi jednoduché. Z programátorského hlediska bych parametrickou entitu přirovnal k proměnné, které na začátku zápisu přiřadíme hodnotu, jenž je konstantní. Tuto proměnou můžeme opakovaně používat v programu, aniž bychom museli celý text opisovat. Pokud nejste programátory a nevíte co jsou proměnné, tak si představte, že parametrická entita je kontejner, kterému dáme jméno a umístíme do něj určitý text a v DTD místo tohoto textu používáme pouze jméno kontejneru. Takto vypadá obecná deklarace entity:

<!ENTITY % "entita" "text">

V DTD budeme entitu volat pomocí zápisu %"entita". Nyní uvádím příklad s použitím parametrických entit:

<!ENTITY % atributy_elementu
"jazyk CDATA #IMPLIED
zarovnani (vlevo | vpravo | doprostred) 'doprostred'">

<!ELEMENT nadpis   (#PCDATA)>
<!ATTLIST nadpis   %atributy_elementu;>
<!ELEMENT odstavec (#PCDATA)>
<!ATTLIST odstavec %atributy_elementu;>
... 

V tomto příkladě jsme nadeklarovali entitu "atributy_elementu", která obsahuje prametry "jazyk" a "zarovnani", a tím jsme mohli tuto entitu používat při dalších deklaracích místo zdlouhavého opisování jejího obsahu.

Loučím se s vámi a těším se na shledanou u dalšího dílu seriálu o XML.

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: