[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 позволяет разбивать их на отдельные поименованные объекты, называемые
Существует два способа определения сущности — внутреннее и внешнее.
Первый способ используется для того, чтобы определить именованный текстовый объект в самом документе, а затем использовать его содержимое посредством ссылки.
Внутреннее определение сущности имеет вид:
<!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.
Имя сущности | Значение | Описание |
---|---|---|
lt | < | знак 'меньше' |
gt | > | знак 'больше' |
amp | & | амперсант |
apos | ' | апостроф или одинарные кавычки |
quot | ' | двойные кавычки |
Встроенные сущности могут быть использованы для замены некоторых символов там, где они могут