<< Chapter < Page | Chapter >> Page > |
3.1.4 Attributter
Der gælder en særlig syntaks for angivelse af attributter i en DTD. De bygges over følgende skabelon:
<!ATTLIST elementnavn attributnavn typeværdi forekomst >
Et eller flere attributter anføres i en attributliste : ATTLIST. Som det første angives hvilket element attributtet er associeret med, dernæst navnet på attributtet, hvilken type der optræder som værdi for attributtet, og endelig en karakteristik af forekomsten, om der for eksempel er tale om et obligatorisk eller optionelt attribut.
Elementet FORFATTER indeholder et attribut:
<!ELEMENT forfatter (fornavn, efternavn)>
<!ATTLIST forfatter
nation CDATA #REQUIRED
>
FORFATTER er forældreknude til FORNAVN og EFTERNAVN, som dermed også er søskende. FORFATTER er med andre ord et strukturelement . Men derudover kan vi se at der er et attribut knyttet til elementet. Det angives med en attributliste: ATTLIST – det kan jo tænkes at der er mere end et attribut – efterfulgt af navnet på det element som indeholder et attribut efterfulgt af navnet på selve attributtet. Af ovenstående fremgår altså at elementet FORFATTER har et attribut kaldet NATION.
Herefter skal der følge yderligere to angivelser: en angivelse af hvilken type oplysning der kan forekomme som værdi for attributtet, og en angivelse af hvornår attributtets værdi skal være udfyldt.
I det aktuelle eksempel: nation CDATA #REQUIRED, står der umiddelbart efter attributtets navn som angivelse af typeværdi: CDATA . Denne oplysning betyder Character Data . Det angiver at der er tale om data som – i modsætning til PCDATA – ikke skal parses af XML-processoren (hvad det vil sige, vender vi tilbage til i modul 4). Som sidste oplysning finder vi angivelsen: #REQUIRED . Det betyder at der skal være en værdi angivet for dette attribut, værdiangivelsen er med andre ord obligatorisk, og der kan ikke forekomme en forfatter i vores onlinekatalog uden at der samtidig er en oplysning om vedkommendes nationalitet.
Et eksempel mere:
<!ELEMENT ISBN (#PCDATA)>
<!ATTLIST ISBN
format CDATA (tryk | lydbog) “tryk”
volumen CDATA #REQUIRED
>
Elementet ISBN er et tekstelement. Det er angivet som: ISBN (#PCDATA), hvor PCDATA betegner data som parses, nemlig tekststrengen som angiver ISBN nummeret. Der må med andre ord ikke være tegn indeholdt i denne streng som er reserveret til brug i XML.
Elementet ISBN har desuden, som det fremgår af ATTLIST, to attributter, attributterne FORMAT og VOLUMEN. For begges vedkommende gælder at typeværdien er defineret til at være character data. Men der er en væsentlig forskel i angivelsen af værdiens forekomst. Som det umiddelbart fremgår, skal der anføres en værdi for attributet VOLUMEN – i XML-dokumentet vil det være en angivelse af enten et sidetal eller en lydbogs varighed. Denne værdi er obligatorisk, hvad der fremgår af notationen #REQUIRED.
Værdien for attributet FORMAT er derimod angivet som en oplistning af mulige værdier (eng. enumerated type values ): format CDATA (tryk | lydbog) “tryk”
Værdien kan være enten tryk eller lydbog svarende til angivelsen i parentesen: (tryk | lydbog), altså en bog i enten papirformat eller en lydbog. Endvidere er der angivet en default-værdi, det vil sige en værdi som automatisk vil gælde, hvis opmærkeren har glemt at anføre en værdi. Default er tryk, hvad der nok er det mest almindelige, trods alt.
Notification Switch
Would you like to follow the 'Xml og xslt - en introduktion' conversation and receive update notifications?