В стандартном обобщенном языке разметки (SGML) сущность представляет собой примитивный тип данных , который связывает строку либо с уникальным псевдонимом (например, с именем, указанным пользователем), либо с зарезервированным словом SGML (например, #DEFAULT
). Сущности лежат в основе организационной структуры и определения документов SGML. Спецификация SGML определяет множество типов сущностей , которые различаются квалификаторами ключевых слов и контекстом. Строковое значение объекта может по-разному состоять из простого текста , тегов SGML и / или ссылок на ранее определенные объекты. Некоторые типы сущностей могут также вызывать внешние документы. Сущности вызываются по ссылке.
Типы сущностей
Сущности классифицируются как общие или параметрические:
- На общую сущность можно ссылаться только в содержимом документа.
- На сущность параметра можно ссылаться только в определении типа документа (DTD).
Сущности также классифицируются как проанализированные и не проанализированные:
- Разобранный объект содержит текст, который будет включен в документ и разобран , если ссылаются сущность. Сущность параметра может быть только проанализированной сущностью.
- Неанализируемый объект содержит любые данные, и ссылка на него приведет приложения только уведомлений о присутствии лица; содержимое объекта не будет проанализировано, даже если это текст. Непроанализированная сущность может быть только внешней.
Внутренние и внешние субъекты
Внутренний субъект имеет значение , которое является либо буквальной строкой или разбираемая строка , содержащая разметки и объекты определены в том же самом документе (например, тип документ декларации или поддокументе). Напротив, у внешнего объекта есть объявление, которое вызывает внешний документ, что требует вмешательства менеджера объекта для разрешения ссылки на внешний документ.
Системные сущности
Объявление объекта может иметь буквальное значение или может иметь некоторую комбинацию необязательного SYSTEM
идентификатора , который позволяет синтаксическим анализаторам SGML обрабатывать референт строки объекта как идентификатор ресурса, и необязательный PUBLIC
идентификатор, который идентифицирует объект независимо от какого-либо конкретного представления. В XML , подмножестве SGML , объявление объекта может не иметь PUBLIC
идентификатора без SYSTEM
идентификатора.
Сущность документа SGML
Когда внешний объект ссылается на полный документ SGML, он известен в вызывающем документе как объект документа SGML . Документ SGML - это текстовый документ с разметкой SGML, определенной в прологе SGML (т. Е. DTD и вложенные документы). Полный документ SGML включает не только сам экземпляр документа, но также пролог и, необязательно, объявление SGML (которое определяет синтаксис разметки документа и объявляет кодировку символов ). [1]
Синтаксис
Сущность определяется через объявление сущности в определении типа документа (DTD) документа. Например:
greeting1 "Привет мир" > <ЛИЦО! Greeting2 SYSTEM "Файл: ///hello.txt" > % greeting3 "! ¡Hola" > greeting4 "% greeting3; средства Hello!" >
Эта разметка DTD заявляет следующее:
- Внутренняя общая сущность с именем
greeting1
существует и состоит из строкиHello world
. - Внешняя общая сущность с именем
greeting2
существует и состоит из текста, найденного в ресурсе, идентифицированном URIfile:///hello.txt
. - Сущность внутреннего параметра с именем
greeting3
существует и состоит из строки¡Hola!
. - Внутренняя общая сущность с именем
greeting4
существует и состоит из строки¡Hola! means Hello!
.
Имена для объектов должны соответствовать правилам для имен SGML , и существуют ограничения на то, где на объекты можно ссылаться.
На сущности параметров можно ссылаться, помещая имя сущности между %
и ;
. Для ссылки на проанализированные общие сущности имя сущности помещается между " &
" и " ;
". Ссылка на неанализируемые сущности осуществляется путем помещения имени сущности в значение атрибута, объявленного как тип ENTITY.
Общие сущности из приведенного выше примера могут быть указаны в документе следующим образом:
<содержание> <информация> ' & приветствие1; '- обычная тестовая строка. Содержимое hello.txt: & приветствие2; На испанском языке & welcome4;
После анализа этот документ будет передан нижележащему приложению так же, как если бы он был написан следующим образом, при условии, что hello.txt
файл содержит текст Salutations
:
«Hello world» - это обычная тестовая строка. Содержимое hello.txt: Приветствия На испанском: ¡Hola! значит привет!
Ссылка на необъявленную сущность является ошибкой, если сущность по умолчанию не была определена. Например:
DEFAULT "Этот объект не определен" >
Дополнительные конструкции разметки и параметры процессора могут влиять на то, обрабатываются ли объекты и как. Например, процессор может дополнительно игнорировать внешние объекты.
Сущности персонажей
Стандартные наборы сущностей для SGML и некоторых его производных были разработаны как мнемонические устройства, чтобы упростить разработку документов, когда есть необходимость использовать символы, которые нелегко набрать или которые не широко поддерживаются устаревшими кодировками символов. Каждая такая сущность состоит только из одного символа из универсального набора символов . Хотя на любой символ можно ссылаться с помощью числовой ссылки на символ, ссылка на сущность символа позволяет ссылаться на символы по имени, а не по кодовой точке .
Например, в HTML 4 есть 252 встроенных символьных объекта, которые не нужно объявлять явно, а в XML их пять. XHTML имеет те же пять элементов, что и XML, но если его DTD используются явно, то он имеет 253 ( & apos; является дополнительной сущностью помимо тех, что в HTML 4).
Смотрите также
Заметки
- ^ http://www.is-oughtt.co.uk/book/sgml-6.htm#Types. Архивировано 5 февраля 2009 г. на Wayback Machine.
Рекомендации
- Гольдфарб, Чарльз Ф. (ред.). Обзор ISO 8879: WG8 N1855 . РГ8 и связи, 1996.
- Гольдфарб, Чарльз Ф. и Юрий Рубинский (ред.). Справочник SGML . Издательство Оксфордского университета, 1991.