Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы по МИРу.doc
Скачиваний:
3
Добавлен:
28.04.2019
Размер:
572.42 Кб
Скачать
  1. Определение типа документа (dtd).

DTD представляет собой совокупность синтаксических правил, на основе которых проверяется структура документа XML. В DTD явно определяется структура документа XML, указываются элементы и их атрибуты, а также приводится другая информация, распространяющаяся на все документы XML, созданные на основе данного DTD. Наличие DTD не является обязательным. Если DTD существует, система XML руководствуется им при интерпретации документа XML. Если DTD отсутствует, предполагается, что система XML должна интерпретировать документ по собственным правилам. Впрочем, для документов XML все же рекомендуется создавать DTD, поскольку это упрощает их интерпретацию и проверку структуры. DTD можно включить непосредственно в документ XML, сослаться на него по URL или использовать комбинацию этих двух способов. При непосредственном включении DTD в документ XML определение DTD располагается сразу же после пролога: <!DOCTYPE имя_корневого_элемента [ ; ...прочие объявления... ] > Атрибут имя_корневого_элемента соответствует имени корневого элемента в тегах, содержащих весь документ XML. В секции «прочих объявлений» находятся определения элементов, атрибутов и т. д. Возможно, вы предпочитаете разместить DTD в отдельном файле, чтобы обеспечить модульную структуру программы. Давайте посмотрим, как выглядит ссылка на внешний DTD в документе XML. Задача решается одной простой командой: <!DOCTYPE имя_корневого_элемента SYSTEM "some_dtd.dtd"> Как и в случае с внутренним объявлением DTD, имя_корневого_элемента должно соответствовать имени корневого элемента в тегах, содержащих весь документ XML. Атрибут SYSTEM указывает на то, что some_dtd.dtd находится на локальном сервере. Впрочем, на файл some_dtd.dtd также можно сослаться по его абсолютному URL. Наконец, в кавычках указывается URL внешнего DTD, расположенного на локальном или на удаленном сервере. Определение типа документа (Document Type Definition, DTD) является тем фундаментом, на котором создаются XML-документы. Вы можете создать DTD или использовать заранее определенные DTD, которые специально созданы для применения в таких отраслях, как медицина и автомобильная промышленность, и которые описывают стандартизованные документы. Независимо от того, создаете ли вы собственное DTD, или же используете заранее определенное, вам необходимо знать, что такое DTD, как оно составляется и как работает.

DTD определяет части документа и указывает, каким образом они могут использоваться, что может быть в них размещено, и требуются ли им фрагменты документа. DTD представляет собой набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа. DTD может включать в себя набор объявлений элементов и атрибутов, а также сущности (entities), условные обозначения (notations) и комментарии. Различные объявления компонентов определяют, как документ будет структурирован, и эта информация (в виде инструкций) передается анализатору (parser). Анализатор, в свою очередь, отправляет результаты в приложение, обеспечивающее просмотр данных.

На примере DTD, созданного для относительно простого документа, рассмотрим, что оно собой представляет и как работает. Это пример внутреннего DTD, то есть такого, которое содержится непосредственно в самом XML-документе:

<?XML version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE DOC [ <!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO)> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT DATE {#PCDATA)> <!ELEMENT ADDRESS (#PCDATA)> <!ELEMENT MEMO (#PCDATA)> <!ENTITY PUBLISHER "The Coriolis Group"> ]> &ltDOC> &ltSUBJECT&gtToday's Memo</SUBJECT> &ltDATE&gtAugust 1, 2000</DATE> &ltADDRESS&gt200 West 34th Suite 953, Anchorage, AK</ADDRESS> &ltMEMO&gtThis memo is to alert you to the new XML Black Book has now been printed. Published by &PUBLISHER;, this book outlines everything you need to know about XML.</MEMO> </DOC>

Обратите внимание, что данное DTD целиком размещено в самом документе. Эти определения, которые в действительности являются ничем иным как инструкциями по обработке данных, точно указывают анализатору XML, как именно следует управлять различными данными, которые будут размещены в документе, а также какой информацией или текстом должны быть замещены расположенные в документе сущности. DTD, который включен в состав самого XML-документа, называется внутренним подмножеством DTD (internal DTD subset), поскольку все инструкции по обработке информации, а также сами данные документа расположены внутри единого документа.

После того как предыдущий пример будет обработан анализатором и отображен браузером на экране, результат может быть следующим (предполагается, что соответствующая таблица стилей уже подключена):

Today's Memo                         Памятка на сегодня August 1, 2000                       1 августа 2000 г. 200 West 34th Suite 953, Anchorage.  200 West 34th Suite 953, Anchorage. This memo is to alert you to the     Это — извещение о том, что new XML Black Book has now been      издательство Coriolis, в серии printed. Published by The Coriolis   Black Book, выпустило новую книгу Group, this book outlines            пo XML, которая содержит все everything you need to know          необходимые сведения об этом языке about XML.                           разметки.

Анализатор XML сверяет разметку документа по объявлениям различных элементов. Он также осуществляет замещение сущности, для которой в DTD было определено конкретное значение. В данном примере анализатор заменяет ссылку на сущность &PUBLISHER;- объявленным значением этой сущности, т. е. — The Coriolis Group. Таблица стилей, которая будет описана позднее в отдельном HTML-файле, управляет отображением данных.

Рассмотрим наш пример более детально, чтобы понять назначение каждой строки кода в определении документа. Вот краткая сводка наиболее важных компонентов данного документа:

  • <?XML version="1.0" encoding="UTF-8" standalone="no"?> — это объявление указывает на то, что данный документ является XML-документом. Это первая строка инструкций, которая должна быть послана анализатору. Для получения более подробной информации об объявлении XML, обратитесь к разделу "Объявление XML", который приводится далее в этой главе.

  • <!DОСТУРЕ DOC [ — данное объявление указывает, где размещено DTD — в данном случае — в самом документе, но могло находиться и в другом месте, например <!DOCTYPE novel PUBLIC "-//Megginson//DTD Novel//EN" "novel. dtd&gt.

  • <!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO) > — Определяет список элементов для корневого элемента DOC. Это объявление элемента сообщает анализатору о том, что корневой элемент DOC содержит элементы-потомки SUBJECT, DATE, ADDRESS и MEMO и что эти элементы должны появляться в документе в этом же порядке. Если этот порядок будет нарушен, то анализатор выдаст сообщение об ошибке.

  • <!ELEMENT SUBJECT (# PCDATA) > —определяет элемент SUBJECT и указывает, что этот элемент будет содержать символьные данные, которые подлежат обработке анализатором.

  • <! ELEMENT DATE (#PCDATA)>— определяет элемент DATE и указывает, что этот элемент будет содержать символьные данные, которые подлежат обработке анализатором.

  • <! ELEMENT ADDRESS (#PCDATA)> — Определяет элемент ADDRESS и указывает, что этот элемент будет содержать символьные данные, которые подлежат обработке анализатором.

  • <! ELEMENT MEMO (#PCDATA)>— определяет элемент MEMO и указывает, что этот элемент будет содержать символьные данные, которые подлежат обработке анализатором.

  • <! ENTITY PUBLISHER "The Coriolis Group"> — определяет простую сущность PUBLISHER и указывает, что значением этой сущности является "The Coriolis Group".

  • ] > — указывает конец DTD.