
- •Лекция 402
- •Состав DTD.
- •Виды DTD
- •Внутреннее DTD
- •Внешнее системное DTD
- •Внешнее общедоступное DTD
- •Смешанное DTD
- •DTD. Определение элемента
- •DTD. Определение элемента.
- •DTD. Определение элемента.
- •DTD. Определение элемента. Список значений (перечисление и выбор)
- •DTD. Определение элемента. Смешанный тип содержимого
- •DTD. Определение элемента. Пример (DTD)
- •DTD. Определение элемента. Пример (Документ XML)
- •DTD. Определение атрибутов элемента. Запись определения
- •DTD. Определение атрибутов элемента. Задание значения атрибута
- •DTD. Определение атрибутов элемента. Задание типа атрибута
- •DTD. Определение атрибутов элемента. Строковые атрибуты
- •DTD. Определение атрибутов элемента. Маркированные атрибуты
- •DTD. Определение атрибутов элемента. Маркированные атрибуты. Пример 1 (DTD)
- •DTD. Определение атрибутов элемента. Маркированные атрибуты. Пример 1 (Документ XML)
- •DTD. Определение атрибутов элемента. Маркированные атрибуты. Пример 2 (DTD)
- •DTD. Определение атрибутов элемента. Маркированные атрибуты. Пример 2 (Документ XML)
- •DTD. Определение атрибутов элемента. Атрибуты по перечислению. Задание
- •DTD. Определение атрибутов элемента. Атрибуты по перечислению. Пример DTD
- •DTD. Атрибут xml:space
- •DTD. Атрибут xml:lang
- •DTD. Атрибуты xml:space и xml:lang. Пример (DTD -1)
- •DTD. Атрибуты xml:space и xml:lang. Пример (DTD -2)
- •DTD. Атрибуты xml:space и xml:lang. Пример (Документ XML)
- •DTD. Сущности (определение и типы)
- •DTD. Анализируемые внутренние сущности
- •DTD. Анализируемые внутренние сущности. Пример (определение сущности)
- •DTD. Анализируемые внутренние сущности. Пример (вывод документа на экране)
- •DTD. Анализируемые внешние сущности
- •DTD. Неанализируемые сущности
- •DTD. Параметрические сущности
- •DTD. Параметрические сущности (пример)
- •DTD. Нотации. Определение
- •DTD. Нотации. Пример 1 (DTD)
- •DTD. Нотации. Пример 1 (Документ XML)
- •DTD. Нотации. Пример 2 (DTD)
- •DTD. Нотации. Пример 2 (Документ XML)
- •DTD. Условные разделы. Определение
- •DTD. Условные разделы. Пример

Лекция 402
Язык XML (формирование DTD)
1

Состав DTD.
Определение типа документа DTD (Document Type Definition) – набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа. Анализатор, в свою очередь, отправляет результаты в приложение, обеспечивающее обработку данных (например, просмотр документа).
Состав DTD: одно или нескольких правил- ограничений структуры документа. Правила DTD задаются для:
определения элемента (правило ELEMENT); – определение элемента;
определения списка атрибутов элемента
(правило ATTLIST); |
2 |
определения сущности (правило ENTITY); |
|

Виды DTD
Объявление типа документа помещается в начало XML-документа (сразу после объявления документа XML) и имеет следующий синтаксис:
<!DOCTYPE
…
>
Объявление типа документа может быть:внутренним;внешним;смешанным.
Документы XML, имеющие DTD и соответствующие требованиям этого DTD, а также являющиеся правильными документами XML, называются
действительными (valid) документами XML.
3

Внутреннее DTD
Во внутреннем DTD правила для элементов задаются
следующим образом (параметр имя определяет имя корневого элемента документа XML) :
<!DOCTYPE имя [
правила структуры документа
]>
<!DOCTYPE book-description [
<!ELEMENT book-description (book)+>
<!ELEMENT book (title, author, publisher)> <!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ATTLIST publisher
CDATA #REQUIRED (классика|детектив|фэнтези|кулинария|политика) "классика"
>
]>
4

Внешнее системное DTD
При использовании внешнего DTD предложение DOCTYPE
имеет один из следующих форматов (параметр имя определяет имя корневого элемента документа XML) :
<!DOCTYPE имя SYSTEM "URI">
<!DOCTYPE имя PUBLIC "владелец" "URI">
Внешнее DTD – это текстовый файл с расширением .dtd,
который содержит правила структуры документа XML.
Значение SYSTEM в DTD означает, что пользователь использует собственное (системное) внешнее DTD, которое загружается с помощью URI (Universal Resource Identifier – универсальный идентификатор ресурса).
Примеры:
<!DOCTYPE JDATA <!DOCTYPE book
5

Внешнее общедоступное DTD
Параметр PUBLIC означает, что в документе используется общедоступное DTD (например, DTD для языка HTML). В этом случае, помимо URI, указывается и объявление владельца DTD в формате, принятом в языке SGML. Если DTD является стандартом ISO (International Standard Organization – Международная организация стандартизации), то объявление начинается символами
"ISO". Если DTD не является стандартом ISO, но официально принято группой стандартизации, то объявление начинается с символа "+", если же DTD не принято группой
стандартизации – то с символа "-". Далее обычно
указывается владелец данного DTD, наименование DTD и
язык DTD, разделенные символами "//".
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
6

Смешанное DTD
Можно также дополнять внешние определения внутренними (смешанное DTD):
<!DOCTYPE имя SYSTEM "URI" [
правила структуры документа
]>
или
<!DOCTYPE имя PUBLIC "владелец" "URI" [
правила структуры документа
]>
7

DTD. Определение элемента
Определение элемента задает имя и тип содержимого элемента в следующем виде:
<!ELEMENT имя тип-содержимого>
Параметр имя задает имя элемента.
В качестве типа-содержимого элемента может быть указано:
EMPTY, в случае, когда элемент обязан быть пустым (без содержимого);
ANY, в случае, когда элемент может содержать что угодно;
список, определяющий элементы-потомки и порядок их следования;
смешанное содержимое.
8

DTD. Определение элемента.
Типы EMPTY и ANY (1)
Пример:
Использование значений ANY и EMPTY в содержимом элемента:
<?xml version="1.0" encoding="Windows-1251"?> <!DOCTYPE message [
<!ELEMENT message ANY>
<!ELEMENT text ANY>
<!ELEMENT empty-line EMPTY>
]> <message>
<empty-line/>
<text>
Поздравляю с днем рождения!
</text>
</message>
9

DTD. Определение элемента.
СписокСписокзначенийзначений– одно(количествоили несколькоповторений)имен элементов. Список должен быть заключен в круглые скобки.
Количество, с которым имя элемента может появляться в этой последовательности, формально записывается с использованием символов- модификаторов "*", "?" и "+", которые имеют следующие значения:
a? означает, что элемент a может быть пропущен в последовательности;
a означает, что элемент a должен присутствовать в последовательности на этом месте ровно один раз;
a* задает последовательность из нуля или более элементов a;
a+ задает последовательность из одного или |
10 |
|
более элементов a. |
||
|