DTD

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 13. august 2019; checks kræver 38 redigeringer .

DTD ( engelsk Document Type Definition - document type definition) er en forkortelse for følgende to begreber:

På grund af visse forskelle mellem XML og SGML har anvendelsen af ​​en DTD også nogle ejendommeligheder afhængigt af måldokumentet.

Nu er der et afslag på at bruge DTD i XML- teknologi af en række årsager [1] :

  1. Bruger en anden syntaks end XML.
  2. Ingen nodeindtastning (i DTD).
  3. Ingen understøttelse af navnerum (i DTD).

DTD'en er blevet erstattet af W3C XML Schema- standarden .

Dokumentskemabeskrivelse

En DTD beskriver skemaet for et dokument for et bestemt opmærkningssprog ved hjælp af et sæt erklæringer [parameterobjekter, elementer og elementattributter], der beskriver dets klasse (eller type) i form af de syntaktiske begrænsninger for det pågældende dokument. En DTD kan også erklære konstruktioner, der altid er nødvendige for at definere strukturen af ​​et dokument, men som på den anden side kan påvirke fortolkningen af ​​visse dokumenter.

Erklæring af parameterobjekter

En parameterobjekterklæring definerer en makro af en bestemt type, der kan refereres til og udvides et sted i DTD'en. Disse makroer vises muligvis ikke i selve dokumentet, men kun i DTD'en. Hvis der refereres til et parameterobjekt med dets DTD-navn, udvides det til en streng, der specificerer indholdet af dette objekt.

Eksempler:

<!ENTITY % skrifttypestil "TT | I | B | BIG | SMALL">

Parameterobjektet fontstyleindeholder en gruppe tags TT | I | B | BIG | SMALL.

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Parameterobjektet inlineindeholder tekstdata og yderligere fire parameterobjekter fontstyle, phraseog . specialformctrl

Elementerklæringer

Elementerklæringer definerer (specificerer) sættet af tilladte elementnavne i et dokument, indholdstypen for hvert element og de påkrævede/valgfri tags .

Forskellige nøgleord og symboler definerer indholdet af et element:

  • EMPTY - tomt indhold
  • ANY - ethvert indhold
  • , - angiver rækkefølgen
  • | - adskillelse af alternativer
  • () - gruppering
  • * - et hvilket som helst antal elementer (nul eller mere)
  • + - mindst ét ​​element (et eller flere)
  • ? - valgfri tilstedeværelse af elementet (nul eller en)
  • Hvis ikke *, +eller ? - skal der kun være ét element

Eksempler:

<!ELEMENT DL - - (DT|DD)+>

Et element DLskal indeholde et eller flere elementer DTeller DDi en hvilken som helst rækkefølge.

<!ELEMENT FORM - - (%blok;|SCRIPT)+ -(FORM)>

Et element FORMskal indeholde et eller flere elementer som et parameterobjekt blockeller element SCRIPTi vilkårlig rækkefølge, men det er ikke muligt at indeholde et andet element FORM.

Elementattributerklæringer

Hvert element i et DTD-dokument kan tildeles en liste over attributter. Til dette bruges direktivet !ATTLIST, som specificerer navnet på det element, som listen over attributter er tildelt, og parametrene for hver attribut: navn, type og standardværdi.

For eksempel:

<!ATTLIST MAP navn CDATA #REQUIRED>

I dette eksempel MAPer attributten defineret på elementet name. Det er obligatorisk.

Eksisterende attributtyper:

  • CDATA(Tegnsæt af data) - attributværdien kan være alle tegndata
  • ID - attributværdien skal være den unikke identifikator for elementet
  • IDREF - værdien af ​​elementet er en reference til elementet ved detsID
  • IDREFS - det samme som IDREF, men med mulighed for links ikke af én identifikator, men af ​​flere
  • NMTOKEN - værdien af ​​attributten kan være en sekvens af tegn, der ligner navnet lidt (deraf navnet - navnetegn). Dette er en streng, der indeholder enhver kombination af de tegn, der er tilladt for XML-navne.
  • NMTOKENS — attributværdi er en liste over værdier
  • ENTITY — værdien bruges til at henvise til en ekstern enhed.
  • ENTITIES - giver dig mulighed for at angive en liste over eksterne enheder adskilt af mellemrum.
  • NOTATION - attributværdien kan være en af ​​de tidligere definerede notationer
  • NOTATIONS - giver dig mulighed for at indstille en liste over notationer.
  • ListingsogNOTATION-listings
  • ENUMERATION — specificerer en liste over mulige værdialternativer.

Der er følgende standardegenskaber:

  1. IMPLIED - attributværdien er valgfri;
  2. REQUIRED — værdien af ​​attributten skal angives;
  3. FIXED - værdien af ​​denne attribut er sat som en konstant i DTD'en og kan ikke ændres i dokumentet;
  4. en bestemt værdi, der bruges som standard.

Tilknytning af et dokument til en specifik DTD

For at knytte et dokument til en bestemt DTD skal elementet Dokumenttypeerklæring vises i begyndelsen af ​​dokumentets brødtekst .

Afhængigt af DTD'ens placering kan dokumenttypeerklæringen være af to typer:

  • Intern delmængde af DTD

Et sæt DTD-erklæringer er indeholdt i selve dokumentet. For eksempel:

<!DOCTYPE foo [ <!ENTITY-hilsen "helloworld"> ]> <!DOCTYPE bar [ <!ENTITY hilsen "helloworld"> ]>
  • Ekstern delmængde af DTD

Et sæt DTD-erklæringer er placeret i en separat tekstfil med filtypenavnet .dtd. I dette tilfælde kan filen refereres via en offentlig identifikator og/eller en systemidentifikator. For eksempel:

<!-- Almindelig HTML 4.01 validering --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Eksempel

Et eksempel på en meget simpel XML DTD, der beskriver en liste over personer:

<!ELEMENT people_list (person*)> <!ELEMENT person (navn, fødselsdato?, køn?, socialsecuritynumber?)> <!ELEMENT name (#PCDATA) > <!ELEMENT fødselsdato (#PCDATA) > <!ELEMENT køn (# PCDATA) > <!ELEMENT socialsecuritynumber (#PCDATA) >

Startende fra første linje:

  1. Et element <people_list>indeholder et vilkårligt antal elementer <person>. Tegnet <*>betyder, at 0, 1 eller flere elementer er mulige <person>i elementet <people_list>.
  2. Elementet <person>indeholder elementerne <name>, <birthdate>og <gender>. <socialsecuritynumber>Tegnet <?>betyder, at elementet er valgfrit. Elementet <name>indeholder ikke <?>, hvilket betyder, at elementet <person> skal indeholde elementet <name>.
  3. Elementet <name>indeholder data.
  4. Elementet <birthdate>indeholder data.
  5. Elementet <gender>indeholder data.
  6. Elementet <socialsecuritynumber>indeholder data.

Et eksempel på et XML-dokument, der bruger denne DTD:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list> <person> <navn> Fred blogger </navn> <fødselsdato> 27/11/2008 </fødselsdato> <køn> Han </køn> <socialsecuritynumber> 1234567890 </socialsecuritynumber> </person> </people_list>

Se også

Noter

  1. Redaktører Ashok Malhotra, Murray Maloney. XML-skemakrav . W3C (15. februar 1999). Hentet 26. juli 2021. Arkiveret fra originalen 19. juli 2021.