SGML Entity Management
Chapter 2 Proposed mapping of public identifiers to system identifiers
SGML can refer to an external file (really an entity) with an external
identifier: this is a public identifier or a system
identifier, or both.
A typical public identifier looks like
PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN"
where ISO 8879-1986 is the owner, ENTITIES is the
text class and Added Latin 1 is the text description, and
EN is language.
A system identifier looks like
SYSTEM "htmlplus.dtd"
where htmlplus.dtd is a system-specific identifier.
To map external identifiers to file names, one should first try the system
identifier, as a file name, and then search entity catalog files and then
search the list of file names derived from the public identifier. The catalog
format is according to SGML/Opens resolution on entity management. The catalog
consists of a series of entries and comments. A comment is delimited by
-- like in a markup declaration.
The fallback derivation of the file name is modelled after the
sgmls environment variable SGML_PATH, and Emacs
psgml mode's sgml-public-map variable. There does not
seem to be any official standards (this is left to the implementation), so this
standard is simply an abstraction of real-world practice of SGML tools, and
shall now be the standard for Debian systems, since this is the convention
currently followed by all applications currently in Debian.
Contiguous white space is compacted to a single space and replaced with an
underscore (_); the characters / to %
are also replaced with _. The text class is down-cased. The
language specifier (i.e., //EN) and anything following it should
be removed.