Введение

Набор деклараций разметки, определяющих тип документа для языка разметки семейства SGML. Определение типа документа (DTD) — это файл спецификации, содержащий набор деклараций разметки, определяющих тип документа для языка разметки семейства SGML (GML, SGML, XML, HTML). Файл спецификации DTD может использоваться для проверки документов. DTD определяет допустимые строительные блоки документа XML, определяя структуру документа посредством перечня допустимых элементов и атрибутов. DTD может быть объявлен непосредственно в XML-документе или как внешняя ссылка. Версия DTD с поддержкой пространств имен разрабатывается как часть 9 ISO DSDL. DTD по-прежнему используются в приложениях, которым требуются специальные символы публикации, такие как XML и HTML Character Entity References, которые происходят из более широких наборов, определенных в рамках стандартизации ISO SGML. XML использует подмножество DTD SGML, однако более современные языки схем с поддержкой пространств имен XML (такие как W3C XML Schema и ISO RELAX NG) в значительной степени заменили DTD как более эффективный способ проверки структуры XML.

Декларации о маркировке

DTD описывают структуру класса документов посредством объявлений списков элементов и атрибутов. Объявления элементов определяют допустимый набор элементов в документе и указывают, могут ли и каким образом объявленные элементы и последовательности символьных данных содержаться внутри каждого элемента. Объявления списков атрибутов определяют допустимый набор атрибутов для каждого объявленного элемента, включая тип каждого значения атрибута, если не указан явный набор допустимых значений. Объявления разметки DTD определяют, какие типы элементов, списки атрибутов, сущности и нотации разрешены в структуре соответствующего класса XML-документов.

Безопасность

XML DTD может быть использован для организации атаки типа "отказ в обслуживании" (DoS) путем определения вложенных сущностей, которые экспоненциально разрастаются, или путем перенаправления XML-парсеру на внешний ресурс, который не отвечает. По этой причине, .NET Framework предоставляет свойство, позволяющее запретить или пропустить разбор DTD, а последние версии приложений Microsoft Office (Microsoft Office 2010 и более поздние) отказываются открывать XML-файлы, содержащие объявления DTD.