Что такое формат файла DTD?
DTD расшифровывается как Document Type Definition. Файл .dtd - это текстовый файл, определяющий разрешенные элементы, атрибуты и структуру документа XML, XHTML, HTML или SGML.
Данные, сохраненные в файле DTD, описывают структуру связанного с ним документа, включая допустимую вложенность и порядок элементов. Файлы DTD обеспечивают согласованность при обмене документами между системами; валидирующий XML-парсер также может проверить корректность конкретного документа на соответствие его DTD. В объявлениях используются три основных типа: <!ELEMENT> (дочерние элементы), <!ATTLIST> (атрибуты) и <!ENTITY> (текстовые макросы многократного использования).
DTD возникли вместе со стандартом SGML (ISO 8879, 1986) и были приняты спецификацией W3C XML 1.0 в 1998 году. Известные публичные DTD охватывают XHTML, DocBook, SVG и MathML. Поскольку в DTD отсутствует поддержка пространств имен XML и расширенных типов данных, в настоящее время предпочтительными альтернативами являются XSD (W3C XML Schema) и RELAX NG. HTML5 использует минимальное объявление <!DOCTYPE html>, которое не ссылается на реальный файл DTD.
Безопасность и защита
РИСК: LOWТекстовый файл; не содержит исполняемого контента. Объявления внешних сущностей DTD (<!ENTITY % name SYSTEM 'url'>) могут вызвать атаки типа XML External Entity (XXE) при обработке XML-парсерами в коде приложения - это не риск при открытии самого файла DTD, но риск при использовании DTD в приложении, которое анализирует недоверенный XML с включенной обработкой DTD. Безопасно для открытия в текстовом редакторе.
Детали формата
в двух словахПрограммы, открывающие файлы DTD
Технические подробности
глубокая спецификация| Тип файла | Файл схемы/объявления в формате обычного текста |
| MIME-тип | application/xml-dtd; text/plain (альтернативный) |
| Магические байты | Нет - обычный текст (может начинаться с комментария XML или непосредственно с объявления <!ELEMENT) |
| Кодировка | UTF-8 или US-ASCII; кодировка объявляется в необязательной начальной инструкции обработки XML |
| Сжатие | Нет - несжатый обычный текст |
| Типичный размер | 1 КБ - 500 КБ (простые DTD малы; сложные стандарты, такие как DITA или DocBook DTD, могут превышать 100 КБ с модульными файлами .mod/.ent) |
| Типы объявлений | <!ELEMENT> (дочерние элементы и модель содержимого), <!ATTLIST> (атрибуты и значения по умолчанию), <!ENTITY> (текстовые макросы), <!NOTATION> (типы нотаций) |
| Происхождение стандарта | SGML ISO 8879 (октябрь 1986 г.); принят рекомендацией W3C XML 1.0 (февраль 1998 г.) |
| Поддержка пространств имен | Нет - синтаксис DTD появился раньше пространств имен XML, что является ключевым ограничением по сравнению с XSD |
| Поддержка типов данных | Ограничена ID, IDREF, CDATA, NMTOKEN и некоторыми другими - нет сложных типов, таких как дата или целое число |
| Валидация | XML-парсеры могут проверять документ на соответствие его DTD, используя ограничения ELEMENT и ATTLIST |
| HTML5 DOCTYPE | <!DOCTYPE html> является минимальной заглушкой; не ссылается на реальный файл DTD и не требует его |
| Известные публичные DTD | XHTML 1.0, DocBook, DITA, SVG 1.1, MathML 2.0 - на них ссылаются идентификаторы PUBLIC/SYSTEM в документах |
| Заменен на | W3C XML Schema (.xsd, 2001) и RELAX NG (.rnc/.rng, 2003) для валидации с поддержкой пространств имен и расширенных типов данных |
| Выпущен | 1986 (SGML, ISO 8879); 1998 for XML DTD (W3C XML 1.0 Recommendation, February 1998) |
| Последняя версия | 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 |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.w3.org |
Конвертации DTD
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DTD.