free webpage counters
ETUSIVU materiaalit

DTD


DTT on lyhenne sanoista Document Type definition. Sen tehtävä on kuvailla XML-asiakirjaa eli sääntöjä, jotka määrittelevät tiedoston rakenteen. DTD ei ole pakollinen, mutta sen avulla esim webselain voi tarkistaa saamansa XML-datan yhteensopivuuden ja oikeellisuuden.

DTD on ratkaisu ongelmiin, jotka liittyvät tiedon löytämiseen. Esimerkiksi jos etsimme webistä tietoa sellaisista maista, joiden väkimäärä on yli 200 miljoonaa, on lähes mahdotonta tietää kuinka sivut on rakannettu. Joku on antanut tagille nimen "ASUKKAITA", toinen on antanut nimeksi "ASUKASLUKU" ja kolmas käyttää tagia "VÄKIMÄÄRÄ". (Körnerfors 2003.)

Jotta etsittävä tieto löytyisi, pitää siis sopia rakenteesta ja tagien nimistä. Se on ratkaistavissa käyttämällä DTD:tä (Document Type Definition). DTD määrittelee tagien nimet ja kuinka niitä käytettään. Jos haluamme, että sivustomme on yhtenäinen kaikilta osin, siis myös tiedon käytettävyyden kannalta, käytämme siis DTD:tä. (Körnerfors 2003.)

DTD:n määrittelee siis tagien nimet ja niiden hierakkiset suhteet. Sen avulla voimme varrmistua, että rakenne rakennetaan samalla tavalla, jonka seurauksena tiedon hakeminen ja vertailu helpottuvat. Sen jälkeen on enää yksi ongelma ratkaisematta eli se kuinka tieto kirjoitetaan. Jos olemme sopineet, että käytämme tagia "ASUKASLUKU" niin joku voi kirjoittaa 200 miljoonaa, toinen kirjoittaa 200 000 000 ja kolmas kirjoittaa 200000000. Tätä ongelmaa ei voi ratkaista pelkästään käyttämällä DTD:tä vaan avuksi on otetttava XML-skeemat. (Körnerfors 2003.)

Esimerkki sisäisestä DTD:stä.


<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="tyyli.css" ?>
<!DOCTYPE puhluettelo
[
<!ELEMENT osoitekirja (henkilo)*>
<!ELEMENT henkilo (etunimi,sukunimi,pnumero?)>
<!ELEMENT etunimi (#PCDATA)>
<!ELEMENT sukunimi (#PCDATA)>
<!ELEMENT pnumero (#PCDATA)>
]
>
<puhluettelo>
<henkilo>
<etunimi>Jari</etunimi>
<sukunimi>Sarja</sukunimi>
<pnumero>015-464213</pnumero>
</henkilo>

<henkilo>
<etunimi>Jari</etunimi>
<sukunimi>Sarja</sukunimi>
<pnumero>015-464213</pnumero>
</henkilo>
</puhluettelo>


Ulkoinen DTD

<?xml version="1.0"?>
<!DOCTYPE puhluettelo SYSTEM "puhluettelo.dtd">

Huom!


? elementti voi esiintyä 0 tai 1 kertaa
+ elementti voi esiintyä 1 tai monta kertaa
* elementti voi esiintyä 0 tai monta kertaa



Tehtävä
kokeile yllä olevaa esimerkkiä sisäisestä DTD:stä