В Standard Generalized Markup Language (SGML) entity является примитив тип данных, который связывает строку либо с уникальным псевдонимом (например, с именем, указанным пользователем), либо с зарезервированным словом SGML (например, #DEFAULT
). Сущности лежат в основе организационной структуры и определения документов SGML. Спецификация SGML определяет множество типов сущностей, которые различаются квалификаторами ключевых слов и контекстом. Строковое значение объекта может по-разному состоять из обычного текста, тегов SGML и / или ссылок на ранее определенные объекты. Некоторые типы сущностей могут также вызывать внешние документы. Сущности вызываются по ссылке.
Сущности классифицируются как общие или параметры:
Сущности также далее классифицируются как проанализированные или неанализируемые :
Внутренняя сущность имеет значение, которое является либо литеральной строкой, либо проанализированной строкой содержащий разметку и объекты, определенные в одном документе (например, Объявление типа документа или вложенный документ). Напротив, внешний объект имеет объявление , которое вызывает внешний документ, что требует вмешательства объекта для разрешения ссылки на внешний документ.
Объявление объекта может иметь буквальное значение или может иметь некоторую комбинацию необязательного SYSTEM
идентификатора, что позволяет анализаторам SGML для обработки референтной строки объекта как идентификатора ресурса и необязательного идентификатора PUBLIC
, который идентифицирует объект независимо от какого-либо конкретного представления. В XML, подмножестве SGML, объявление объекта может не иметь идентификатора PUBLIC
без идентификатора SYSTEM
.
Когда внешний объект ссылается на полный документ SGML, он известен в вызывающем документе как объект документа SGML . Документ SGML - это текстовый документ с разметкой SGML, определенной в прологе SGML (т. Е. DTD и вложенные документы). Полный документ SGML включает не только сам экземпляр документа, но также пролог и, необязательно, объявление SGML (которое определяет синтаксис разметки документа и объявляет кодировку символов ).
Сущность определяется через объявление объекта в документе определение типа документа (DTD). Например:
Эта разметка DTD объявляет следующее:
welcome1
существует и состоит из строки Hello world
.welcome2
, который состоит из текста, найденного в ресурсе, идентифицированном файлом URI : ///hello.txt
.welcome3
существует и состоит из строки ¡Hola!
.welcome4
и состоит из строки ¡Hola! означает Hello!
.Имена сущностей должны соответствовать правилам для имен SGML, и существуют ограничения на то, где сущности могут быть указаны renced.
Для ссылки на сущности параметров поместите имя сущности между %
и ;
. Для ссылки на проанализированные общие сущности имя сущности помещается между «» и «
;
». Ссылка на неанализируемые сущности осуществляется путем помещения имени сущности в значение атрибута, объявленного как тип ENTITY.
Общие сущности из приведенного выше примера могут быть указаны в документе следующим образом:
'приветствие1;' - это обычная тестовая строка. Содержимое hello.txt выглядит следующим образом: welcome2; На испанском языке welcome4;
При синтаксическом анализе этот документ будет передан нижележащему приложению точно так же как если бы это было написано следующим образом, предполагая, что файл hello.txt
содержит текст Salutations
:
'Hello world' - обычная тестовая строка. Содержимое hello.txt: Приветствие По-испански ¡Hola! означает Hello!
Ссылка на необъявленную сущность является ошибкой, если сущность по умолчанию не была определена. Например:
Дополнительные конструкции разметки и параметры процессора могут влиять на то, обрабатываются ли объекты и как. Например, процессор может дополнительно игнорировать внешние объекты.
Стандартные наборы сущностей для SGML и некоторых его производных были разработаны как мнемонические устройства, чтобы упростить создание документов, когда есть необходимость использовать символы, которые нелегко набрать или которые не широко поддерживаются устаревшими кодировками символов. Каждый такой объект состоит только из одного символа из универсального набора символов . Хотя на любой символ можно ссылаться с помощью числовой ссылки на символ, ссылка на сущность символа позволяет ссылаться на символы по имени вместо кодовой точки.
. Например, HTML 4 имеет 252 встроенных символьных объекта, которые не нужно явно объявлять, а XML - пять. XHTML имеет те же пять элементов, что и XML, но если его DTD используются явно, то он имеет 253 ('является дополнительной сущностью помимо тех, что в HTML 4).