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


Сущности — это такие группы разметки, которые заключают некоторое содержание непосредственно в своих описаниях. На наш взгляд, сущности являются простейшими частями, создаваемыми в DTD, потому что, в самом общем виде, сущности обеспечивают механизм описания содержания, не требующий значительных усилий. В то же время сущности являются очень сложными, потому что с их помощью можно делать очень многое. Есть два типа сущностей: общие и параметрические. Общие сущности (general entities), подобные тем, которые используются в HTML, описывают специальные зарезервированные символы, например, амперсанд.

Мы уже определили необходимые элементы и их атрибуты и, за исключением некоторых дополнительных данных, таких как название газеты, или информации об авторских правах, мы почти закончили определение всех основных частей DTD. Нам необходимо помещать эту информацию почти что на каждой странице, но многократно вводить ее не хочется. В этом заключен предмет гордости разработчиков XML. Они обеспечили механизм, который облегчает создание такой информации и называется сущностью (entity).

Сущность представляет собой текст или данные, которые могут быть замещены в документе на основе объявления. Данная компонента может быть текстовой строкой или же файлом любого типа. Именно так, сущности могут служить ссылками (references) на целые файлы. Это значит, что сущность может быть ссылкой на место в газете на первой странице, со сведениями о газете, ее редакторах и т. п., на главу в книге, или на что-либо еще. Поскольку сущности позволяют замещать текст и файлы в документе, их можно использовать для замещения значений при обработке документа анализатором и при отображении.

В отличие от HTML, XML позволяет разработчику определять собственные сущности. Определим сущность для имени газеты и для основной информации об авторских правах. Затем мы включим эту информацию в DTD в виде сущностей. Фрагмент кода с такой информацией может выглядеть следующим образом:

<!ENTITY NEWSPAPER "Anchorage Daily News">
<!ENTITY PUBLISHER "Fuller Cowell">
<!ENTITY COPYRIGHT "Copyrighted 1999">
(<!ENTITY NEWSPAPER "Анкоридж Дейли Ныос">
<!ENTITY PUBLISHER "Фуллер Коуэл">
<!ENTITY COPYRIGHT "Охраняется авторским правом 1999">)

Определив эти сущности в DTD, мы сможем ссылаться на них в XML-документе следующим образом:

All contents are &COPYRIGHT;, by the &NEWSPAPER;, &PUBLISHER;, publisher.

Процессор XML, встретив в тексте сущность &COPYRIGHT;, заменит эту сущность ее значением — охраняется авторским правом 1999. После обработки анализатором, текст данного фрагмента будет отображен следующим образом:

All components are Copyrighted 1999 by the
Anchorage Daily News, Fuller Cowell, publisher.

(Содержание полностью защищено авторским правом, 1999,
Анкоридж Дейли Ньюс, Фуллер Коуэл, издатель)

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

Сущности могут также использоваться для вставки символов в документ, например, значка "Пулитцеровская премия" на редакторской странице газеты. И ошибки в новой рубрике можно будет легко исправить, когда ведущий рубрики получит переснятые материалы.

Примечание
Имейте в виду, что по умолчанию процессор XML не обрабатывает замещающий текст, поэтому те сущности, которые содержатся внутри данной сущности, не будут вставлены правильно. Вы должны специально указать процессору на необходимость обработки замещающего текста. Это делается с помощью символа (%), который должен устанавливаться перед назначением сущности.

Мы можем также определить графические файлы, которые необходимо поместить в документе. По счастью, для ссылки на размещаемые в документе мы можно использовать сущности. Для идентификации URL-файла служит ключевое слово SYSTEM, указывающее процессору XML, что внешняя сущность, на которую делается ссылка, является файлом. Выполнение следующего кода приведет к тому, что файл будет вставлен в XML-документ:

<!ENTITY adnlogo SYSTEM
”http://www.adn.com/images/logo.gif" NDATA gif>

Когда вы в документе применяете сущность adnlogo, процессор использует условное обозначение GIF, чтобы определить способ обработки данной сущности.

Примечание
При помощи объявления !NOTATION (“условное обозначение”) вы можете объявить условное обозначение GIF. Создавая условное обозначение, указывайте URL вспомогательного приложения (helper application) при помощи ключевого слова SYSTEM в следующей строке кода (iviewer.exe— приложение, которое может отображать GIF-файлы):
<!NOTATION gif SYSTEM "http://site.com/iviewer.exe">

<< назад | содержание | вперед >>

Hosted by uCoz