Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Слайды / Lect4-02.pptx
Скачиваний:
9
Добавлен:
12.05.2015
Размер:
233.72 Кб
Скачать

DTD. Сущности (определение и типы)

Помимо ссылок на коды символов и предопределенные (встроенные) сущности,в документе XML можно определять свои сущности (внутренние сущности) или использовать сущности, определенные в другом файле (внешние сущности). Ссылка на сущность имеет следующий формат

&имя;

Используемые в документе XML сущности могут быть двух типов:

анализируемые внутренние и внешние сущности (parsed entities) – воспринимаются и обрабатываются как данные XML;

неанализируемые внешние сущности (unparsed entities) – данные не обрабатываемые XML (например,31

изображения или бинарные файлы, которые

DTD. Анализируемые внутренние сущности

Внутреннее определение сущности, задаваемое во внутреннем DTD, может

быть только анализируемой сущностью

и имеет следующий формат

<!ENTITY имя "значение">

где параметр имя задает имя сущности, которое будет использоваться в ссылке на сущность в документе XML, а литерал значение – это значение сущности, на которое будет заменяться ссылка на сущность в документе XML.

32

DTD. Анализируемые внутренние сущности. Пример (определение сущности)

<?xml version="1.0" encoding="Windows-1251"?> <!DOCTYPE guide [

<!ENTITY kpi 'НТУУ "КПИ"'> <!ELEMENT guide (#PCDATA)>

]> <guide>

В1998 году Национальному техническому университету Украины "Киевский политехнический институт"

(&kpi;) исполнилось 100 лет.

Внастоящее время в &kpi; обучается свыше

30 тыс. студентов. </guide>

33

DTD. Анализируемые внутренние сущности. Пример (вывод документа на экране)

В1998 году Национальному техническому

университету Украины "Киевский политехнический институт« (НТУУ "КПИ") исполнилось 100 лет.

Внастоящее время в НТУУ "КПИ" обучается свыше 30 тыс. студентов.

34

DTD. Анализируемые внешние сущности

Определение внешней анализируемой сущности имеет один из следующих форматов:

<!ENTITY имя SYSTEM "URI">

<!ENTITY имя PUBLIC "владелец" "URI">

В этом определении параметр имя задает имя сущности, а параметры

"URI" и "владелец", также как и для определения DOCTYPE

определяют местонахождение файла со значением сущности и ее владельца. Файл, содержащий значение сущности (без

окаймляющих апострофов) обычно имеет расширение .ent.

В предыдущем примере, можно заменить внутренне определение

<!ENTITY kpi SYSTEM "kpi.ent">

Если в значении сущности используются буквы не латинского алфавита, их необходимо представлять, как сущности символов

Unicode, поэтому содержимое файла kpi.ent для сущности 'НТУУ

НТУУ "КПИ"

35

DTD. Неанализируемые сущности

Для неанализируемой сущности (которая может быть только внешней сущностью) определение имеет один из следующих форматов:

<!ENTITY имя SYSTEM "URI" NDATA имя-нотации>

<!ENTITY имя PUBLIC "владелец" "URI" NDATA имя-нотации>

Здесь параметры имя, "URI" и "владелец"

 

имеют тот же смысл, что и для анализируемой

 

сущности, а параметр имя-нотации задает имя

 

нотации. Нотации определяют формат

 

неанализируемых экземпляров, формат

 

элементов, которые породили атрибут нотации,

 

или приложение, которому адресуется

36

инструкция процесса.

DTD. Параметрические сущности

Еще одним видом сущности являются параметрические сущности или сущности-параметры. Сущности этого типа используются только во внешних DTD для более гибкого описания логической структуры документа. Ссылки на параметрические сущности в DTD имеют

следующий вид:

%имя;

<!ENTITY % имя "значение-1 значение-2…">

Параметр имя определяет имя параметрической

сущности, а параметры значение-i определяют значения сущностей. В качестве значения сущностей 37

могут использоваться данные типа CDATA, а также

DTD. Параметрические сущности (пример)

Ниже приведены фрагменты DTD спецификации HTML 4.01 (файл strict.dtd), описывающие элемент br:

<!ENTITY % StyleSheet "CDATA">

<!ENTITY % Text "CDATA">

 

<!ENTITY % coreattrs

 

"id

ID

#IMPLIED

class

 

CDATA

#IMPLIED

style

 

%StyleSheet;

#IMPLIED

title

 

%Text;

#IMPLIED"

>

<!ELEMENT BR EMPTY> <!ATTLIST BR

%coreattrs;

>

38

DTD. Нотации. Определение

Нотации определяют имена форматов неанализируемых экземпляров, имена форматов элементов, которые породили атрибут нотации, а также имена приложений, используемых для обработки данных формата с заданным именем.

Определение нотации может быть представлено в одном из следующих форматов:

<!NOTATION имя SYSTEM "URI">

<!NOTATION имя PUBLIC "владелец" "URI ">

<!NOTATION имя PUBLIC "владелец">

Существует два основных способа применения нотаций:

объявление неанализируемых сущностей и использование их имен в атрибутах типа ENTITY или

ENTITIES;

указание имени нотации в атрибуте типа NOTATION.

39

DTD. Нотации. Пример 1 (DTD)

Определение неанализируемой сущности задает имя определения нотации, в котором задается приложение обрабатывающее данную

неанализируемую сущность.

<!DOCTYPE menu [

<!ELEMENT menu (menuitem*)>

<!ELEMENT menuitem EMPTY>

<!ATTLIST menuitem

image ENTITY #REQUIRED title CDATA #REQUIRED href CDATA #REQUIRED

>

<!NOTATION gif SYSTEM "gif-viewer.exe"> <!NOTATION jpg SYSTEM "jpg-viewer.exe"> <!ENTITY news SYSTEM "news.gif" NDATA gif> <!ENTITY products SYSTEM "prod.jpg" NDATA jpg>

<!ENTITY support SYSTEM "support.gif" NDATA gif>

]>

40

Соседние файлы в папке Слайды