
- •Лекция 4-02
- •4.1.5. Объявление типа документа
- •4.1.6. Определение элемента
- •4.1.7. Определение атрибутов элемента
- •4.1.7.1. Строковые атрибуты
- •4.1.7.2. Маркированные атрибуты
- •4.1.7.3. Атрибуты перечислимого типа
- •4.1.7.4. Обработка пробелов и определение языка содержимого элемента
- •Xml:space (default|preserve) 'default'
- •4.1.8. Определение сущности
- •4.1.8.1. Анализируемые сущности
- •30 Тыс. Студентов.
- •4.1.8.2. Неанализируемые сущности
- •4.1.8.3. Параметрические сущности
- •4.1.9. Определение нотации
- •Image entity #required
- •4.1.10. Условные разделы
4.1.8. Определение сущности
Выше были рассмотрены ссылки на сущности, используемые в документе XML: ссылки на коды символов и предопределенные (встроенные) сущности. В документеXMLможно определять свои сущности (внутренние сущности) или использовать сущности, определенные в другом файле (внешние сущности). Ссылка на сущность имеет следующий формат
&имя;
Используемые в документе XMLсущности могут быть двух типов:
анализируемые внутренние и внешние сущности (parsedentities) –воспринимаются и обрабатываются как данные XML;
неанализируемые внешние сущности (unparsedentities)–данные не обрабатываемыеXML(например, изображения или бинарные файлы, которые используются в данном документе).
4.1.8.1. Анализируемые сущности
Внутреннее определение сущности, задаваемое во внутреннем DTD, может быть только анализируемой сущностью и имеет следующий формат
<!ENTITYимя"значение">
где параметр имя задает имя сущности, которое будет использоваться в ссылке на сущность в документе XML, а литерал значение – это значение сущности, на которое будет заменяться ссылка на сущность в документеXML.
Пример определения и использования внутренней сущности:
<?xml version="1.0" encoding="Windows-1251"?>
<!DOCTYPE guide [
<!ENTITY kpi 'НТУУ "КПИ"'>
<!ELEMENT guide (#PCDATA)>
]>
<guide>
В 1998 году Национальному техническому университету
Украины "Киевский политехнический институт"
(&kpi;) исполнилось 100 лет.
В настоящее время в &kpi; обучается свыше
30 Тыс. Студентов.
</guide>
При обработке документа все ссылки на сущность будут заменены значением сущности:
В 1998 году Национальному техническому университету Украины "Киевский политехнический институт" (НТУУ "КПИ") исполнилось 100 лет. В настоящее время в НТУУ "КПИ" обучается свыше 30 тыс. студентов.
Определение внешней анализируемой сущности имеет один из следующих форматов:
<!ENTITY имя SYSTEM "URI">
<!ENTITY имя PUBLIC "владелец" "URI">
В этом определении параметр имя задает имя сущности, а параметры "URI" и"владелец", также как и для определенияDOCTYPEопределяют местонахождение файла со значением сущности и ее владельца. Файл, содержащий значение сущности (без окаймляющих апострофов) обычно имеет расширение.ent.
В предыдущем примере, можно заменить внутреннее определение сущности внешним определением:
<!ENTITY kpi SYSTEM "kpi.ent">
Файл kpi.entсодержит значение сущности. Если в значении сущности используются буквы не латинского алфавита, их необходимо представлять, как сущности символовUnicode, поэтому содержимое файлаkpi.entдля сущности'НТУУ "КПИ"' будет иметь следующий вид:
НТУУ "КПИ"
4.1.8.2. Неанализируемые сущности
Для неанализируемой сущности (которая может быть только внешней сущностью) определение имеет один из следующих форматов:
<!ENTITY имя SYSTEM "URI" NDATA имя-нотации>
<!ENTITY имя PUBLIC "владелец" "URI" NDATA имя-нотации>
Здесь параметры имя,"URI" и"владелец" имеют тот же смысл, что и для анализируемой сущности, а параметримя-нотациизадает имя нотации. Нотации определяют формат неанализируемых экземпляров, формат элементов, которые породили атрибут нотации, или приложение, которому адресуется инструкция процесса. Нотации рассматриваются в следующем разделе.