Что такое DTD?
DTD (Document Type Definition) — это заранее определенный свод правил, задающий допустимые элементы, атрибуты и их взаимосвязи в XML-документе. DTD описывает грамматику документа: какие теги допустимы, в каком порядке они могут появляться, какие атрибуты обязательны, а какие — нет.
Например, DTD для HTML определяет, что тег DIV должен находиться внутри BODY и может встречаться многократно, TITLE — в HEAD и только один раз, а SCRIPT — и там, и там сколько угодно раз.
Способы подключения DTD
DTD может быть описан двумя способами:
- Внутренне — непосредственно в XML-документе в блоке
<!DOCTYPE ...> - Внешне — в отдельном
.dtdфайле, на который ссылается XML-документ
Пример
<!-- Внутренний DTD -->
<!DOCTYPE note [
<!ELEMENT note (to, from, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<!-- Внешний DTD -->
<!DOCTYPE note SYSTEM "note.dtd">
Ограничения DTD
- Собственный (не XML) синтаксис — нельзя обработать обычным XML-парсером
- Единственный тип данных — строка; невозможно задать числовые или датовые ограничения
- Нельзя подключить несколько DTD к одному документу
- Нет поддержки пространств имен
На собеседовании: достаточно знать, что DTD — предшественник XSD, и уметь назвать его главные ограничения (один тип данных, не XML-синтаксис). Интервьюер может спросить, почему DTD до сих пор встречается — потому что он проще и поддерживается legacy-системами.