Document Type Definition

Document Type Definition (DTD) er en deklarasjon i et SGML- eller XML-dokument som definerer strukturen til dokumentet. Det kan inkluderes i dokumentfilen, eller lagres i en separat referert fil. Syntaksen for SGML- og XML-type DTD-er ganske lik, men ikke identisk.

En DTD beskriver tillatte elementer og attributter i et dokument og eventuelt tillatte attributtverdier for hvert element. Videre beskriver det hierarki og antall av elementer. Det meste av en DTD pleier å være ELEMENT- og ATTLIST-definisjoner.

Eksempel 
Denne enkle XML-type DTD-en beskriver en liste av personer:

 <!ELEMENT personliste (person*)>
 <!ELEMENT person (navn, foedselsdato?, kjoenn?, foedselsnummer?)>
 <!ELEMENT navn (#PCDATA) >
 <!ELEMENT foedselsdato (#PCDATA) >
 <!ELEMENT kjoenn (#PCDATA) >
 <!ELEMENT foedselsnummer (#PCDATA) >

Hvis vi tar dette linje for linje, uttrykker det:
 Et "personliste "-element inneholder et vilkårlig antall "person"-elementer. "*" betegner at det kan være 0, 1 eller mange "person"-elementer i "personliste "-elementet.
 Et "person"-element inneholder elementene "navn", "foedselsdato", "kjoenn" og "foedselsnummer". "?" indikerer at et element er frivillig. "navn"-elementet har ikke "?". Det betyr at et "person"-element må inneholde et "navn"-element.
 Et "navn"-element inneholder data.
 Et "foedselsdato"-element inneholder data.
 Et "kjoenn"-element inneholder data.
 Et "foedselsnummer"-element inneholder data.

Her er et eksempel på en XML-fil som oppfyller denne DTD-en:

 <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE personliste SYSTEM "eksempel.dtd">
          Ola Nordmann
     27. november 1960
     Mann
   
 

DTD-en ovenfor krever at alle -elementer har et -element. -elementet er også påkrevet, mens resten er frivillig.

Der er mulig å fremstille dette i en XML-tilpasset nettleser, som f.eks. IE5 eller Mozilla, ved å lime inn og lagre DTD-komponenten over til en tekstfil kalt eksempel.dtd og XML-filen til en tekstfil med et annet navn, og så åpne XML-filen med nettleseren. Filene bør lagres til samme katalog. Det er imidlertid mange nettlesere som ikke sjekker at et XML-dokument tilfredsstiller reglene i DTD-en. Det eneste de krever er at DTD-en'' syntaktisk korrekt.

DTD-kritikk og alternativer

DTD-støtte er svært utbredt ettersom den er en del av XML 1.0-standarden, men har sine begrensninger:

 Ingen støtte for de nyere XML-egenskaper, først og fremst navnerom.
 Mangler uttrykkskraft. Svært mange formelle sider ved et XML-dokument kan ikke beskrives i en DTD.
 Det brukes en spesiell syntaks (opprinnelig fra SGML) som ikke er XML-basert.

Det finnes to nyere XML schema-språk som er mye kraftligere og har fått "anbefalt"-status i W3C og som nå i økende grad foretrekkes foran DTD-er:

XML Schema, også kalt XML Schema Definition (XSD)
RELAX NG, som også er en del av DSDL, og en ISO-standard.

Av disse to er XML Schema den desidert mest brukte.

Se også
 Document Type Declaration
 Semantisk web

Eksterne lenker 

 Ulike doctyper for HTML
 XMLPatterns.com – Designmønster for DTD-er

XML-standarder