Gymterview
junior

Что такое 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-системами.