[55] StringType    ::= 'CDATA'

[56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY'

                       | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'

Тип перечисления (EnumeratedType) может задаваться нотациями (NotationType) и собственно перечислениями (Enumeration):

[57] EnumeratedType ::= NotationType | Enumeration

[58] NotationType   ::= 'NOTATION' S

                        '(' S? Name (S? '|' S? Name)* S? ')'

Перечисление — это один или несколько именных токенов, которые разделены пробелами и знаками '|'. Перечисление задает несколько возможных вариантов значения атрибута, например (серый | белый).

[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'

Значение атрибута описывается продукцией DefaultDecl следующим образом:

[60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED'

                     | (('#FIXED' S)? AttValue)

Определение сущности

Для того чтобы обеспечить достаточно выразительную мощность документов, XML позволяет разбивать их на отдельные поименованные объекты, называемые сущностями. Сущности в XML не имеют ничего общего с сущностями в методологии 'сущность-связь'. Самый близкий аналог в традиционных языках программирования — это макроподстановка.

Существует два способа определения сущности — внутреннее и внешнее.

Первый способ используется для того, чтобы определить именованный текстовый объект в самом документе, а затем использовать его содержимое посредством ссылки.

Внутреннее определение сущности имеет вид:

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

Ссылка на сущность записывается как &имя; (амперсант, затем имя сущности, затем точка с запятой).

Пример

В документе

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE advert [

 <!ENTITY animal 'слон'>

]>

<advert>

 <product title='&animal;'>

  Продается настоящий &animal;!

 </product>

</advert>

сущность animal имеет значение 'слон'. Ссылка на сущность используется дважды — в атрибуте title и в тексте элемента product. Этот документ эквивалентен документу

<?xml version='1.0' encoding='UTF-8'?>

<advert>

 <product title='слон'>

  Продается настоящий слон!

 </product>

</advert>

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

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE advert [

 <!ENTITY animal 'жираф'>

]>

<advert>

 <product title='&animal;'>

  Продается настоящий &animal;!

 </product>

</advert>

Спецификация XML определяет несколько встроенных сущностей, которые перечислены в табл 1.1.

Таблица 1.1. Встроенные сущности XML

Имя сущности Значение Описание
lt < знак 'меньше'
gt > знак 'больше'
amp & амперсант
apos ' апостроф или одинарные кавычки
quot ' двойные кавычки

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

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату