Wat is het DTD-bestandsformaat?
DTD staat voor Document Type Definition. Een .dtd-bestand is een plat tekstbestand dat de toegestane elementen, attributen en structuur definieert van een XML, XHTML, HTML of SGML-document.
De gegevens die in een DTD-bestand zijn opgeslagen, beschrijven de structuur van het bijbehorende document - inclusief de toegestane nesting en volgorde van elementen. DTD-bestanden zorgen voor consistentie wanneer documenten tussen systemen worden uitgewisseld; een validerende XML-parser kan ook de geldigheid van een specifiek document controleren aan de hand van de DTD. Declaraties gebruiken drie hoofdtypen: <!ELEMENT> (kind-elementen), <!ATTLIST> (attributen) en <!ENTITY> (herbruikbare tekstmacro's).
DTD's zijn voortgekomen uit de SGML-standaard (ISO 8879, 1986) en werden in 1998 overgenomen door de W3C XML 1.0-specificatie. Bekende publieke DTD's omvatten XHTML, DocBook, SVG en MathML. Omdat DTD's ondersteuning voor XML-namespaces en rijke datatypen missen, zijn XSD (W3C XML Schema) en RELAX NG tegenwoordig de geprefereerde alternatieven. HTML5 gebruikt een minimale <!DOCTYPE html>-declaratie die niet verwijst naar een daadwerkelijk DTD-bestand.
Beveiliging & veiligheid
RISICO: LOWPlat tekstbestand; geen uitvoerbare inhoud. DTD externe entiteitsdeclaraties (<!ENTITY % name SYSTEM 'url'>) kunnen XML External Entity (XXE)-aanvallen veroorzaken wanneer ze worden verwerkt door XML-parsers in applicatiecode - dit is geen risico bij het openen van het DTD-bestand zelf, maar een risico wanneer de DTD wordt gebruikt in een applicatie die niet-vertrouwde XML verwerkt met DTD-verwerking ingeschakeld. Veilig te openen in een tekstverwerker.
Formaatdetails
in een notendopProgramma's die DTD-bestanden openen
Technische details
diepe specificaties| Bestandstype | Platte-tekstschema/declaratiebestand |
| MIME-type | application/xml-dtd; text/plain (alternatief) |
| Magic bytes | Geen - platte tekst (kan beginnen met een XML-commentaar of direct met een <!ELEMENT-declaratie) |
| Codering | UTF-8 of US-ASCII; codering gedeclareerd in optionele leidende XML-verwerkingsinstructie |
| Compressie | Geen - ongecomprimeerde platte tekst |
| Typische grootte | 1 KB - 500 KB (eenvoudige DTD's zijn klein; complexe standaarden zoals DITA of DocBook DTD's kunnen 100+ KB zijn met modulaire .mod/.ent-bestanden) |
| Declaratietypen | <!ELEMENT> (kind-elementen en inhoudsmodel), <!ATTLIST> (attributen en standaardwaarden), <!ENTITY> (tekstmacro's), <!NOTATION> (notatietypen) |
| Oorsprong standaard | SGML ISO 8879 (oktober 1986); overgenomen door W3C XML 1.0 Aanbeveling (februari 1998) |
| Namespace-ondersteuning | Geen - DTD-syntaxis is ouder dan XML-namespaces, een belangrijke beperking ten opzichte van XSD |
| Ondersteuning datatypen | Beperkt tot ID, IDREF, CDATA, NMTOKEN en enkele andere - geen rijke typen zoals datum of integer |
| Validatie | XML-parsers kunnen een document valideren tegen de DTD met behulp van ELEMENT- en ATTLIST-beperkingen |
| HTML5 DOCTYPE | <!DOCTYPE html> is een minimale stub; verwijst niet naar een daadwerkelijk DTD-bestand en vereist dit ook niet |
| Bekende publieke DTD's | XHTML 1.0, DocBook, DITA, SVG 1.1, MathML 2.0 - waarnaar wordt verwezen door PUBLIC/SYSTEM-identificatoren in documenten |
| Vervangen door | W3C XML Schema (.xsd, 2001) en RELAX NG (.rnc/.rng, 2003) voor namespace-bewuste en rijk getypeerde validatie |
| Uitgebracht | 1986 (SGML, ISO 8879); 1998 for XML DTD (W3C XML 1.0 Recommendation, February 1998) |
| Laatste versie | 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 |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.w3.org |
DTD conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over DTD-bestanden.