DTD - elementit

DTD:ssä elementit määritellään elementtilausekkeilla.

Elementin määrittely

DTD:ssä XML-elementit määritellään elementtilausekkeilla. Elementtilauseke käyttää seuraavaa syntaksia:

!ELEMENT elementin_nimi luokka

Tai

!ELEMENT elementin_nimi (elementti_sisältö)

Tyhjät elementit

Tyhjät elementit määritellään luokitusavainsanalla EMPTY:

!ELEMENT elementin_nimi EMPTY

Esimerkki:

!ELEMENT br EMPTY

XML-esimerkki:

<br />

Vain PCDATA:n sisältävät elementit

Vain PCDATA:n sisältävät elementit määritellään pyöristetyissä merkeissä #PCDATA:n kautta:

!ELEMENT elementin_nimi (#PCDATA)

Esimerkki:

!ELEMENT from (#PCDATA)

Elementit, joissa on minkä tahansa sisällön:

Elementit, jotka on määritelty luokitusavainsanalla ANY, voivat sisältää yhdistelmän minkä tahansa analysoitavissa olevan datan:

!ELEMENT elementin_nimi ANY

Esimerkki:

!ELEMENT note ANY

Elementti, jolla on lapsielementit (sarja)

Yhden tai useamman lapsielementin omaavat elementit ilmoitetaan pyöreiden sulkeiden sisällä lapsielementin nimellä:

<!ELEMENT elementti_nimi (lapsielementti_nimi 1)>

Tai

<!ELEMENT elementti_nimi (lapsielementti_nimi 1,lapsielementti_nimi 2,...)>

Esimerkki:

<!ELEMENT note (to,from,otsikko,body)>

Kun lapsielementit ilmoitetaan pilkullisena sarjana, nämä elementit täytyy esiintyä asiakirjassa samassa järjestyksessä. Tässä täysimääräisessä ilmoituksessa lapsielementit täytyy myös ilmoittaa, ja lapsielementillä voi olla lapsielementtejä. "note"-elementin täysimääräinen ilmoitus on:

<!ELEMENT note (to,from,otsikko,body)>
<!ELEMENT to      (#PCDATA)>
<!ELEMENT from    (#PCDATA)>
<!ELEMENT otsikko (#PCDATA)>
<!ELEMENT body    (#PCDATA)>

Ilmoitetaan vain yhden kerran esiintyvien elementtien

<!ELEMENT elementti_nimi (lapsielementti_nimi)>

Esimerkki:

<!ELEMENT note (message)>

Esimerkissä on ilmoitettu, että alielementti "message" täytyy esiintyä kerran ja vain "note"-elementissä.

Ilmoitetaan vähintään yhden kerran esiintyvien elementtien

<!ELEMENT elementti_nimi (lapsielementti_nimi+)>

Esimerkki:

<!ELEMENT note (message+)>

Esimerkissä plusmerkki ilmoittaa, että alielementti "message" täytyy esiintyä "note"-elementissä vähintään kerran.

Ilmoitetaan nollasta useita esiintyvien elementtien

<!ELEMENT elementti_nimi (lapsielementti_nimi*)>

Esimerkki:

<!ELEMENT note (message*)>

Esimerkissä tähti ilmoittaa, että alielementti "message" voi esiintyä "note"-elementissä nollasta useita kertoja.

Ilmoitetaan nollasta yhteen esiintyvien elementtien

<!ELEMENT elementti_nimi (lapsielementti_nimi?)>

Esimerkki:

<!ELEMENT note (message?)>

Esimerkissä kysymysmerkki ilmoittaa, että alielementti "message" voi esiintyä "note"-elementissä nollasta yhteen kertaan.

Ilmoitetaan "ei.../tai..."-tyyppistä sisältöä

Esimerkki:

<!ELEMENT note (to,from,header,(message|body))>

Esimerkissä on ilmoitettu, että "note"-elementti täytyy sisältää "to"-elementin, "from"-elementin, "header"-elementin sekä ei-"message"-elementin "body"-elementin.

Ilmoitetaan sekaisesta sisällöstä

Esimerkki:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

Yllä oleva esimerkki määrittää: "note"-elementti voi sisältää nollasta useisiin PCDATA:hen, "to", "from", "header" tai "message".