Введение в DTD

Определение типа документа (DTD) может определить законные модули XML-документа. Оно использует серию законных элементов для определения структуры документа.

DTD может быть объявлен в строках XML-документа или как внешняя ссылка.

Внутренняя декларация DOCTYPE

Если DTD включен в ваш XML-файл, он должен быть заключен в определение DOCTYPE по следующей грамматике:

!DOCTYPE корневой элемент [декларации элементов]

Пример XML-документа с DTD (откройте в IE5 и выше, выберите "Просмотр исходного кода"):

<?xml version="1.0"?>
!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  !ELEMENT to      (#PCDATA)
  !ELEMENT from    (#PCDATA)
  <!ELEMENT heading (#PCDATA)>
  !ELEMENT body    (#PCDATA)
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Памятка</heading>
  <body>Не забудьте встречу!</body>
</note>

Откройте этот XML-файл в вашем браузере и выберите команду "Просмотр исходного кода".

Следующее объяснение DTD:

!DOCTYPE note [ (три абзац) Определение этого документа как note Типовая документация.

!ELEMENT note (четыре абзац) Определение note Элементы имеют четыре элемента: "to, from, heading, body"

!ELEMENT to (пять абзац) Определение to Элементы типа "#PCDATA"

!ELEMENT from (шесть абзац) Определение from Элементы типа "#PCDATA"

!ELEMENT heading (семь абзац) Определение heading Элементы типа "#PCDATA"

!ELEMENT body (восьмой абзац) Определение body Элементы типа "#PCDATA"

Внешняя документальная декларация

Если DTD расположен вне XML-файла, он должен быть заключен в определение DOCTYPE по следующей грамматике:

<!DOCTYPE корневой элемент SYSTEM "имя файла">

Этот документ XML такой же, как и предыдущий, но с внешним DTD: (Откройте в IE5и выберите команду "Просмотр исходного кода".).

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Памятка</heading>
<body>Не забудьте встречу!</body>
</note>

Это файл "note.dtd" с включенным DTD:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

Почему использовать DTD?

Через DTD, каждый ваш файл XML может содержать описание его собственного формата.

Через DTD, независимые группы могут согласованно использовать стандартный DTD для обмена данными.

А ваше приложение также может использовать стандартный DTD для проверки данных, полученных извне.

Вы также можете использовать DTD для проверки своих данных.