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 rediger

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:

  1. 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.
  2. 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 inneholde et "navn"-element.
  3. Et "navn"-element inneholder data.
  4. Et "foedselsdato"-element inneholder data.
  5. Et "kjoenn"-element inneholder data.
  6. 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">
 <personliste>
  <person>
    <navn>Ola Nordmann</navn>
    <foedselsdato>27. november 1960</foedselsdato>
    <kjoenn>Mann</kjoenn>
  </person>
</personliste>

DTD-en ovenfor krever at alle person-elementer har et navn-element. personliste-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 rediger

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:

Av disse to er XML Schema den desidert mest brukte.

Se også rediger


Eksterne lenker rediger