Введение в XML

DTD - Определение Типа Документа


DTD позволяет вам задать основную структуру XML-документа. Следующая пара разделов рассматривает фрагменты DTD. Прежде всего, вот DTD, которое определяет основную структуру примера документа адреса из раздела ?:

<!-- address.dtd --> <!ELEMENT address (name, street, city, state, postal-code)> <!ELEMENT name (title? first-name, last-name)> <!ELEMENT title (#PCDATA)> <!ELEMENT first-name (#PCDATA)> <!ELEMENT last-name (#PCDATA)> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT postal-code (#PCDATA)>

Это DTD определяет все элементы, используемые в примере документа. Оно определяет три основные вещи:

  • Элемент <address> содержит <name>, <street>, <city>, <state> и <postal-code>. Все эти элементы должны присутствовать и именно в таком порядке.
  • Элемент <name> содержит необязательный элемент <title> (знак вопроса означает, что <title> является необязательным), за которым следует элемент <first-name> и элемент <last-name>.
  • Все другие элементы содержат текст. (#PCDATA обозначает разбираемые символьные данные; вы не можете включать другие элементы в эти элементы.)

Хотя DTD простое, оно проясняет, какие комбинации элементов являются допустимыми. Документ адреса, который имеет элемент <postal-code> перед элементом <state>, не является правильным, как и документ, который не имеет элемента <last-name>.

Также заметьте, что синтаксис DTD отличается от обычного синтаксиса XML. (Документы XML Schema, наоборот, сами являются XML-документами, что дает некоторые интересные результаты.) Несмотря на иной синтаксис DTD, вы можете помещать в само DTD обычные комментарии.



Содержание раздела