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 обычные комментарии.