This annex states the requirements for the formal definition of notations used in system identifiers to specify access to the storage objects in which entities are stored. Access is provided by "storage managers" such as file systems, data bases, and main memory managers. Objects may be stored individually, or as part of larger storage objects, called "containers" or "archives", with a defined format for multiple-object storage (e.g., PKZIP, TAR, etc.). Access may involve auxiliary processes, such as coding conversion, record boundary recognition, and other processes required to present storage objects to the SGML parser as entities.
An entity is a virtual storage object. A system identifier parameter of a markup declaration can be used to map an entity onto one or more real storage objects (or portions thereof), and to specify processes to be performed in the course of accessing the object as an entity. The format of a system identifier is normally system-specific (an "informal system identifier"). However, when access to storage is specified in the manner described in this annex, the system identifier is called a "formal system identifier" (FSI). .*
A formal system identifier consists of one or more "storage object specifications", each of which identifies a storage object. The format of an SOS resembles an element, in that it consists of a tag followed by content. The storage objects are concatenated in the order specified to comprise the storage of the entity.
In the SOS tag, the name appearing as the generic identifier is that of the storage manager (SMName). It is the name of a "storage manager notation" that was identified as such by a declaration. There can also be an attribute specification list, consisting of attributes defined for the storage manager notation. These SOS attributes serve as parameters that govern the access to the storage object.
The content of an SOS is known as the "storage object identifier" (SOI). Its syntax and semantics depends on the individual storage manager.
An SOS tag is recognized by the occurrence of a
start-tag open delimiter followed immediately by a declared storage
manager name (see
SGML numeric character references are recognized in the attribute
value literals and content of an SOS. They can be used to avoid false
delimiter recognition.
.*
A system identifier is recognized as an FSI only if it begins with an
SOS tag. Informal system identifiers can be used in the same document as
FSI's as long as storage manager names are chosen so that informal
system identifiers don't appear to begin with an SOS tag.
.***
.*
Several auxiliary processes may be required to convert a newly-created
entity into the form in which it will be stored. Conversely, auxiliary
processes may be needed to convert the bits of a storage object to the
bit combinations seen by an SGML parser.
The SGML language is designed so that SGML documents can be stored in
the same form as other text files.
When an entity is accessed, the entity manager invokes the storage
manager for each storage object specification. For each storage
object, the following steps may be performed:
Code normalization processes are "registered" by declaring them as
notations. The following ones are defined in this International
Standard:
The methods used for encryption, compression, and sealing are
"registered" by declaring them as notations.
.**
A container is an entity whose storage
is partitioned so that the data of several other entities ("contained
objects") can be kept in it. The locations of the contained objects
are specified by their
entity declarations. The entity declarations serve as entries in a
"table of contents" or directory.
The external identifier of the entity declaration of a contained
object must be identical to that of its container entity.
A document indicates the presence of formal system identifiers by
using the APPINFO parameter of the SGML declaration and the
other facilities described in this sub-clause.
Potential use of one or more storage managers defined in
accordance with these requirements is indicated by specifying the
keyword "FSISM" as a sub-parameter of the APPINFO parameter of the
SGML declaration. The keyword indicates the potential presence in one
or more DTDs of a formal system identifier storage managers (FSISM)
declaration that identifies the "storage object specification
notations".
The format of the sub-parameter is:
A FSISM declaration identifies one or more storage manager notations
used in system identifiers. System identifiers in which such notations
occur are known as "formal system identifiers".
A FSISM declaration should precede the storage manager notation
declarations pertaining to the storage managers that it identifies.
There can be more than one FSISM declaration in a DTD.
Syntactically, the FSISM declaration is a processing instruction
(PI), not an SGML markup declaration. In the template below, it is
shown in the reference concrete syntax. In use, the SMName-list
parameter must be replaced by one or more storage manager names
(SMName)
declared as notation names, separated by SGML
The declaration name is the initial character string, up to the first
ts separator. The name is always "FSISM" in meta-DTDs. It should
also be "FSISM" in DTDs, but provision is made for changing it in
the APPINFO parameter of the SGML declaration, if necessary, to avoid
the (admittedly unlikely) possibility of conflicts when retro-fitting
an architecture to a document that already has PIs that begin with
"FSISM ".
Each storage manager name (SMName) specified in an
FSISM declaration must be declared as a notation name in a notation
declaration. The declaration identifies the storage manager definition
document, which defines the syntax and semantics of the storage object
specifications for that storage manager.
Associated with the notation declaration can be an attribute
definition list declaration for "storage manager support attributes".
A storage manager is a program (or a combination of programs or a
portion of a program) that manages the storage of real physical
objects (as opposed to an entity manager, which manages the storage of
virtual objects).
The content of an SOS (that is, the SOI) conforms to the rules of the
storage manager. Where those rules allow a relative filename, it is
interpreted relative to the file in which the system identifier is
specified.
Declarations for an incomplete list of well-known
storage managers are provided below. Because they are well-known, this
International Standard is referenced as the definition document.
Alternatively, declarations referencing the actual definition
documents could be used.
The list also includes declarations for special storage
managers actually defined in this International Standard. They are:
The designer of a storage object specification can optionally provide
an attribute definition list declaration. The attributes are used to
specify parameters to the storage access, in addition to the storage
object identifier.
The template for such a declaration is shown below. In use, SMName is
replaced by the actual notation name for the storage manager.
The template includes all of the storage manager support attributes
defined in this International Standard. In practice, an actual
declaration might include some or none of them, possibly with other
attributes unique to a particular storage manager.
The attribute
The attribute The attribute Informal system identifiers
Auxiliary processes
Code normalization
Encryption, compression, and sealing
Containers
.*** THIS CLAUSE NEEDS A REWRITE FOR CONSISTENCY ***
Identification facilities
APPINFO parameter of SGML declaration
Formal system identifier storage managers declaration
Storage manager support declarations
Storage manager notation declaration
Storage manager support attributes