Синтаксис использования сущности-параметра (вернее, ссылки на нее) соответствует продукции
PEReference
, которая практически совпадает с продукцией
EntityRef
:
[69] PEReference ::= '%' Name ';'
Определение сущности-параметра также очень схоже с определением обычной сущности:
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
[74] PEDef ::= EntityValue | ExternalID
Продукция
EntityDecl
,
соответствующая определению сущности, как обычной, так и сущности-параметра, имеет следующий вид:
[70] EntityDecl ::= GEDecl | PEDecl
Напомним, что
GEDecl
соответствует объявлению обычной, a
PEDecl
— параметризованной сущности.
Определение нотации
С точки зрения физической модели, XML-документы являются не более чем текстом. Содержимое документов и их разметка имеет исключительно текстовый вид. Вместе с тем, во многих случаях документы должны включать данные других форматов, например, графические изображения или двоичные файлы. Несовместимость физической реализации XML и внешних данных такого типа не позволяет включать их в документ посредством обычных сущностей — для этих целей используются неразбираемые сущности и нотации.
Нотация — это ни что иное, как определение формата неразбираемой сущности. Нотация дает формату имя и предоставляет некоторую информацию о приложении, которое следует использовать для обработки этого формата.
Пример
Предположим, что мы используем графические изображения в формате
GIF
, для просмотра которых используется приложение
gif-viewer.exe
. Определение нотации будет иметь следующий вид:
<!NOTATION GIF SYSTEM "gif-viewer.ехе">
Эта запись определяет нотацию с именем
GIF
и указывает имя приложения, которое может быть использовано для обработки внешних сущностей этого формата.
Информация о вспомогательном приложении-обработчике (англ. helper application) указывается при определении нотации системным или публичным идентификатором. В отличие от определения внешней сущности, публичный идентификатор в нотации может указываться без системного идентификатора. Фактически, нотация имеет три варианта определения:
<!NOTATION имя SYSTEM "системный ид-р">
<!NOTATION имя PUBLIC "публичный ид-р" "системный ид-р">
<!NOTATION имя PUBLIC "публичный ид-р">
Если информация о вспомогательном приложении несущественна, можно воспользоваться определением следующего вида:
<!NOTATION имя SYSTEM "">
Существует два основных способа применения
нотаций. Первый — объявление неразбираемых сущностей и использование их имен в атрибутах типа
ENTITY
или
ENTITIES
, второй — указание имени нотации в атрибуте типа
NOTATION
для того, чтобы задать формат данных, который содержит данный элемент.
Первый способ можно продемонстрировать простым документом, который задает меню (листинг 1.5).
Листинг 1.5. Использование неразбираемых сущностей в атрибутах элементов