![]() | ![]() | Copyright © 1992, 1997 International Organization for Standardization. All rights reserved. This electronic document is for use during development and review of International Standards. Official printed copies of International Standards can be purchased from the ISO and the national standards organization of your country. | ||
| Next Clause | Previous Clause | |||
A.6 Formal System Identifier Definition
Requirements (FSIDR)
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. It works with the entity manager, which manages the mapping of real storage to the virtual storage objects known as entities and acts as an interface between the SGML parser and the storage managers.
Each storage manager name (SMName) specified in an FSI declaration must be declared as a notation name in a notation declaration in the FSI definition document. The declaration identifies the storage manager specification, 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 attributes".
NOTE 517 It is not necessarily an error if the fsidd cannot be accessed, as an implementation might not require access to it. The primary purpose of the declarations is to advise humans of the storage managers that are used and to declare any attributes that they require. This information is normally built into the relevant software.
In addition to being derived from the base notation forms defined in this architecture, storage manager notation declarations are recognized as such by the use of a formal public identifier in which two uppercase reserved words occur at the start of the public text description component. The words are separated from one another and from the rest of the public text description (after normalization) by a single SPACE. The first word is "FSISM" and the second is one of four storage manager portability class names: LOCAL, PORTABLE, GLOBAL, or CONTAINER. (These are defined in the following sub-clauses.)
A starter set of standardized storage manager declarations and attributes are defined below. Use of them is optional and is not required for conformance to the FSIDR requirements. Moreover, if used, their attribute definition lists can be augmented by any of the attributes defined in A.6.5 Storage manager attribute definitions, or other, non-standardized, attributes. However, non-standardized storage managers, attributes, or registered attribute values should not be given the same names as standardized ones.
The default values given for standardized attributes (like those of architectural form attributes) apply only if the attribute is not defined for a storage manager. An fsidd can specify any valid value as the default, or make the attribute required.
NOTE 518 In the declarations of the starter-set storage manager notations, the attribute FSIBase indicates the base notation form defined in this Annex from which a notation form is derived. For example, the storage manager "OSFile" is derived from the local storage manager (localsm) notation form), as indicated by the value "localsm" for its FSIBase attribute.
The notation form local storage manager (localsm) is used for storage managers that are local to a particular system. An SOS of a local storage manager will normally need to be converted when an FSI in which it occurs (and the storage object it identifies) is moved to another system. For some SMs and operating systems, the needed conversion could be purely syntactic, or even non-existent, if the originating system's directory structure is replicated on the receiving system.
<!-- Local storage manager -->
<!notation
localsm -- Local storage manager --
-- Clause: A.6.7.1 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM
Local Storage Manager//EN"
-- Attributes: smcommon --
>The starter set local storage managers are:
The SOI is an absolute or relative file identifier (that is, possibly including drive, path, filename, extension, etc.) in a form recognized by the local operating system's file open function.
The SOI is a number. The storage object specification locates the storage object that is created when the operating system reads from the file descriptor with that number. For example, in Unix and DOS systems, fd:0 will read the storage object from standard input.
The content of an osfile SOS (that is, the SOI) conforms to the rules of the local operating system. Where those rules allow an SOI to be relative (e.g. an operating system's relative filename), it normally is interpreted relative to the current storage object when the specified and current storage managers are the same.
<!-- Local Storage Managers -->
<!-- PART OF A NON-MANDATORY STARTER SET -->
<!notation
osfile -- Operating system file --
-- Clause: A.6.7.2 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM LOCAL
Operating System File//EN"
-- Attributes: osfile, smcommon --
>
<!attlist #NOTATION
osfile -- Operating system file --
-- Clause: A.6.7.2 --
FSIBase NAME #FIXED localsm
>
<!notation
osfd -- Operating system file desciptor --
-- Clause: A.6.7.2 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM LOCAL
Operating System File Descriptor//EN"
-- Attributes: osfd, smcommon --
>
<!attlist #NOTATION
osfd -- Operating system file desciptor --
-- Clause: A.6.7.2 --
FSIBase NAME #FIXED localsm
>The notation form portable storage manager (portblsm) is used for storage managers whose SOSs are recognized on many (but not necessarily all) operating systems. A portable SOS will normally not need to be converted when an FSI containing it is moved to another system.
<!-- Portable Storage Manager -->
<!notation
portblsm -- Portable storage manager --
-- Clause: A.6.7.3 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM
Portable Storage Manager//EN"
-- Attributes: smcommon --
>The portable storage manager "URL" uses SOSs that are uniform resource locators conforming to Internet RFC 1738.
<!-- Portable Storage Managers -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
URL -- Uniform Resource Locatior --
-- Clause: A.6.7.4 --
PUBLIC "-//IETF/RFC1738//NOTATION FSISM PORTABLE
Uniform Resource Locator//EN"
-- Attributes: URL, smcommon --
>
<!attlist #NOTATION
URL -- Uniform Resource Locator --
-- Clause: A.6.7.4 --
FSIBase NAME #FIXED portblsm
>The notation neutral storage manager (neutral) is a storage manager for which the SOSs can be reliably transformed into system-specific (local) SOSs). The neutral file identifier storage manager operates by transforming its SOS to the format used by the SM of the current storage object, which then performs the actual storage access. If that SM is a container SM, its "in" attribute is used in the transformed SOS. All other transformed SOS attributes come from the neutral SOS.
The transformation treats the neutral SOI as a hierarchical name whose components are separated by slashes. (There is no initial slash.)
NOTE 519 For example, for each of the storage managers in the following list,
the SOS "<neutral>entities/e1.sgm" would be transformed as shown:
<osfile>entities\e1.sgm <osfile>:entities:e1.sgm <osfile>entities/e1.sgm <url>entities/e1.sgm
The attribute fold (fold) can be specified to show that the neutral SOI is to be "folded" (that is, its case transformed) to comply with the case conventions of the current SM.
NOTE 520 For example, on a Unix system, filenames are case-sensitive but normal files are conventionally named in all lowercase. Therefore, the SOS "<neutral fold>FOO.SGM" would be transformed to "<osfile>foo.sgm" whereas "<neutral nofold>FOO.SGM" would be transformed to "<osfile>FOO.SGM".
NOTE 521 Not every neutral SOI will be transformable to a given SM format. A neutral SOI is most likely to be transformable when fold is specified and each of its components is an alphanumeric filename, or a filename and alphanumeric extension separated by a period, and the length of a filename is limited to eight characters and that of an extension to three characters.
<!-- Neutral File Identifier -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
neutral -- Neutral file identifier --
-- Clause: A.6.7.4.1 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM PORTABLE
Neutral File Identifier//EN"
-- Attributes: neutral, smcommon --
>
<!attlist #NOTATION
neutral -- Neutral file identifier --
-- Clause: A.6.7.4.1 --
FSIBase NAME #FIXED portblsm
fold -- Fold neutral SOI to current SM conventions? --
-- Constraint: direction of folding is dependent on
semantics of target storage manager SOS is
transformed to. --
(fold|nofold)
fold
>The notation form notation processor storage manager (dcnsm) is used for storage managers that manage the association of data content notations with processors. An SOS of notation storage manager class can be used only in a system identifier that is part of the external identifier for a notation. An SOS of this form identifies a notation to a system in a way that allows the system to process data that is in that notation.
<!-- Notation Processor Storage Manager -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
dcnsm -- Notation processor storage manager --
-- Clause: A.6.7.3.3 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM PORTABLE
Notation Storage Manager//EN"
-- Attributes: dcnsm, smcommon --
>
<!attlist #NOTATION
dcnsm -- Notation processor storage manager --
-- Clause: A.6.7.3.3 --
FSIBase NAME #FIXED portblsm
>The starter set notation storage manager is:
The SOI is the MIME type and subtype optionally followed by parameters, specified as they would be in the field body of a Content-Type header field in the header of an Internet mail message.
<!-- MIME Type Notation Processor Storage Managers -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
mimetype -- MIME content type --
-- Clause: A.6.7.4.3 --
PUBLIC "-//IETF/RFC1521//NOTATION FSISM PORTABLE
MIME Content Type//EN"
-- Attributes: mimetype, smcommon --
>
<!attlist #NOTATION
mimetype -- MIME content type --
-- Clause: A.6.7.4.3 --
FSIBase NAME #FIXED dcnsm
>The notation form global storage manager (globalsm) is used for storage managers whose SOSs never need to be converted because they are independent of any real storage environment.
<!-- Global Storage Manager -->
<!notation
globalsm -- Global storage manager --
-- Clause: A.6.7.5 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM
Global Storage Manager//EN"
-- Attributes: smcommon --
>The starter set global storage managers are:
The SOI is treated as the literal text of a storage object.
NOTE 522 Literal text is used chiefly as a connector when concatenating other storage objects. Numeric character references can be used to insert record boundaries between the concatenated objects.
The SOI must be empty. The storage object is normally the current storage object. However, if the attribute this entity (entity) is specified, the "storage object" is the sequence of characters of the entity named in the attribute value, or the current entity if the attribute value is empty.
NOTE 523 ThisOne can be used to make system identifiers portable. In the
following example, the entity "ent1" occupies the last 500 octets of
the current storage object. If the storage location of that object
were changed, it would not be necessary to change the ent1 entity
declaration.
<!ENTITY ent1 system "<ThisOne extents='-500 -1'>">
<!-- Global Storage Managers -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
literal -- Literal storage manager --
-- Clause: A.6.7.6 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM GLOBAL
Literal Text//EN"
-- Attributes: literal, smcommon --
>
<!attlist #NOTATION
literal -- Literal storage manager --
-- Clause: A.6.7.6 --
FSIBase NAME #FIXED globalsm
>
<!notation
ThisOne -- This storage object storage manager --
-- Clause: A.6.7.6 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM GLOBAL
This Storage Object//EN"
-- Attributes: ThisOne, smcommon --
>
<!attlist #NOTATION
ThisOne -- This storage object storage manager --
-- Clause: A.6.7.6 --
FSIBase NAME #FIXED globalsm
entity -- Entity whose characters are used --
CDATA -- Lextype: ENTITY --
-- Constraint: empty string means this entity --
#IMPLIED -- Default: the octets of this storage object --
>The notation form container storage manager (contnrsm) is used for storage managers that contain other entities. Whether a container storage manager SOS needs to be converted depends on whether it contains system-dependent information such as file identifiers, as is the case for TAR. For sbento, on the other hand, the SOIs are relative to the entity and the SM is therefore effectively global.
NOTE 524 The storage of the container entity itself depends on the SMs used for that purpose, and is independent of the universality of the container notation.
To locate an object in a container, it is necessary to specify both the SOS of the container and of the object within it. As the container could itself be stored in a container, several levels of SOS might be required. While storage manager notations could be defined to provide for such situations, formal system identifiers provide a simpler and more flexible approach by using separate entity declarations for the container and the contained objects.
First, the container is declared as an entity with a notation that identifies the type of container (that is, the container storage manager). Examples might be "TAR" (Posix Tape ARchive) or "sbento" (see A.6.7.6.2 Standard BENTO (sbento)). The SOS of the container entity is in the format of the storage manager in which the container itself is stored.
Second, each entity stored in the container has its own declaration, in which the storage manager name in the SOS tag is the container manager. The SOS tag exhibits the attribute "in", which identifies the container entity in which the declared entity is stored. The SOI locates the declared entity in the container. In a typical archive, the SOI might be a file identifier.
NOTE 525 Container entities can be nested. A subordinate (inner) container entity can either have the same container notation as the outer container or a different one.
NOTE 526 A query language (such as SQL or SDQL) can be used as a container notation. In such cases, only a query that returns a sequence of characters is valid as an SOI.
The attribute in container (in) identifies the container entity in which the specified storage object (the contained object) occurs. It can be specified as either an entity name or a formal system identifier (although the latter form should be used only where an entity name is not available, such as on a command line). Entities named on "in" attributes must be declared before the declarations of entities that refer to them.
The attribute previous member of container (after) names the member of the container that the current entity comes after. If the after attribute is not specified, the position of the entity in the container must be sufficiently specified in the entity's SOS or the entity is the first member of the container if no position is specified in the SOS.
NOTE 527 The after attribute is intended primarily for container storage managers that identify contained objects by relative or absolute position rather than by name. However, some storage managers may choose to allow access by name and relative position.
<!-- Container Storage Managers -->
<!notation
contnrsm -- Container storage manager --
-- Clause: A.6.7.7 --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM GLOBAL
Container Storage Manager//EN"
-- Attributes: after, contnrsm, in --
-- CommonAttributes: smcommon --
>
<!attlist #NOTATION
contnrsm -- Container storage manager --
-- Clause: A.6.7.7 --
FSIBase NAME #FIXED globalsm
>
<!attlist #NOTATION
-- in -- -- In container --
-- Clause: A.6.7.7 --
(contnrsm,tar,mime,sbento)
in -- In container --
-- Container in which this object is stored --
-- Constraint: declaration for container entity
named must precede declaration of contained
entity. --
CDATA -- Lextype: (ENTITY|fsi) --
#REQUIRED
>
<!attlist #NOTATION
-- after -- -- Previous member of container --
-- Clause: A.6.7.7 --
(contnrsm,sbento)
after -- Previous member of container --
-- Member of container this entity comes after
(follows) --
CDATA -- Lextype: (ENTITY|fsi) --
#IMPLIED -- Default: position sufficiently specified by SOS
or entity is first member of container. --
>The starter set of container storage managers is:
Posix tape archive.
Mime single-part or multi-part message.
Standard bento. Described under A.6.7.6.2 Standard BENTO (sbento).
<!-- Container Storage Managers -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
tar -- Posix Tape Archive --
-- Clause: A.6.7.7.1 --
-- Creates container by partitioning storage object
to emulate file system directory structure. SOI
is a file identifier. --
PUBLIC "ISO/IEC 9945-1:1990//NOTATION FSISM CONTAINER
Posix Tape Archive//EN"
-- Attributes: tar, in --
-- CommonAttributes: smcommon --
>
<!attlist #NOTATION
tar -- Posix Tape Archive --
-- Clause: A.6.7.7.1 --
FSIBase NAME #FIXED contnrsm
>
<!notation
MIME -- MIME storage manager --
-- Clause: A.6.7.7.1 --
-- Creates container by separating stored entities
with a unique boundary string, identifying them
with headers, and possibly applying a content
transfer encoding. SOI is a MIME content-ID for a
multi-part message and is empty for a single-part
message. --
PUBLIC "-//IETF/RFC1521//NOTATION FSISM CONTAINER
Multimedia Internet Mail Extensions//EN"
-- Attributes: MIME, in --
-- CommonAttributes: smcommon --
>
<!attlist #NOTATION
MIME -- MIME storage manager --
-- Clause: A.6.7.7.1 --
FSIBase NAME #FIXED contnrsm
>Sbento is a container storage manager with the property that it does not utilize the names of its contained entities to store them. The SOI locates them solely by their position and size in the container entity, using a dimension specification list that specifies the extents of the container occupied by the contained entity. Multiple dimension specifications can be specified if the contained entity is segmented and distributed in several locations within the container. The notation for the dimension specification list is the HyTime marker list notation (marklist) (see 6.8 Coordinate Specifications).
NOTE 528 The name "sbento" comes from the Japanese word "bento": "A box or basket with multiple compartments, containing a collection of disparate entities arranged in an esthetically pleasing manner." It is an acronym for "Standard Bento Entity for Natural Transport of Objects".
NOTE 529 Sbento does not prohibit overlapping of contained objects; it is for the application to determine whether overlapping is valid. Overlapping can be a useful technique, for example, for identifying the color table in a graphics entity. The color table would be declared as a separate entity, but its offset and size would position it within the storage occupied by the graphics entity.
NOTE 530 In the following example, the sbento container entity "ctr1" is stored
in the local operating system file "ctr1.dat". The entity "doc"
occupies the first 5000 characters in "ctr1", while the entity
"fig" occupies the following 2500 characters.
<!ENTITY ctr1
SYSTEM "<osfile>ctr1.dat"
NDATA sbento
>
<!ENTITY doc
SYSTEM "<sbento in=ctr1>1 5000"
>
<!ENTITY fig
SYSTEM "<sbento in=ctr1>5001 2500"
>
If the dimension specification in the SOI is a single number, the first is deemed to be omitted and is calculated to be one greater than the position of the last character of the entity named by the after attribute.
NOTE 531 This rule follows the normal
marker list notation rule for an omitted first marker.
It allows the following variation on the previous example:
<!ENTITY ctr1
SYSTEM "<osfile>ctr1.dat"
NDATA sbento
>
<!ENTITY doc
SYSTEM "<sbento in=ctr1>5000"
>
<!ENTITY fig
SYSTEM "<sbento in=ctr1 after=doc>2500"
>
When the sbento container is the document entity in which the sbento container is declared, the common attribute extents is used to specify the actual storage octets of the document entity in which the sbento container entity occurs that make up the actual sbento container data (see A.6.5.3 Common storage manager attributes). Normally, the second marker is specified as "-1", indicating that the container occupies all the remaining octets of the storage object. If the sbento data is not contiguous, multiple axis marker pairs may be specified.
NOTE 532 For example, an sbento container document might have a doctype
declaration and document element start-tag that together
occupy the first 341 octets of the document entity's storage object.
The sbento container would start at octet 342 and occupy the remaining
octets. Thus the sbento container entity would be declared as:
<!ENTITY bento1
SYSTEM "<ThisOne extents='342 -1'>"
NDATA sbento
>
<!-- Standard Bento Entity for Natural Transport of Objects -->
<!-- PART OF A NON-MANDATORY STARTER SET. -->
<!notation
sbento -- Standard BENTO storage manager --
-- Clause: A.6.7.7.2 --
-- Creates container by partitioning storage object
into characters that can be occupied by
entities. SOI is number list that counts
characters.
SOI constraint: interpreted as HyTime dimlist.
SOI lextype: (marker|(marker,marker)+) --
PUBLIC "ISO/IEC 10744:1997//NOTATION FSISM CONTAINER
Standard BENTO//EN"
-- Attributes: after, in, sbento --
-- CommonAttributes: smcommon --
>
<!attlist #NOTATION
sbento -- Standard BENTO storage manager --
-- Clause: A.6.7.7.2 --
FSIBase NAME #FIXED contnrsm
> <!-- TEMPLATE FOR DECLARING SBENTO CONTAINER ENTITY -->
<!-- Container shares storage object with SGML document entity in whose
DOCTYPE internal subset the sbento entity declarations occur. The
extents value "nnn" in the template is replaced by the position of
the first storage octet after the SGML document entity. -->
<!ENTITY bento1
SYSTEM "<ThisOne extents='nnn -1'>"
NDATA sbento
>
<!-- TEMPLATE FOR DECLARING SBENTO CONTAINED ENTITY -->
<!-- Contained entity occupies first 500 units of "bento1" entity. -->
<!ENTITY inbento1
SYSTEM "<sbento in=bento1>1 500"
>| Next Clause | Previous Clause |
HTML generated from the original SGML source using a DSSSL style specification and the SGML output back-end of the JADE DSSSL engine.