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 ClausePrevious Clause  

homeParent clauseNext major clausePrevious major clauseNext clause at this levelPrevious clause at this level


A.6 Formal System Identifier Definition Requirements (FSIDR)

A.6.7 Storage manager notation forms

Subclauses:


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.

A.6.7.1 Local storage manager notation form

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 --
>

A.6.7.2 Starter set local storage managers

The starter set local storage managers are:

osfile

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.

osfd

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
>

A.6.7.3 Portable storage manager notation form

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 --
>

A.6.7.3.1 URL Portable storage manager

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
>

A.6.7.3.2 Neutral file identifier storage manager

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 on a DOS system

<osfile>entities\e1.sgm

osfile on a Mac system

<osfile>:entities:e1.sgm

osfile on a Unix system

<osfile>entities/e1.sgm

url

<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
>

A.6.7.3.3 Notation processor storage manager notation form

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
>

A.6.7.3.4 Notation processor storage managers

The starter set notation storage manager is:

mimetype

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
>

A.6.7.4 Global storage manager notation form

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 --
>

A.6.7.5 Global storage managers

The starter set global storage managers are:

literal

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.

ThisOne

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 --
>

A.6.7.6 Container storage manager notation form

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. --
>

A.6.7.6.1 Container storage managers

The starter set of container storage managers is:

tar

Posix tape archive.

mime

Mime single-part or multi-part message.

sbento

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
>

A.6.7.6.2 Standard BENTO (sbento)

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 ClausePrevious Clause  

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.


HTML generated from the original SGML source using a DSSSL style specification and the SGML output back-end of the JADE DSSSL engine.