Blame doc/sysid.htm

Packit 8a864e
Packit 8a864e
<HTML>
Packit 8a864e
<HEAD>
Packit 8a864e
<TITLE>OpenSP - System identifiers</TITLE>
Packit 8a864e
</HEAD>
Packit 8a864e
<BODY>
Packit 8a864e

System identifiers

Packit 8a864e

Packit 8a864e
There are two kinds of system identifier: formal system identifiers
Packit 8a864e
and simple system identifiers.  A system identifier that does not
Packit 8a864e
start with <SAMP><</SAMP> will always be interpreted as a simple
Packit 8a864e
system identifier.  A simple system identifier will always be
Packit 8a864e
interpreted either as a filename or as a URL.
Packit 8a864e
Packit 8a864e

Formal system identifiers

Packit 8a864e

Packit 8a864e
Formal system identifiers are based on the
Packit 8a864e
System Identifier facility defined in ISO/IEC 10744 (HyTime) Technical
Packit 8a864e
Corrigendum 1, Annex D.
Packit 8a864e
A system identifier that is a formal system
Packit 8a864e
identifier consists of a sequence of one or more storage object
Packit 8a864e
specifications.  The objects specified by the storage object
Packit 8a864e
specifications are concatenated to form the entity.  A storage object
Packit 8a864e
specification consists of an SGML start-tag in the reference concrete
Packit 8a864e
syntax followed by character data content.  The generic identifier of
Packit 8a864e
the start-tag is the name of a storage manager.  The content is a
Packit 8a864e
storage object identifier which identifies the storage object in a
Packit 8a864e
manner dependent on the storage manager.  The start-tag can also
Packit 8a864e
specify attributes giving additional information about the storage
Packit 8a864e
object.  Numeric character references are recognized in storage object
Packit 8a864e
identifiers and attribute value literals in the start-tag.  Record
Packit 8a864e
ends are ignored in the storage object identifier as with SGML.  A
Packit 8a864e
system identifier will be interpreted as a formal system identifier if
Packit 8a864e
it starts with a <SAMP><</SAMP> followed by a storage manager name,
Packit 8a864e
followed by either <SAMP>></SAMP> or white-space; otherwise it will be
Packit 8a864e
interpreted as a simple system identifier.  A storage object
Packit 8a864e
identifier extends until the end of the system identifier or until the
Packit 8a864e
first occurrence of <SAMP><</SAMP> followed by a storage manager
Packit 8a864e
name, followed by either <SAMP>></SAMP> or white-space.
Packit 8a864e

Packit 8a864e
The following storage managers are available:
Packit 8a864e
Packit 8a864e
Packit 8a864e
<SAMP>osfile</SAMP>
Packit 8a864e
Packit 8a864e
The storage object identifier is a filename.  If the filename is
Packit 8a864e
relative it is resolved using a base filename.  Normally the base
Packit 8a864e
filename is the name of the file in which the storage object
Packit 8a864e
identifier was specified, but this can be changed using the
Packit 8a864e
<SAMP>base</SAMP> attribute.  The filename will be searched for first
Packit 8a864e
in the directory of the base filename.  If it is not found there, then
Packit 8a864e
it will be searched for in directories specified with the
Packit 8a864e
<SAMP>-D</SAMP> option in the order in which they were specified on
Packit 8a864e
the command line, and then in the list of directories specified by the
Packit 8a864e
environment variable <SAMP>SGML_SEARCH_PATH</SAMP>.  The list
Packit 8a864e
is separated by colons under Unix and by semi-colons under MSDOS.
Packit 8a864e
Packit 8a864e
<SAMP>osfd</SAMP>
Packit 8a864e
Packit 8a864e
The storage object identifier is an integer specifying a file
Packit 8a864e
descriptor. Thus a system identifier of <SAMP><osfd>0</SAMP> will
Packit 8a864e
refer to the standard input (STDIN), 1 to standard output
Packit 8a864e
(STDOUT), and 2 to standard error
Packit 8a864e
(STDERR). Arbitrary file descriptors may be used so you
Packit 8a864e
could say <samp><osfd>3</samp> to get an extra input or output
Packit 8a864e
stream independant of the usual three. This is useful, e.g., for
Packit 8a864e
generating catalog entries or SGML declarations on the fly. You can
Packit 8a864e
use an osfd storage object anywhere you can use a sysid, including on
Packit 8a864e
the command line.
Packit 8a864e
Packit 8a864e
<SAMP>url</SAMP>
Packit 8a864e
Packit 8a864e
The storage object identifier is a URL.  Only the <SAMP>http</SAMP>
Packit 8a864e
scheme is currently supported and not on all systems.
Packit 8a864e
Packit 8a864e
<SAMP>neutral</SAMP>
Packit 8a864e
Packit 8a864e
The storage manager is the storage manager of storage object in which
Packit 8a864e
the system identifier was specified (the underlying storage
Packit 8a864e
manager).  However if the underlying storage manager does not
Packit 8a864e
support named storage objects (ie it is <SAMP>osfd</SAMP>), then the
Packit 8a864e
storage manager will be <SAMP>osfile</SAMP>.  The storage object
Packit 8a864e
identifier is treated as a relative, hierarchical name separated by
Packit 8a864e
slashes (<SAMP>/</SAMP>) and will be transformed as appropriate for
Packit 8a864e
the underlying storage manager.
Packit 8a864e
Packit 8a864e
<SAMP>literal</SAMP>
Packit 8a864e
Packit 8a864e
The bit combinations of the storage object identifier are
Packit 8a864e
the contents of the storage object.
Packit 8a864e
Packit 8a864e

Packit 8a864e
The following attributes are supported:
Packit 8a864e
Packit 8a864e
Packit 8a864e
<SAMP>records</SAMP>
Packit 8a864e
Packit 8a864e
This describes how records are delimited in the storage object:
Packit 8a864e
Packit 8a864e
<SAMP>cr</SAMP>
Packit 8a864e
Packit 8a864e
Records are terminated by a carriage return.
Packit 8a864e
Packit 8a864e
<SAMP>lf</SAMP>
Packit 8a864e
Packit 8a864e
Records are terminated by a line feed.
Packit 8a864e
Packit 8a864e
<SAMP>crlf</SAMP>
Packit 8a864e
Packit 8a864e
Records are terminated by a carriage return followed by a line feed.
Packit 8a864e
Packit 8a864e
<SAMP>find</SAMP>
Packit 8a864e
Packit 8a864e
Records are terminated by whichever of
Packit 8a864e
<SAMP>cr</SAMP>,
Packit 8a864e
<SAMP>lf</SAMP>
Packit 8a864e
or
Packit 8a864e
<SAMP>crlf</SAMP>
Packit 8a864e
is first encountered in the storage object.
Packit 8a864e
Packit 8a864e
<SAMP>asis</SAMP>
Packit 8a864e
Packit 8a864e
No recognition of records is performed.
Packit 8a864e
Packit 8a864e

Packit 8a864e
The default is <SAMP>find</SAMP> except for NDATA entities for which
Packit 8a864e
the default is <SAMP>asis</SAMP>.  This attribute is not applicable to
Packit 8a864e
the <SAMP>literal</SAMP> storage manager.
Packit 8a864e

Packit 8a864e
When records are recognized in a storage object, a record start is
Packit 8a864e
inserted at the beginning of each record, and a record end at the end
Packit 8a864e
of each record.  If there is a partial record (a record that doesn't
Packit 8a864e
end with the record terminator) at the end of the entity, then a
Packit 8a864e
record start will be inserted before it but no record end will be
Packit 8a864e
inserted after it.
Packit 8a864e

Packit 8a864e
The attribute name and <SAMP>=</SAMP> can be omitted for this attribute.
Packit 8a864e
Packit 8a864e
<SAMP>zapeof</SAMP>
Packit 8a864e
Packit 8a864e
This specifies whether a Control-Z character that occurs as the final byte
Packit 8a864e
in the storage object should be stripped.
Packit 8a864e
The following values are allowed:
Packit 8a864e
Packit 8a864e
<SAMP>zapeof</SAMP>
Packit 8a864e
Packit 8a864e
A final Control-Z should be stripped.
Packit 8a864e
<SAMP>nozapeof</SAMP>
Packit 8a864e
Packit 8a864e
A final Control-Z should not be stripped.
Packit 8a864e
Packit 8a864e

Packit 8a864e
The default is <SAMP>zapeof</SAMP> except for NDATA entities, entities
Packit 8a864e
declared in storage objects with <SAMP>zapeof=nozapeof</SAMP> and
Packit 8a864e
storage objects with <SAMP>records=asis</SAMP>.  This attribute is not
Packit 8a864e
applicable to the <SAMP>literal</SAMP> storage manager.
Packit 8a864e

Packit 8a864e
The attribute name and <SAMP>=</SAMP> can be omitted for this
Packit 8a864e
attribute.
Packit 8a864e
Packit 8a864e
<SAMP>encoding</SAMP>
Packit 8a864e
Packit 8a864e
The encoding attribute specifies the encoding of the storage object.
Packit 8a864e
This attribute is used when the encoding is independent of the
Packit 8a864e
document character set.
Packit 8a864e
The value must be the name of an encoding.
Packit 8a864e
This attribute is not applicable to the
Packit 8a864e
<SAMP>literal</SAMP> storage manager.
Packit 8a864e
Packit 8a864e
<SAMP>bctf</SAMP>
Packit 8a864e
Packit 8a864e
The BCTF attribute specifies that the encoding of the storage
Packit 8a864e
object.
Packit 8a864e
This attribute is used when the encoding is
Packit 8a864e
document character set dependent.
Packit 8a864e
The value must be the name of a BCTF.
Packit 8a864e
This attribute is not applicable to the
Packit 8a864e
<SAMP>literal</SAMP> storage manager.
Packit 8a864e
Packit 8a864e
<SAMP>tracking</SAMP>
Packit 8a864e
Packit 8a864e
This specifies whether line boundaries should be tracked for this
Packit 8a864e
object: a value of <SAMP>track</SAMP> specifies that they should; a
Packit 8a864e
value of <SAMP>notrack</SAMP> specifies that they should not.  The
Packit 8a864e
default value is <SAMP>track</SAMP>.  Keeping track of where line
Packit 8a864e
boundaries occur in a storage object requires approximately one byte
Packit 8a864e
of storage per line and it may be desirable to disable this for very
Packit 8a864e
large storage objects.
Packit 8a864e

Packit 8a864e
The attribute name and
Packit 8a864e
<SAMP>=</SAMP>
Packit 8a864e
can be omitted for this attribute.
Packit 8a864e
Packit 8a864e
<SAMP>base</SAMP>
Packit 8a864e
Packit 8a864e
When the storage object identifier specified in the content of the
Packit 8a864e
storage object specification is relative, this specifies the base
Packit 8a864e
storage object identifier relative to which that storage object
Packit 8a864e
identifier should be resolved.
Packit 8a864e
When not specified a storage object identifier is interpreted
Packit 8a864e
relative to the storage object in which it is specified,
Packit 8a864e
provided that this has the same storage manager.
Packit 8a864e
This applies both to system identifiers specified in SGML
Packit 8a864e
documents and to system identifiers specified in the catalog entry
Packit 8a864e
files.
Packit 8a864e
Packit 8a864e
<SAMP>smcrd</SAMP>
Packit 8a864e
Packit 8a864e
The value is a single character that will be recognized in storage
Packit 8a864e
object identifiers (both in the content of storage object
Packit 8a864e
specifications and in the value of <SAMP>base</SAMP> attributes) as a
Packit 8a864e
storage manager character reference delimiter when followed by a
Packit 8a864e
digit.  A storage manager character reference is like an SGML numeric
Packit 8a864e
character reference except that the number is interpreted as a
Packit 8a864e
character number in the inherent character set of the storage manager
Packit 8a864e
rather than the document character set.  The default is for no
Packit 8a864e
character to be recognized as a storage manager character reference
Packit 8a864e
delimiter.  Numeric character references cannot be used to prevent
Packit 8a864e
recognition of storage manager character reference delimiters.
Packit 8a864e
Packit 8a864e
<SAMP>fold</SAMP>
Packit 8a864e
Packit 8a864e
This applies only to the <SAMP>neutral</SAMP> storage manager.  It
Packit 8a864e
specifies whether the storage object identifier should be folded to
Packit 8a864e
the customary case of the underlying storage manager if storage object
Packit 8a864e
identifiers for the underlying storage manager are case sensitive.
Packit 8a864e
The following values are allowed:
Packit 8a864e
Packit 8a864e
<SAMP>fold</SAMP>
Packit 8a864e
Packit 8a864e
The storage object identifier will be folded.
Packit 8a864e
Packit 8a864e
<SAMP>nofold</SAMP>
Packit 8a864e
Packit 8a864e
The storage object identifier will not be folded.
Packit 8a864e
Packit 8a864e

Packit 8a864e
The default value is <SAMP>fold</SAMP>.  The attribute name and
Packit 8a864e
<SAMP>=</SAMP> can be omitted for this attribute.
Packit 8a864e

Packit 8a864e
For example, on Unix filenames are case-sensitive and the customary
Packit 8a864e
case is lower-case.  So if the underlying storage manager were
Packit 8a864e
<SAMP>osfile</SAMP> and the system was a Unix system, then
Packit 8a864e
<SAMP><neutral>FOO.SGM</SAMP> would be equivalent to
Packit 8a864e
<SAMP><osfile>foo.sgm</SAMP>.
Packit 8a864e
Packit 8a864e

Simple system identfiers

Packit 8a864e

Packit 8a864e
A simple system identifier is interpreted as a storage object
Packit 8a864e
identifier with a storage manager that depends on where the system
Packit 8a864e
identifier was specified: if it was specified in a storage object
Packit 8a864e
whose storage manager was <SAMP>url</SAMP> or if the system identifier
Packit 8a864e
looks like an absolute URL in a supported scheme, the storage manager
Packit 8a864e
will be <SAMP>url</SAMP>; otherwise the storage manager will be
Packit 8a864e
<SAMP>osfile</SAMP>.  The storage manager attributes are defaulted as
Packit 8a864e
for a formal system identifier.  Numeric character references are not
Packit 8a864e
recognized in simple system identifiers.
Packit 8a864e
</BODY>
Packit 8a864e
</HTML>