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
Kategori:XML-standarder