XML a DTD Kapitola seznamuje se specifikací souboru XML pomocí souboru DTD Klíčové pojmy: Definice typu dokumentu.
DTD – DEFINICE TYPU DOKUMENTU • • • •
slouží k bližší definici XML dokumentu textový soubor s uvedenými pravidly, které musí odpovídající soubor XML splňovat určuje blíže jeho strukturu, specifikuje druh dat, které mohou jeho elementy dále obsahovat validaci XML dokumentu oproti DTD dokumentu provedeme pomocí některého z webových validátorů, oba soubory do něj nahrajeme a validátor případně vypíše chyby XML vůči DTD
Umístění vůči XML • interní deklarace:
•
externí deklarace:
= DEKLARACE ELEMENTŮ
název_elementu
obsah_elementu>
Obsah elementu: • EMPTY ... musí být prázdný • ANY ... element může obsahovat cokoliv • nebo musíme uvést model elementu (určuje, jaké elementy a v jakém pořadí se mohou uvnitř deklarovaného elementu objevit, uzavřena v () + obsahuje alespoň 1 další symbol) ◦ sekvence elementů = seznam oddělený čárkami = všechny elementy v daném pořadí ◦ volba, výběr z elementů = odděleno | = jeden z elementů ◦ skupiny elementů = v závorkách ◦ výskyt elementu = ? ... 0 nebo1 krát + ... 1 a vícekrát * ... 0 a vícekrát ◦ #PCDATA ... element může obsahovat většinou jen běžný text nebo text a elementy, pokud obsahuje i vnořené elementy, musí být #PCDATA uvedeno jako první a celá skupina musí být volitelná a opakovatelná
2011-10-12
odstavec
(#PCDATA|seznam)*>
XML a DTD
1/6
= DEKLARACE ATRIBUTŮ ATRIBUT je dodatečnou informací o elementu, jmeno_atributu=”hodnota_atributu” Uvádí se seznam všech atributů daného elementu:
název_elementu jméno_atributu1 jméno_atributu2
typ_atributu typ_atributu
modifikátor modifikátor... >
Typ atributu: • řetězcový typ = jakýkoliv řetězec ohraničený uvozovkami ◦ CDATA ... řetězec znaků ◦ symbolový typ = různé druhy, řetězec ohraničený uvozovkami ◦ ENTITY ... název entity deklarované v DTD, většinou odkazuje na externí soubor, obrázek ◦ ID ... jedinečný identifikátor ◦ IDREF ... odkaz na unikátní id jiného atributu ◦ IDREFS ... odkazy na více identifikátorů oddělených mezerou nebo formátovacím znakem • vyjmenovaný typ = jedna z hodnot v seznamu ◦ NMTOKEN ... identifikátor, slovo bez mezer, může začínat i číslicí, hodnotou atributu musí být název symbolů složený z písmen číslic, teček,-,_,: ◦ NMTOKENS ... seznam hodnot typu NMTOKEN ◦ skupina jmen, je možné uvést standardní hodnotu: ◦ NOTATION ... které dat. typy mohou být do elem. vkládány Modifikátor atributu: • #REQUIRED ... atribut je povinný • #IMPLIED ... atribbut nepovinný, nebude pak nahrazen žádnou hodnotou, neočekává se určitá standardní hodnota • #FIXED “hodnota” ... výchozí hodnota atributu, při vynechání atributu bude nahrazen touto hodnotou = DEKLARACE ENTIT ENTITA je • něco “jsoucího” • v XML se vše dělí na entity • uzavřený celek, i data, která nejsou ve formátu XML • musí mít přiřazeno jméno • musí být deklarována pomocí speciálního zápisu = deklarace entity, obsahuje obsah entity nebo odkaz na soubor, kde je obsah uchován • v textu je uveden odkaz na entitu, ten se pak nahradí obsahem entity • nesmí odkazovat sama na sebe • vhodné když: ◦ stejný obsah na více místech
2011-10-12
XML a DTD
2/6
◦ rozčlenění velkého dokumentu ◦ data v jiném formátu než XML Typy entit: • obecné/všeobecné ◦ obsahuje text/text XML/netextová data ◦ je možné použít v DTD i v XML dokumentu, začínají znakem &
Budoucnost jayzka na internetu”>
•
•
•
•
•
parametrické ◦ obsahuje text xml ◦ lze použít pouze v DTD, začínají % interní ◦ obsahuje ohraničený řetězec deklarace entity ◦ obsah entity je uveden v DTD externí ◦ obsad je uložen mimo DTD ◦ obecná externí entita: analyzovatelné ... textové ◦ obsahuje XML text ◦ po vložení je zaměněna za obsah entity neanalyzovatelné ... binární ◦ může obsahovat jakýkoliv typ dat, většinou xml, proto nelze vložit přímo do dokumentu
Neparametrické entity • deklarace entity v dtd:
•
použití entity v xml:
&aobsah; &bobsah;
Parametrické entity • deklarace entity v dtd
•
použití entity v dtd
•
%ident;>
v textu je pak %ident; nahrazeno textem identifikator ID #REQUIRED
2011-10-12
XML a DTD
3/6
= DEKLARACE NOTACÍ NOTACE • úzce souvisí s entitou • jejím hlavním úkolem je přidat informaci o typu obsahu neanalyzovatelné entity • pomůže zvolit prostředek ke zpracování obsahu entity (neanalyzovatelná entita je pro xml "neprůhledná") • identifikuji notaci pomocí deklarace entity: • SYSTEM ... entita je uložena v jiném/externím souboru • umístění souboru ... může být relativní/absolutní cesta nebo URL • NDATA ... jedná se o notační data • id ... slovo identifikující notaci • pak mohu definovat notaci s názvem id: • příklad:
NDATA
NDATA
gif>
jpg>
volání neanalyzovatelné entity:
•
• element i atribut pak musí být také deklarován:
2011-10-12
XML a DTD
4/6
JAK POSTUPOVAT PŘI TVORBĚ DTD 1. Kořenový element 1a. definice entit (clanek má potomky titulek, datum, ...=> napíšeme seznam částí elementu clanek)
1b. definice atributů kořenového elementu: 2. Definujeme jednotlivě potomky kořenového elementu 2a. definice entit • pokud mají potomky, definujeme je (element seznam obsahuje ještě elementy otazka a seznam1): • pokud už nemají potomky, definujeme obsah, většinou řetězec (#PCDATA)
titulek datum autor copyright perex odstavec zaver
(#PCDATA)> (#PCDATA)> (#PCDATA)> (#PCDATA)> (#PCDATA)> (#PCDATA)> (#PCDATA)>
3. Potomci potomků • element seznam obsahuje další element - otazka1:
•
element otazka1 je již pouze text:
•
(#PCDATA)>
definice entit - parametrických
•
definice entit - neparametrických
•
použití entit - neparametrických
•
%ident;>
deklarace neanalyzovatelných entit
2011-10-12
XML a DTD
jpg>
5/6
Ukázka DTD souboru pro adresar.xml
osoba ((titul)?, (jmeno)?, (prijmeni)?, (prezdivka)*, (titulza)?)> titul (#PCDATA)> jmeno (#PCDATA)> prijmeni (#PCDATA)> prezdivka (#PCDATA)> titulza (#PCDATA)>
adresa (ulice, ((psc, mesto) | (mesto, psc)), (stat)?, (poznamka)?)> adresa typ (soukromá | firemní) "soukromá"> ulice (#PCDATA)> mesto (#PCDATA)> psc (#PCDATA)> stat (#PCDATA)>
2011-10-12
XML a DTD
6/6