Структура XML документа. XML схемы
DTD схема
DTD (Document Type Definition) определяет допустимые строительные блоки XML документа, путем указания списка допустимых элементотв и атрибутов.
DTD может описываться как внутри XML документа, так и с помощью внешней ссылки.
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT mail (to,from,subject,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>user1@domain.ru</to> <from>user2@domain.ru</from> <heading>Встреча</heading> <body> Позвони мне завтра утром </body> </note>
В данном примере:
!DOCTYPE mail определяет корневой элемент документа mail.
!ELEMENT note определяет элемент note,который содержит четыре элемента:
" to, from, subject, body ".
!ELEMENT to определяет элемент to типа "#PCDATA".
!ELEMENT from определяет элемент from типа "#PCDATA".
!ELEMENT subject определяет элемент subject типа "#PCDATA".
!ELEMENT body определяет элемент body типа "#PCDATA".
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "mail.dtd"> <note> <to>user1@domain.ru</to> <from>user2@domain.ru</from> <heading>Встреча</heading> <body> Позвони мне завтра утром </body> </note>
Для чего необходимо использование DTD?
- С помощью DTD XML файлы могут содержать описание собственного формата.
- Независимые группы людей могут обмениваться данными.
- DTD-схема может быть использована для проверки действительности, как документов получаемых извне, так и собственных документов.
С точки зрения DTD все XML документы (HTML документы) строятся из следующих строительных блоков:
- Элементы (Elements). Элементы могут содержать текст, другие элементы или быть пустыми.
- Атрибуты Attributes). Атрибуты всегда размещаются внутри открывающего тэга элемента. Атрибуты всегда записываются в виде пары имя/значение.
- Entities.
- PCDATA. Означает структурированные символьные данные. Подлежит анализу с помощью парсера на наличие специальных символов (entities) и элементов разметки.
- CDATA. Означает текст, содержимое которого не рассматривается анализатором.
При описании структуры элементов, содержащих вложенные элементы можно использовать специальные операторы, задающие множественность их вхождения:
- ' + ': один и более раз, например, <!ELEMENT note (message+)>
- ' * ': ноль и более раз, например, <!ELEMENT note (message*)>
- ' ?': ноль и один раз, например, <!ELEMENT note (message?)>
Объявление вида <!ELEMENT note (message|body)> указывает на возможность вхождения в элемент note другого элемента: message ИЛИ body.
Атрибуты элементов описываются в форме:
<!ATTLIST element-name attribute-name attribute-type default-value>
например:
<!ATTLIST payment type CDATA "check">
<payment type="check" />.
Тип атрибута может принимать одно из значений: