Для описания структуры XML-документа используется язык описания DTD (Document Type Definition). В настоящее время DTD практически не используется и повсеместно замещается XSD. DTD может встречаться в достаточно старых приложениях, использующих XML и, как правило, требующих нововведений (upgrade).
DTD определяет, какие теги (элементы) могут использоваться в XML-документе, как эти элементы связаны между собой, какие атрибуты имеет тот или иной элемент.
Это позволяет наложить четкие ограничения на совокупность используемых элементов, их структуру, вложенность.
Наличие DTD для XML-документа не является обязательным, поскольку возможна обработка XML и без наличия DTD, однако в этом случае отсутствует средство контроля действительности (validness) XML-документа, то есть правильности построения его структуры.
Чтобы сформировать DTD, можно создать либо отдельный файл и описать в нем структуру документа, либо включить DTD-описание непосредственно в документ XML.
Файл DTD для документа students.xml будет иметь вид:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT students (student)+>
<!ELEMENT student (name, telephone, address)>
<!ATTLIST student
login ID #REQUIRED
faculty CDATA #REQUIRED
>
<!ELEMENT name (#PCDATA)>
<!ELEMENT telephone (#PCDATA)>
<!ELEMENT address (country, city, street)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT street (#PCDATA)>
Одна из причин отказа от DTD-описаний — его представление в виде доку-
мента, не являющегося по определению XML-документом.