Hvad er DTD-filformatet?
DTD står for Document Type Definition. En .dtd-fil er en almindelig tekstfil, der definerer de tilladte elementer, attributter og strukturen af et XML, XHTML, HTML eller SGML-dokument.
Dataene gemt i en DTD-fil beskriver strukturen af det tilhørende dokument - herunder tilladt indlejring og rækkefølge af elementer. DTD-filer sikrer konsistens, når dokumenter udveksles mellem systemer; en validerende XML-parser kan også kontrollere gyldigheden af et specifikt dokument mod dets DTD. Erklæringer bruger tre hovedtyper: <!ELEMENT> (underelementer), <!ATTLIST> (attributter) og <!ENTITY> (genanvendelige tekstmakroer).
DTD'er stammer fra SGML-standarden (ISO 8879, 1986) og blev vedtaget af W3C XML 1.0-specifikationen i 1998. Velkendte offentlige DTD'er dækker XHTML, DocBook, SVG og MathML. Da DTD'er mangler understøttelse af XML-navnerum og rige datatyper, er XSD (W3C XML Schema) og RELAX NG nu de foretrukne alternativer. HTML5 bruger en minimal <!DOCTYPE html>-erklæring, der ikke refererer til en faktisk DTD-fil.
Sikkerhed og tryghed
RISIKO: LOWAlmindelig tekstfil; intet eksekverbart indhold. DTD-eksterne entitetserklæringer (<!ENTITY % name SYSTEM 'url'>) kan forårsage XML External Entity (XXE)-angreb, når de behandles af XML-parsere i applikationskode - ikke en risiko ved at åbne selve DTD-filen, men en risiko når DTD'en bruges i en applikation, der parser upålidelig XML med DTD-behandling aktiveret. Sikker at åbne i en teksteditor.
Formatdetaljer
kort fortaltProgrammer der åbner DTD-filer
Tekniske detaljer
dyb specifikation| Filtype | Almindelig tekstskema/erklæringsfil |
| MIME-type | application/xml-dtd; text/plain (alternativ) |
| Magic bytes | Ingen - almindelig tekst (kan begynde med en XML-kommentar eller direkte med en <!ELEMENT-erklæring) |
| Kodning | UTF-8 eller US-ASCII; kodning erklæret i valgfri indledende XML-behandlingsinstruktion |
| Komprimering | Ingen - ukomprimeret almindelig tekst |
| Typisk størrelse | 1 KB - 500 KB (enkle DTD'er er små; komplekse standarder som DITA eller DocBook DTD'er kan være 100+ KB med modulære .mod/.ent-filer) |
| Erklæringstyper | <!ELEMENT> (underelementer og indholdsmodel), <!ATTLIST> (attributter og standardværdier), <!ENTITY> (tekstmakroer), <!NOTATION> (notationstyper) |
| Standard oprindelse | SGML ISO 8879 (oktober 1986); vedtaget af W3C XML 1.0 Recommendation (februar 1998) |
| Understøttelse af navnerum | Ingen - DTD-syntaks er ældre end XML-navnerum, en væsentlig begrænsning i forhold til XSD |
| Understøttelse af datatyper | Begrænset til ID, IDREF, CDATA, NMTOKEN og få andre - ingen rige typer som dato eller heltal |
| Validering | XML-parsere kan validere et dokument mod dets DTD ved hjælp af ELEMENT- og ATTLIST-begrænsninger |
| HTML5 DOCTYPE | <!DOCTYPE html> er en minimal stub; refererer ikke til eller kræver en faktisk DTD-fil |
| Velkendte offentlige DTD'er | XHTML 1.0, DocBook, DITA, SVG 1.1, MathML 2.0 - refereret af PUBLIC/SYSTEM-identifikatorer i dokumenter |
| Erstattet af | W3C XML Schema (.xsd, 2001) og RELAX NG (.rnc/.rng, 2003) for navnerumsbevidst og rigt typet validering |
| Udgivet | 1986 (SGML, ISO 8879); 1998 for XML DTD (W3C XML 1.0 Recommendation, February 1998) |
| Seneste version | XML 1.0 Fifth Edition (November 2008); XML 1.1 Second Edition (August 2006) - DTD syntax unchanged since 1998; W3C XML Schema (XSD) and RELAX NG are modern replacements |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.w3.org |
DTD-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om DTD-filer.