Если в будущем фирма переквалифицируется, и будет продавать, скажем, жирафов, можно будет, не изменяя всего документа, заменить только значение сущности:
<?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
"
двойные кавычки
Встроенные сущности могут быть использованы для замены некоторых символов там, где они могут быть восприняты, как разметка. В частности, символы
<
(знак "меньше") и
&
(амперсант) вообще не могут появляться в тексте документа иначе, кроме как в виде сущностей.
Пример
<?xml version="1.0" encoding="UTF-8"?>
<advert>
<product title="слон">
Продается серый слон весом > 5 тонн!
Компания "слон & Слон".
</product>
</advert>
На
самом же деле в элементе
product
заключен текст
Продается серый слон весом > 5 тонн!
Компания "Слон & Слон".
Довольно часто бывает необходимо использовать в документе символы набора Unicode, обращаясь к ним по десятичным или шестнадцатеричным кодам. В таких случаях можно использовать символьные сущности.
Символьная сущность (или, как ее еще называют, символьная ссылка) записывается в виде
&#код;
или
&#xкод;
, где
код
— десятеричный и шестнадцатеричный Unicode-код символа в первом и втором случае соответственно.
Пример
Фраза "
Миру-мир!
" может быть записана с использованием символьных сущностей следующим образом:
" записано с использованием шестнадцатеричных unicode-кодов кириллицы, второе слово, "
мир
", записано с использованием десятичных кодов.
Внешние сущности содержатся во внешних файлах. Если ссылка на внешнюю сущность появляется в документе, то на ее место копируется содержимое внешнего файла.
Определение внешней сущности имеет следующий синтаксис:
<!ENTITY имя SYSTEM "URI">
В этом определении
имя
точно так же, как и во внутренней сущности определяет имя сущности, в то время как
URI
определяет абсолютное или относительное местоположение файла.
Пример
Предположим, что мы создали файл
animal.ent
со следующим содержанием:
огромное серое животное
Для того чтобы использовать содержимое этого файла в документе, мы должны объявить внешнюю сущность следующим образом:
<!ENTITY animal SYSTEM "ent/animal.ent">
где
ent/animal
есть относительный путь до файла
animal.ent
. Если бы мы расположили файл на сервере, скажем,
www.animalhost.com
, сущность могла бы быть объявлена как
<!ENTITY animal SYSTEM "http://www.animalhost.com/animal.ent">
В документе ссылаться на объявленную внешнюю сущность мы будем точно так же, как ссылались бы на внутреннюю сущность: