Поделиться через


ENTITY

Инструкция ENTITY используется для определения сущностей в DTD с целью их использования как в связанном с DTD XML-документе, так и собственно в DTD. ENTITY представляет собой сокращенную запись для размещения в XML-документе. Сокращенное имя указывается для имени параметра. Инструкции ENTITY особенно полезны в ситуациях, когда требуется повторять сведения или использовать объемные текстовые блоки, которые можно хранить в отдельных файлах. В XML-документе за сокращенным именем следует символ «;» (&abbName;)

Далее приведен пример инструкций ENTITY, используемых в DTD и в XML-файлах.

longtext.txt

Ниже приведено содержимое файла longtext.txt:

<definition>ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

</definition>

dtd_chunk.dtd

sample.dtd

В результате анализа DTD-документа выводятся следующие результаты. Обратите внимание, что замена происходит только в памяти. Средство синтаксического анализа не вносит в файл никаких изменений.

sample.xml

Результаты синтаксического анализа XML-документа

В результате анализа XML-документа выводятся следующие результаты:

Definition list for eXtensible Markup Language attributes used in DTD files.

top file

ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

Conclusion of definition list for eXtensible Markup Language attributes.

Синтаксис

<!ENTITY [%] name [SYSTEM|PUBLIC publicID] resource [NDATA notation] >

Параметры

  • name
    Имя сущности. Обязателен для всех определений сущностей.
  • publicID
    Общий идентификатор для сущности. Требуется лишь в том случае, если в объявлении используется ключевое слово PUBLIC.
  • resource
    Значение сущности. Обязателен для всех определений сущностей. В случае внутренних сущностей это текстовая строка, которая подвергается анализу и расширяется. В случае внешних сущностей это идентификатор URI, идентифицирующий внешнюю сущность, например имя файла или тип файла.
  • notation
    Имя нотации, объявленное в других частях DTD с помощью инструкции NOTATION. Требуется только при объявлении неанализируемой сущности с использованием ключевого слова NDATA, которое обозначает данные в формате, отличном от XML.

Примеры

Общая сущность (проанализированная внутренняя)

Ниже следует объявление внутренней общей сущности, к которой можно обращаться как к &oumlaut; или к &xml; в XML-документах, где используется DTD.

<!ENTITY oumlaut "&#38;#246;">

или простой пример замены текста:

<!ENTITY xml "eXtensible Markup Language">

Средство синтаксического анализа XML расширяет необработанное значение сущности (&#38;#246;), чтобы превратить его в часть внутреннего XML-документа. В окончательной версии проанализированного документа значение «&#38;» используется для формирования символа «&» и значение включается в XML-документ в виде «&#246;».

Cущность-параметр (проанализированная внутренняя)

Ниже следует объявление внутренней сущности-параметра, к которой можно обращаться как к %lists; в других частях DTD. Это допускает повторные ссылки на XHTML-список элементов <ul> и <ol>.

<!ENTITY % lists "ul | ol">

Непроанализированная внешняя сущность

Далее следует объявление непроанализированной внешней сущности, позволяющей кодировать ссылки на данные в форматах, отличных от XML (в данном случае на файл изображения в формате GIF) для включения этих данных в XML-документ.

<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>

В данном случае применение ключевого слова NDATA подразумевает необходимость использования объявления NOTATION для нотации «jpg» в сочетании с этим объявлением. Дополнительные сведения см. в разделе НОТАЦИЯ.

Примечания

Инструкции ENTITY можно использовать разными способами. Если вы не знаете, как определять сущности для последующего использования, возможно, следующие вопросы помогут лучше разобраться в тех условиях, в которых используются сущности, объявляемые в DTD.

  • Будет ли значение сущности использоваться просто для сокращения более длинной текстовой строки, которая может изменяться в течение жизни документа? В этом случае нужно использовать общую сущность.

  • Будет ли оно использоваться в качестве указателя на объекты, внешние по отношению к DTD или к XML-документу (т. е. на внешние сущности), такие как имена файлов или типы MIME? В этом случае необходимо использовать неанализируемую внешнюю сущность.

  • Следует ли анализировать значение URI сущности (т. е. расширять его как часть DTD или использующего это значение XML-документа) или оставлять его без анализа (т. е. средство синтаксического анализа XML не будет включать его содержимое в окончательную версию проанализированного документа)?

  • Если предполагается проведение анализа, должно ли расширенное содержимое сущности стать частью XML-документа, использующего DTD (т. е. общими сущностями), или частью самого DTD (т. е. сущностями-параметрами)?

См. также

Основные понятия

ATTLIST (список атрибутов)
ELEMENT
NOTATION