Сущность SGML
В стандартном обобщенном языке разметки (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). Например:
<!ENTITY greeting1 "Hello world">
<!ENTITY greeting2 SYSTEM "file:///hello.txt">
<!ENTITY % greeting3 "¡Hola!">
<!ENTITY greeting4 "%greeting3; means Hello!">
Эта разметка DTD объявляет следующее:
- Внутренняя общая сущность с именем
greeting1
существует и состоит из строкиHello world
. - Внешний общий объект с именем
greeting2
существует и состоит из текста, найденного в ресурсе, определенном URI.file:///hello.txt
. - Объект внутреннего параметра с именем
greeting3
существует и состоит из строки¡Hola!
. - Внутренняя общая сущность с именем
greeting4
существует и состоит из строки¡Hola! means Hello!
.
Имена сущностей должны соответствовать правилам для имен SGML , и существуют ограничения на то, где можно ссылаться на сущности.
Ссылка на объекты параметров осуществляется путем размещения имени объекта между %
и ;
. На анализируемые общие сущности можно ссылаться, помещая имя сущности между " &
" и " ;
". На неанализированные сущности можно ссылаться, помещая имя сущности в значение атрибута, объявленного как тип ENTITY.
На общие сущности из приведенного выше примера можно ссылаться в документе следующим образом:
<content>
<info>'&greeting1;' is a common test string.</info>
<info>The content of hello.txt is: &greeting2;</info>
<info>In Spanish, &greeting4;</info>
</content>
При анализе этот документ будет передан нижестоящему приложению так же, как если бы он был написан следующим образом, предполагая, что hello.txt
файл содержит текст Salutations
:
<content>
<info>'Hello world' is a common test string.</info>
<info>The content of hello.txt is: Salutations</info>
<info>In Spanish, ¡Hola! means Hello!</info>
</content>
Ссылка на необъявленный объект является ошибкой, если не определен объект по умолчанию. Например:
<!ENTITY #DEFAULT "This entity is not defined">
Дополнительные конструкции разметки и параметры процессора могут влиять на то, будут ли и как обрабатываться объекты. Например, процессор может опционально игнорировать внешние объекты.
Сущности персонажей [ править ]
Стандартные наборы сущностей для SGML и некоторых его производных были разработаны как мнемонические устройства, чтобы облегчить создание документов, когда возникает необходимость использовать символы, которые нелегко напечатать или которые широко не поддерживаются устаревшими кодировками символов. Каждая такая сущность состоит всего из одного символа из универсального набора символов . Хотя на любой символ можно ссылаться с помощью числовой ссылки на символ , ссылка на символьный объект позволяет ссылаться на символы по имени, а не по коду .
Например, в HTML 4 имеется 252 встроенных символьных объекта, которые не нужно явно объявлять, а в XML — пять. В XHTML те же пять, что и в XML, но если его DTD используются явно, то в нем их 253 ( '
являющийся дополнительной сущностью помимо тех, что есть в HTML 4).
См. также [ править ]
- Декларативное программирование
- Объект (информатика)
- Список ссылок на символьные сущности XML и HTML
- Атака внешнего объекта XML
Примечания [ править ]
- ^ «Объяснение веб-SGML и HTML 4.0 — глава 6» . www.is- Thought.co.uk . Архивировано из оригинала 5 февраля 2009 г.
Ссылки [ править ]
- Гольдфарб, Чарльз Ф. (ред.). Обзор ISO 8879: WG8 N1855 . РГ8 и связи, 1996 г.
- Гольдфарб, Чарльз Ф. и Юрий Рубинский (ред.). Справочник по SGML . Издательство Оксфордского университета, 1991.