
- •Лекция 4-02
- •4.1.5. Объявление типа документа
- •4.1.6. Определение элемента
- •4.1.7. Определение атрибутов элемента
- •4.1.7.1. Строковые атрибуты
- •4.1.7.2. Маркированные атрибуты
- •4.1.7.3. Атрибуты перечислимого типа
- •4.1.7.4. Обработка пробелов и определение языка содержимого элемента
- •Xml:space (default|preserve) 'default'
- •4.1.8. Определение сущности
- •4.1.8.1. Анализируемые сущности
- •30 Тыс. Студентов.
- •4.1.8.2. Неанализируемые сущности
- •4.1.8.3. Параметрические сущности
- •4.1.9. Определение нотации
- •Image entity #required
- •4.1.10. Условные разделы
4.1.8.3. Параметрические сущности
Еще одним видом сущности являются параметрические сущности или сущности-параметры. Сущности этого типа используются только во внешних DTDдля более гибкого описания логической структуры документа. Ссылки на параметрические сущности вDTDимеют следующий вид:
%имя;
Объявление параметрической сущности имеет следующий формат:
<!ENTITY %имя"значение-1 значение-2…">
Параметр имяопределяет имя параметрической сущности, а параметрызначение-iопределяют значения сущностей. В качестве значения сущностей могут использоваться данные типаCDATA, а также параметрические сущности.
Пример использования параметрических сущностей:
Ниже приведены фрагменты DTDспецификацииHTML4.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;
>
4.1.9. Определение нотации
Нотации определяют имена форматов неанализируемых экземпляров, имена форматов элементов, которые породили атрибут нотации, а также имена приложений, используемых для обработки данных формата с заданным именем.
Определение нотации может быть представлено в одном из следующих форматов:
<!NOTATION имя SYSTEM "URI">
<!NOTATION имя PUBLIC "владелец" "URI ">
<!NOTATIONимяPUBLIC "владелец">
Существует два основных способа применения нотаций:
объявление неанализируемых сущностей и использование их имен в атрибутах типа ENTITYилиENTITIES;
указание имени нотации в атрибуте типа NOTATION.
При использовании первого способа определение неанализируемой сущности задает имя определения нотации, в котором, в свою очередь, задается приложение обрабатывающее данную неанализируемую сущность.
Пример использование неанализируемых сущностей в атрибутах элементов:
<!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>
]>
<menu>
<menuitem image="news" title="News" href="news.htm"/>
<menuitem image="products" title="Products"
href="products.htm"/>
<menuitem image="support" title="Support"
href="support.htm"/>
</menu>
В этом примере определения нотации с именами gifиjpgопределяют приложения для обработки изображений форматов.gifи.jpeg, а сущности с именами определяют соответственно ссылки на нотации с именамиgifиjpg. В элементахmenuitemзначения атрибутовimageявляются соответственно сущностямиnews,productsиsupport.
Таким образом, анализируя определение сущности, например, products, обрабатывающая программа определит, что это – неанализируемая внешняя сущность форматаjpg, которая хранится в файлеprod.jpgи для обработки которой нужно использовать приложениеjpg-viewer.exe.
Вторым способом использования нотаций является присвоение определенного формата содержимому элемента. Один (но не более чем один) из атрибутов элемента может иметь тип NOTATION. Значением этого атрибута должно быть имя нотации, которое и будет задавать формат содержимого элемента.
Пример использования нотаций для определения формата содержимого элемента:
<!DOCTYPE root [
<!ELEMENT root (#PCDATA)>
<!ATTLIST root
type NOTATION (rtf|htm|txt) #REQUIRED>
<!NOTATION rtf SYSTEM "winword.exe">
<!NOTATION htm SYSTEM "iexplore.exe">
<!NOTATION txt SYSTEM "notepad.exe">
]>
<root type="htm">
<![CDATA[
<html>
<head>
<title>Welcome Page</title>
</head>
<body>
<h1>Добро пожаловать на наш сайт!</h1>
</body>
</html>
]]>
</root>
В этом документе определяется три нотации и, соответственно, три формата данных: rtf,htmиtxt. Значениеhtmатрибутаtypeэлементаrootопределяет формат данных, и, соответственно программу, которая будет вызываться для обработки этого документа.