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


Чтение объявлений сущностей и ссылок сущностей в DOM

Сущность — это объявление, которое указывает имя, которое будет использоваться в XML вместо содержимого или разметки. Существует две части сущностей. Сначала необходимо привязать имя к содержимому, которое заменяет, с помощью определения сущности. Объявление сущности создается с помощью синтаксиса <!ENTITY name "value"> в определении типа документа (DTD) или схеме XML. Во-вторых, имя, определенное в объявлении сущности, впоследствии используется в XML. При использовании в XML он называется ссылкой на сущность. Например, следующее объявление сущности определяет сущность с именем publisher, связанную с содержимым "Microsoft Press".

<!ENTITY publisher "Microsoft Press">  

В следующем примере показано использование этого объявления сущности в XML как ссылки на сущность.

<author>Fred</author>  
<pubinfo>Published by &publisher;</pubinfo>  

Некоторые средства синтаксического анализа автоматически расширяют сущности при загрузке документа в память. Поэтому при чтении XML в память объявления сущностей запоминаются и сохраняются. При последующем обнаружении символов &;, указывающих на общую ссылку на сущность, парсер ищет это имя в таблице объявлений сущностей. Ссылка &publisher; заменяется контентом, который он представляет. Использование следующего XML-документа

<author>Fred</author>  
<pubinfo>Published by &publisher;</pubinfo>  

Разворачивание ссылки на сущность и замена &publisher; содержимым от компании Microsoft Press дает следующий расширенный XML.

Выходные данные

<author>Fred</author>  
<pubinfo>Published by Microsoft Press</pubinfo>  

Существует множество типов сущностей. На следующей схеме показана разбивка типов сущностей и терминологии.

блок-диаграмма иерархии типов сущностей

По умолчанию для реализации Microsoft .NET Framework объектной модели XML-документа (DOM) необходимо сохранить ссылки на сущности, а не развернуть сущности при загрузке XML. Это означает, что при загрузке документа в DOM создается узел XmlEntityReference , содержащий эталонную переменную &publisher; , с дочерними узлами, представляющими содержимое в сущности, объявленной в DTD.

Используя объявление сущности, на следующей <!ENTITY publisher "Microsoft Press"> схеме показаны узлы XmlEntity и XmlText , созданные из этого объявления.

узлы, созданные из объявления сущности

Различия между случаями, когда ссылки на сущности развертываются и когда они остаются неразвернутыми, влияют на то, какие узлы создаются в дереве DOM в памяти. Разница в создаваемых узлах объясняется в разделах " Ссылки на сущности сохраняются , а ссылки на сущности расширяются и не сохраняются.

См. также