<< Chapter < Page | Chapter >> Page > |
En DTD indeholder en beskrivelse, en elementdeklaration , af alle elementer i et tilhørende XML-dokument efter følgende skabelon:
<!ELEMENT elementnavn (indhold)>
Som det første i en elementdeklaration anføres navnet på det element som skal deklareres. Læg mærke til at navn og ortografi for hvert enkelt element i en DTD skal matche den tilsvarende angivelser i XML-dokumentet og vice versa. Efter elementets navn anføres i parentes elementets indhold. Ved at se på indholdet i parentesen kan man konstatere om der er tale om et strukturelement eller et tekstelement.
Det vil blive illustreret med følgende eksempler:
3.1.1 Rodelementet
<!ELEMENT online_katalog ( (bog)+ )>
Der findes ikke specielle regler for rækkefølgen af elementdeklarationer i en DTD. Men det kan anbefales at følge rækkefølgen i den formaliserede informationsmodel. Denne rækkefølge svarer til rækkefølgen i det tilhørende XML-dokument, og ved at følge denne er risikoen for at glemme eller overse et element ubetydelig.
Det første element som skal deklareres er derfor rodelementet. Navnet på elementet skal anføres og dernæst, anført i parentes, den eller de knuder i strukturen som er indlejret i rodelementet.
I det anførte eksempel er der kun ét indlejret element: elementet BOG. Der er mindst én forekomst, men forhåbentlig mange flere, af dette element. Det angives med en hyppighedsoperator : + som betyder: én eller flere forekomster af det element som står umiddelbart foran. Ved at bruge operatorer for hyppighed, kan man angive hvor mange gange et element skal forekomme. Står der ikke en operator efter et element, forekommer det én og kun én gang.
Vi kan læse notationen i fig.3 på følgende måde: elementet ONLINE_KATALOG er forældreknude (eng. parent ) til BOG, som er barn af (eng. child ) ONLINE_KATALOG. BOG forekommer én eller flere gange.
3.1.2 Strukturelementet
Elementet BOG er et strukturelement. Det fremgår af indholdet i parentesen som kun indeholder elementer. Det deklareres i princippet efter samme opskrift som ovenfor:
<!ELEMENT bog (forfatter, impressum, stof)>
Dette element har som vist tre indlejrede elementer, de elementer som er anført i parentesen. Der er i dette eksempel ikke nogen hyppighedsoperator anført for disse elementer, og det betyder at de forekommer én – og kun én gang. Rækkefølgen af elementer i parentesen foreskriver rækkefølgen af elementer i XML-dokumentet. Vi kan læse notationen på følgende måde: elementet BOG er forældreknude til børnene FORFATTER, IMPRESSUM og STOF. Disse tre elementer er børn af BOG og de er tillige søskende (eng. siblings ).
3.1.3 Tekstelementet
Som eksempel på et tekstelement kan vi bruge elementet FORNAVN:
<! ELEMENT fornavn (#PCDATA)>
Deklarationen siger i dette eksempel at elementet FORNAVN indeholder #PCDATA. Det betyder at indholdet i elementet er ren tekst. PCDATA betyder Parsed Character Data , data som skal undersøges nærmere, parses, med henblik på at sikre at der ikke forekommer ulovlige tegn i teksten, det vil sige tegn som indgår i XMLs standardvokabular.
Notification Switch
Would you like to follow the 'Xml og xslt - en introduktion' conversation and receive update notifications?