Co to jest format pliku DTD?
DTD oznacza Document Type Definition. Plik .dtd to plik tekstowy definiujący dozwolone elementy, atrybuty i strukturę dokumentu XML, XHTML, HTML lub SGML.
Dane zapisane w pliku DTD opisują strukturę powiązanego z nim dokumentu - w tym dozwolone zagnieżdżanie i kolejność elementów. Pliki DTD zapewniają spójność podczas wymiany dokumentów między systemami; walidujący parser XML może również sprawdzić poprawność konkretnego dokumentu względem jego DTD. Deklaracje wykorzystują trzy główne typy: <!ELEMENT> (elementy podrzędne), <!ATTLIST> (atrybuty) oraz <!ENTITY> (makra tekstowe wielokrotnego użytku).
Standard DTD wywodzi się ze standardu SGML (ISO 8879, 1986) i został przyjęty przez specyfikację W3C XML 1.0 w 1998 roku. Znane publiczne pliki DTD obejmują XHTML, DocBook, SVG i MathML. Ponieważ DTD brakuje obsługi przestrzeni nazw XML i bogatych typów danych, obecnie preferowanymi alternatywami są XSD (W3C XML Schema) oraz RELAX NG. HTML5 używa minimalnej deklaracji <!DOCTYPE html>, która nie odwołuje się do rzeczywistego pliku DTD.
Bezpieczeństwo
RYZYKO: LOWPlik tekstowy; brak treści wykonywalnej. Deklaracje encji zewnętrznych DTD (<!ENTITY % nazwa SYSTEM 'url'>) mogą powodować ataki XML External Entity (XXE) podczas przetwarzania przez parsery XML w kodzie aplikacji - nie jest to ryzyko wynikające z samego otwarcia pliku DTD, ale ryzyko, gdy DTD jest używane w aplikacji, która analizuje niezaufany XML z włączonym przetwarzaniem DTD. Bezpieczny do otwarcia w edytorze tekstu.
Szczegóły formatu
w pigułceProgramy otwierające pliki DTD
Szczegóły techniczne
specyfikacja| Typ pliku | Plik schematu/deklaracji w formacie czystego tekstu |
| Typ MIME | application/xml-dtd; text/plain (alternatywny) |
| Magic bytes | Brak - czysty tekst (może zaczynać się od komentarza XML lub bezpośrednio od deklaracji <!ELEMENT) |
| Kodowanie | UTF-8 lub US-ASCII; kodowanie deklarowane w opcjonalnej początkowej instrukcji przetwarzania XML |
| Kompresja | Brak - nieskompresowany tekst |
| Typowy rozmiar | 1 KB - 500 KB (proste DTD są małe; złożone standardy, takie jak DITA lub DocBook DTD, mogą mieć ponad 100 KB z modułowymi plikami .mod/.ent) |
| Typy deklaracji | <!ELEMENT> (elementy podrzędne i model zawartości), <!ATTLIST> (atrybuty i wartości domyślne), <!ENTITY> (makra tekstowe), <!NOTATION> (typy notacji) |
| Pochodzenie standardu | SGML ISO 8879 (październik 1986); przyjęty przez W3C XML 1.0 Recommendation (luty 1998) |
| Obsługa przestrzeni nazw | Brak - składnia DTD powstała przed przestrzeniami nazw XML, co jest kluczowym ograniczeniem w porównaniu do XSD |
| Obsługa typów danych | Ograniczona do ID, IDREF, CDATA, NMTOKEN i kilku innych - brak bogatych typów, takich jak data czy liczba całkowita |
| Walidacja | Parsery XML mogą walidować dokument względem jego DTD przy użyciu ograniczeń ELEMENT i ATTLIST |
| HTML5 DOCTYPE | <!DOCTYPE html> to minimalny szkielet; nie odwołuje się ani nie wymaga rzeczywistego pliku DTD |
| Znane publiczne DTD | XHTML 1.0, DocBook, DITA, SVG 1.1, MathML 2.0 - przywoływane przez identyfikatory PUBLIC/SYSTEM w dokumentach |
| Zastąpiony przez | W3C XML Schema (.xsd, 2001) oraz RELAX NG (.rnc/.rng, 2003) dla walidacji uwzględniającej przestrzenie nazw i bogate typy danych |
| Wydano | 1986 (SGML, ISO 8879); 1998 for XML DTD (W3C XML 1.0 Recommendation, February 1998) |
| Najnowsza wersja | 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 |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.w3.org |
Konwersje DTD
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DTD.