Когда XML изначально создавался, он был одним из приложений Стандартного Обобщенного Языка Разметки (Standard Generalized Markup Language - SGML). SGML дает возможность различным системам сообщаться друг с другом, позволяя авторам создавать DTD. Пока данные следуют DTD, каждая система может прочитать и интерпретировать их.
DTD определяют элементы, которые допустимы в документе, что они могут содержать и какие атрибуты они должны иметь.
Сравним этот простой документ с его DTD:
<?xml version="1.0"?> <!DOCTYPE memories SYSTEM "memory.dtd"> <memories> <memory tapeid="23412"> <subdate>5/23/2001</subdate> <donor>John Baker</donor> <subject>Fishing off Pier 60</subject> </memory> <memory tapeid="23692"> <subdate>8/01/2001</subdate> <donor>Elizabeth Davison</donor> <subject>Beach volleyball</subject> </memory> </memories>
DTD
<!ELEMENT memories (memory*) > <!ELEMENT memory (subdate, donor, subject) > <!ATTLIST memory tapeid CDATA #REQUIRED > <!ELEMENT subdate (#PCDATA) > <!ELEMENT donor (#PCDATA) > <!ELEMENT subject (#PCDATA) >
DTD использует синтаксис, отличный от XML, но оно описывает различные элементы и атрибуты и, как они могут применяться. Более подробная информация об использовании и создании DTD будет дана в этом учебнике позже, пока же отметим, что DTD связывается с XML-документами через оператор DOCTYPE.