Definisjon av dokumenttype

En dokumenttypedefinisjon eller DTD er en beskrivelse av strukturen og syntaksen til et XML- eller SGML - dokument . Dens grunnleggende funksjon er beskrivelsen av datastrukturen, å bruke en felles struktur og opprettholde konsistens mellom alle dokumenter som bruker samme DTD. På denne måten kan disse dokumentene valideres, de kjenner strukturen på elementene og beskrivelsen av dataene som hvert dokument fører med seg.

Definisjon

DTD er en definisjon, i et SGML- eller XML -dokument , som spesifiserer begrensninger på strukturen og syntaksen til dokumentet. DTD-en kan inkluderes i dokumentfilen, men lagres normalt i en egen ASCII -tekstfil. Syntaksen til DTDene for SGML og XML er lik, men ikke identisk.

Definisjonen av en DTD spesifiserer syntaksen til en SGML- eller XML-implementering, som kan være en mye brukt standard som XHTML eller en lokal implementering.

Hva beskriver en DTD?

DTD- er brukes vanligvis til å bestemme strukturen til et dokument ved hjelp av XML- eller SGML- koder . En DTD beskriver:

Eksempler

<!ELEMENT liste_over_personer (person*)> <!ELEMENT person (navn, fødselsdato?, kjønn?, personnummer?)> <!ELEMENTnavn (#PCDATA) > <!ELEMENT fødselsdato (#PCDATA) > <!ELEMENT kjønn (#PCDATA) > <!ELEMENT socialsecuritynumber (#PCDATA)>

Å se på det linje for linje forteller oss:

  1. <people_list> er et gyldig elementnavn. * indikerer at det kan være 0 eller flere personelementer.
  2. <person> er et gyldig elementnavn. Dette må inneholde navneelementet mens resten er valgfritt. Og de er fordi symbolet "?" indikerer det.
  3. <navn> er et gyldig elementnavn. Inneholder tegn.
  4. <fødselsdato> er et gyldig elementnavn.
  5. <sex> er et gyldig elementnavn. Inneholder tegn.
  6. <socialsecuritynumber> er et gyldig elementnavn.

Et eksempel på en XML -fil som bruker denne DTD:

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE person_list SYSTEM "example.dtd"> <liste_over_personer> <person> <name>Jose Garcia</name> <date of birth>25/04/1984</date of birth> <sex>Mann</sex> <social security number>0221</social security number> </person> </person_list>

DTDen vist ovenfor krever et "navn"-element i hvert "person"-element; elementet "list_of_people" er også obligatorisk, men resten er valgfritt.

Det er mulig å gjengi dette dokumentet i en XML - aktivert nettleser (som IE5 eller Mozilla ) ved å lime inn og lagre ovennevnte DTD til en tekstfil kalt example.dtd og file.xml til en tekstfil med annet navn, og åpne .xml-fil med nettleseren. Begge filene må lagres i samme katalog (eller mappe). Noen nettlesere sjekker imidlertid ikke at et XML -dokument følger reglene til DTD; de er bare pålagt å kontrollere at DTD er syntaktisk korrekt.

Begrensninger for DTD

Et skjema basert på en DTD har ganske mange begrensninger. En DTD tillater ikke å definere lokale elementer som bare er gyldige innenfor andre elementer. For eksempel, hvis vi ønsker å ha et <Manager>-element som beskriver lederen av et selskap eller en delegasjon, og definisjonen av Manager er forskjellig i hvert tilfelle, med en DTD må vi opprette elementene "CompanyManager" og " DelegationManager" for å unngå navnekonflikt. Det vil si at mangelen på hierarki i en DTD krever innføring av et hierarki basert på bindestreker eller prikker i navneområdet ( Namespace ). I en DTD er ikke definisjonen av elementer med blandet innhold veldig fleksibel, det vil si elementer som inkluderer andre elementer i tillegg til tekst. I tillegg er det ikke mulig å angi hvilken type data (nummer, dato, valuta) et attributt eller teksten til et element må samsvare.

Behovet for å overvinne disse begrensningene favoriserer utseendet til andre skjemaspråk som XML Schema , mer komplette beskrivelsesverktøy som er et alternativ til DTD-er.

Se også

Eksterne lenker