DTD

DTD () on yksi  SGML- ja XML- kielten yhteydessä käytetyistä rakennemäärittelytavoista. DTD määrittelee rakenteisen dokumentin sallitut ilmenemismuodot elementeille ja attribuuteille siten että määrittelystä muodostuu uusi merkintäkieli.

Käytettävät avainsanat 

DTD:llä määritellään dokumentin rakenne käyttämällä seuraavia avainsanoja: 

 DOCTYPE: määrittelyn aloitus (liittäminen dokumenttiin)
 ENTITY: määrittelee entiteetin ja sen sisällön
 ELEMENT: määrittelee elementin ja sen sisällön
 ATTLIST: määrittelee elementin attribuuttilistan
 NOTATION: määrittelee notaatiotyypin
 SHORTREF: määrittee käytettäviä lyhenteitä
 USEMAP: määrittelee elementissä käytettävät lyhenteet

Liittäminen dokumentteihin 

DTD liitetään dokumentteihin lisäämällä dokumenttityyppimäärittely avainsanalla DOCTYPE, joka on aina dokumentin alussa (XML:ssä aina XML- määrittelyn jälkeen) annettava merkintä. Merkintä määrittelee, että mikä on DTD:n tunniste ja sijainti, sekä sen mistä DTD:n elementistä kyseisen dokumentin rakenne alkaa. Merkintään voidaan liittää myös sisäisiä rakennemäärittelyjä siten että ulkoista määrittelyä ei tarvita välttämättä lainkaan.

Ulkoinen määrittely 

<!DOCTYPE html PUBLIC
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Määrittelyssä html kertoo että tämä dokumentti alkaa elementillä html ja että rakenteen tarkastus pitäisi aloittaa siitä elementistä. PUBLIC määrittelee että seuraava merkkijono on DTD:n julkinen tunniste, jota voidaan käyttää hyväksi DTD:n hakemisessa esimerkiksi sovelluksen omasta DTD- hakemistosta. DTD:n tunnisteena tässä toimii "-//W3C//DTD XHTML 1.0 Transitional//EN" ja sitä vastaava tiedosto löytyy osoitteesta "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" jos tunnisteen perusteella ei löytynyt paikallista kopiota. Ulkoiseen tiedostoon voidaan viitata suoraan ilman tunnistetta käyttämällä merkinnän PUBLIC sijaan merkintää SYSTEM.

Sisäinen määrittely 

<?xml version="1.0"?>
<!DOCTYPE juuri [ <!ENTITY moikkaus "Moi!"> ]>
<juuri>&moikkaus;</juuri>

Tässä määritellään että XML- dokumentti alkaa elementillä juuri, mutta mitään ulkoisia määrittelyjä ei anneta. Sen sijaan hakasulkeiden sisällä määritellään sisäisesti yksi entiteetti nimeltä moikkaus. Entiteettiä käytetään elementin juuri sisällä siten, että sen paikalle tulee teksti Moi!.

Esimerkkejä

XHTML 

XHTML- merkintäkielen DTD määrittelee että dokumentin juurielementtinä pitää aina olla  html, ja että html elementin alla on aina ensimmäisenä elementti head ja toisena elementti body. Vastaavasti DTD määrittelee näiden elementtien sallitut tai vaaditut attribuutit. 

Esimerkkinä ote XHTML DTD:stä:

<!ELEMENT html (head, body)>
<!ATTLIST html
  %i18n;
  id          ID             #IMPLIED
  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
>

HTML 

DTD voi myös määritellä rakenteita siten, että vaikka varsinaisessa dokumentissa ei ole elementille merkintää (niin sanottuja tägejä), on dokumentti kuitenkin tulkittava siten että elementti on annettu. Esimerkiksi HTML- merkintäkielen DTD määrittelee että juurielementin HTML voi jättää merkitsemättä. 

Esimerkkinä ote HTML DTD:stä (merkintä "O O" tarkoittaa että alku- ja lopputägejä ei tarvitse merkitä):

<!ELEMENT HTML O O (%html.content;)    -- document root element -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
>

Lisää aiheesta 

 W3Schools

Lähteet 

W3C-standardit