Den Document Type Definition (DTD) eller definisjon dokumenttype er enten en fil eller en del av et dokument SGML eller XML , som beskriver dokumentet eller klasse av dokumenter.
En DTD beskriver grammatikk av dokumentet - liste over elementer (eller koder ), attributter, deres innhold og arrangement - i tillegg til ytterligere vokabular i form av et tegn enhet liste .
XML-skjema er et mer sofistikert alternativ til bruk av DTD-er.
En DTD beskriver dokumenter på to nivåer: den logiske strukturen, som kan sammenlignes med abstrakt syntaks , og den fysiske strukturen, som kan sammenlignes med konkret syntaks .
På nivået av den logiske strukturen indikerer en DTD navnene på elementene som kan vises og innholdet, det vil si underelementene og attributtene. Bortsett fra attributtene, spesifiseres innholdet ved å indikere navn, rekkefølge og antall tillatte forekomster av underelementene. Settet utgjør definisjonen av gyldige hierarkier av elementer og tekst. På den annen side tillater ikke DTDs å innføre begrensninger på verdien av teksten som "innholdet av elementet X er et heltall i desimal", eller "i elementet Y , alle sekvenser av blanks tilsvarer bare ett rom ”.
Å definere hva som er gyldig er også rollen som "skjemaer" ( for eksempel XML-skjema , Relax NG , Schematron ), men disse uttrykkes fortrinnsvis i XML-syntaks mens DTD-er har en spesifikk syntaks. Bare DTD er en integrert del av W3C XML-anbefalingen, og bare den kan validere et XML-dokument fra denne anbefalingens synspunkt.
DTD for et dokument kan skrives inne i og utenfor dokumentet. Den endelige DTD er en kombinasjon av de to.
På nivået med den fysiske strukturen kan en DTD også definere generelle enheter . Disse har en av følgende roller:
Det er noen forskjeller mellom DTD-er for SGML og de for XML. Det viktigste fra et uttrykkelseskapasitetsperspektiv er at DTD-er for XML ikke tillater begrensninger for hekking av elementer og spesifiserer gyldige trær. For eksempel, i SGML-versjonen av HTML, kan et "A" -element (for lenker og ankre) ikke inneholde et annet "A" -element på noe nivå, selv om den generelle beskrivelsen av innholdet indirekte nevner "A" som mulig innhold av " EN". Denne begrensningen kan ikke uttrykkes i XML-versjonen av DTD-ene.
En annen begrensning på muligheten til å uttrykke DTDer for XML over SGML er fjerning av uordnede grupperinger: i SGML betyr skriving for innholdet i et X- element "A & B & C" at X må inneholde de tre elementene A, B og C uten krav til bestillingen. I DTD-ene for XML, som ikke har “&” -kontakten, kan dette bare uttrykkes ved eksplisitt oppregning av alle mulige ordrer: innholdsdefinisjonen for X skrives: “A, B, VS”. Den kombinatoriske eksplosjonen som dette innebærer, fører generelt til at det i DTDene for XML pålegges en ordre som ikke er logisk nødvendig for behandlingen av informasjonen i dokumentet.
DTD er avgrenset, inne i et dokument, av merkelappen . !DOCTYPE