Технология XSLT - страница 22

стр.

>">

>имя PUBLIC "публичный ид-р">

Если информация о вспомогательном приложении несущественна, можно воспользоваться определением следующего вида:

>имя SYSTEM "">

Существует два основных способа применения нотаций. Первый — объявление неразбираемых сущностей и использование их имен в атрибутах типа >ENTITY или >ENTITIES, второй — указание имени нотации в атрибуте типа >NOTATION для того, чтобы задать формат данных, который содержит данный элемент.

Первый способ можно продемонстрировать простым документом, который задает меню (листинг 1.5).

Листинг 1.5. Использование неразбираемых сущностей в атрибутах элементов

>

>  image ENTITY #REQUIRED

>  title CDATA #REQUIRED

>  href CDATA #REQUIRED>

>]>

>

>

Проанализируем декларацию типа этого документа.

□ Декларация типа > говорит о том, что корневым элементом этого документа является элемент >menu.

□ В соответствии с определением > этот элемент состоит из нескольких субэлементов >menuitem.

□ В соответствии с определением > элемент >menuitem должен быть пустым.

□ Запись > определяет в элементе >menuitem следующие атрибуты:

 • обязательный атрибут >image, в котором должно указываться имя сущности;

 • обязательный атрибут >title, содержащий символьные данные;

 • обязательный атрибут >href, содержащий символьные данные.

□ Запись > определяет нотацию с именем >gif и закрепляет за ней приложение >gif-viewer.exe.

□ Запись > определяет нотацию с именем >jpg и закрепляет за ней приложение >jpg-viewer.exe.

□ Запись > определяет внешнюю неразбираемую сущность с именем >news, которая имеет формат (нотацию) >gif.

□ Запись > определяет внешнюю неразбираемую сущность с именем >products, которая имеет нотацию >jpg.

□ Запись > определяет внешнюю неразбираемую сущность с именем >support, которая имеет нотацию >gif.

Посмотрим теперь, какую информацию нам дают такие громоздкие определения. Обратимся к записи одного из элементов >menuitem:

>

С атрибутами >title и >href все ясно: они содержат простые символьные данные. Атрибут >image несколько сложнее, он предоставляет гораздо больше информации. Типом этого атрибута является >ENTITY, значит текст, который он содержит, является не просто символьными данными: он задает имя сущности, связанной с данным атрибутом. Иначе говоря, с атрибутом >image связывается сущность.

Анализируя определение сущности >products, обрабатывающая программа может понять, что это — неразбираемая внешняя сущность формата >jpg, которая хранится в файле >prod.jpg и для обработки которой можно использовать приложение >jpg-viewer.exe.

Вторым способом использования нотаций является присвоение определенного формата содержимому элемента. Один (но не более чем один) из атрибутов элемента может иметь тип >NOTATION. Значением этого атрибута должно быть имя нотации, которое и будет задавать формат содержимого элемента.

Пример
Листинг 1.6. Использование нотаций для определения формата содержимого элемента

>

>  type NOTATION (rtf|htm|txt) #REQUIRED>

> <[NOTATION rtf SYSTEM "winword.exe">

>]>

>

>  

>    ...

>  

>  

>    ...

>  

>  ]]>