Formal System Identifers (FSIs)

Courtesy of Martin Bryan

The use of FSIs is indicated by the presence of a processing instruction at the start of the document. This processing instruction must conform to the following template:

              <!-- FSI Storage Managers Declaration -->
         <!-- TEMPLATE FOR PI IN DTD OR DERIVED META-DTD -->

<?FSISM SMName-list FSIDefDoc="external-id" >

The storage managers defined in the SMName-list must all be declared as SGML Notations that conform to the following template:

              <!-- Other Storage Manager Attributes -->
       <!-- TEMPLATE FOR DECLARATION OF ANY STORAGE MANAGER -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!ATTLIST #NOTATION SMName3
                   extents  -- Dimensions of occupied extents of object --
                            -- Constraint: applies to storage octets;
                               quantum is an octet --
                            -- Constraint: interpreted as HyTime dimlist --
                            -- lextype(snzi, snzi)+ --
                            CDATA    "1 -1"    -- Default: entire object --
                   smcrd    -- Storage manager character reference delimiter --
                            -- Constraint: single character --
                            CDATA    #IMPLIED  -- Default: none --
                   compress -- Compression information --
                            -- lextype(NOTATION) --
                            CDATA    #IMPLIED  -- Default: none --
                   encrypt  -- Encryption information --
                            -- lextype(NOTATION) --
                            CDATA    #IMPLIED  -- Default: none --
                   seal     -- Integrity information --
                            -- lextype(NOTATION) --
                            CDATA    #IMPLIED  -- Default: none --
>
<!NOTATION md5      PUBLIC "-//IETF/RFC1544//NOTATION FSIATT SEAL
                    MD5     Content-MD5 Header Field//EN" >

The formal productions used to describe an FSI are:

fsi =
entuse-start-tag? sos-sequence ("|" sos-sequence)*
sos-sequence =
sos+
sos =
sos-start-tag soi (sos-end-tag | "</>")?

soi is the formal description of the location according to the rules laid down in the new HyTime annex that will describe this facility.

The optional entuse-start-tag can only be present if support for the entuse notation has been declared. This notation is defined as:

                   <!-- Entity Usage Attributes -->
            <!-- THIS IS A NON-MANDATORY STARTER SET. -->
<!NOTATION entuse   PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM SYNTAX
                    Entity Usage Start-tag//EN"
>
<!ATTLIST #NOTATION entuse
                   included -- Entities included from notation data --
                            ENTITIES #IMPLIED  -- Default: no inclusions --
                   modlevel -- Modification level --
                            -- 1st: 0 when created; incremented when modified.
                         2nd: Set to 1st when validated by application. --
                            -- lextype(number, number) --
                            NUMBERS  #IMPLIED  -- Default: not tracked --
                   altreps  -- Alternative representations of this entity --
                            -- Modgens can be compared for integrity checking --
                            -- lextype(ENTITIES) --
                            NAMES    #IMPLIED  -- Default: none --
                   encoding -- Platform-dependent encoding information --
                            -- Constraint: bit-combination size and "word"
                               size, expressed as permutation of normalized
                               word of 2, 4, or 8 bit combinations.
                               MSB is leftmost and numbered "1" --
                            -- Normalized="8 12", "8 1234", "8 12345678"
                               Example: Intel="8 21", "8 2143", "8 21436587" --
                            -- lextype(number, number) --
                            NUMBERS  "8 12"
>

The sos-start-tag and sos-end-tag are tags for which the generic identifier matches one of the names declared in the SMName-list.

The following default set of storage managers are defined in the new annex:

                   <!-- Local Storage Managers -->
             <!-- PART OF A NON-MANDATORY STARTER SET -->
<!NOTATION osfile   PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM LOCAL
                    Operating System File//EN" >
<!ATTLIST #NOTATION osfile
                   SOIbase -- Base for relative SOI --
                           -- Constraint: For SMs that allow relative SOI--
                           CDATA    #IMPLIED  -- Default: object in
                           which SOS occurs if in same SM, else none -->

<!NOTATION osfd     PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM LOCAL
                    Operating System File Descriptor//EN" >

<!NOTATION NameExt  PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM LOCAL
                    Generic Name.Extension//EN" >
<!ATTLIST #NOTATION NameExt
                    SOIbase  -- Base for relative SOI --
                             -- Constraint: For SMs that allow relative SOI--
                             CDATA    #IMPLIED  -- Default: object in
                                which SOS occurs if in same SM, else none --

                  <!-- Portable Storage Managers -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!NOTATION url      PUBLIC "-//IETF/RFC1738//NOTATION FSISM PORTABLE
                    World Wide Web Uniform Resource Locator//EN">
<!ATTLIST #NOTATION url
                   SOIbase  -- Base for relative SOI --
                            -- Constraint: For SMs that allow relative SOI--
                            CDATA    #IMPLIED  -- Default: object in
                               which SOS occurs if in same SM, else none -- >

                   <!-- Global Storage Managers -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!NOTATION literal  PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM GLOBAL
                    Literal Text//EN" >

<!NOTATION ThisOne  PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM GLOBAL
                    This Storage Object//EN">
<!ATTLIST #NOTATION ThisOne
                   entity   -- Entity whose bit combinations are used --
                            -- Constraint: ''=this entity --
                            CDATA    #IMPLIED  -- Default: the octets
                               of this storage object -->

                 <!-- Container Storage Managers -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!NOTATION tar      PUBLIC "ISO/IEC 9941-1:1990//NOTATION FSISM CONTAINER
                    Posix Tape ARchive//EN"
           -- Creates container by partitioning storage object to
              emulate file system directory structure. --
           -- SOI is a file identifier. -->
<!ATTLIST #NOTATION tar     -- Attributes of tar CONTAINER notation. --
                   in       -- Container in which this object is stored --
                            -- lextype(ENTITY|fsi) --
                            CDATA    #IMPLIED  -- Default: Most recently
                                     declared entity of this SM type. If
                                     none, the entity in which this
                                     declaration occurs. -->

<!NOTATION mime     PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM CONTAINER
                    Multimedia Internet Mail Extensions//EN"
           -- Creates container by separating stored entities with a
              unique boundary string and identifying them with headers. --
           -- SOI is a MIME content-ID. -->
<!ATTLIST #NOTATION mime    -- Attributes of mime CONTAINER notation. --
                   in       -- Container in which this object is stored --
                            -- lextype(ENTITY|fsi) --
                            CDATA    #IMPLIED  -- Default: Most recently
                                     declared entity of this SM type. If
                                     none, the entity in which this
                                     declaration occurs. -->

A generalized mechanism is provided for defining container notations based on the sbento concepts:

   <!-- Standard Bento Entity for Natural Transport of Objects -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!NOTATION sbento  PUBLIC "ISO/IEC 10744:1992//NOTATION FSISM CONTAINER
                   Standard BENTO//EN"
           -- Creates container by partitioning storage object into
              bit combinations that can be occupied by entities. --
           -- SOI is number list that counts bit combinations. --
           -- SOI constraint: interpreted as HyTime dimlist --
           -- SOI lextype(snzi |(snzi, snzi)+) -->
<!ATTLIST #NOTATION sbento  -- Attributes of sbento CONTAINER notation. --
                   in       -- Container in which this object is stored --
                            -- lextype(ENTITY|fsi) --
                            CDATA    #IMPLIED  -- Default: Most recently
                                     declared entity of this SM type. If
                                     none, the entity in which this
                                     declaration occurs. -->

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

For record related storage managers the following attributes can be applied:

                  <!-- Record-related Attributes -->
       <!-- TEMPLATE FOR DECLARATION OF ANY STORAGE MANAGER -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!ATTLIST #NOTATION SMName1
                   records  -- Record boundary recognition --
                              (find|cr|lf|crlf|lfcr|rms|asis)
                            -- Default: find, except "asis" for NDATA
                               entities and those whose FSIs are in
                               SOs with records=asis. --
                   tracking -- Record boundary tracking in messages --
                            -- Constraint: SGML entities only --
                            (track|notrack) track
                       <!-- BCTF Attribute -->

The concept of Bit Combination Transformation Formats (BCTF) can also be applied to allow data to be converted from its generated to its transmitted formats. The following attributes are defined for this purpose:

       <!-- TEMPLATE FOR DECLARATION OF ANY STORAGE MANAGER -->
            <!-- PART OF A NON-MANDATORY STARTER SET. -->
<!ATTLIST #NOTATION SMName2
                   bctf     -- Bit combination transformation format --
                            -- Constraint: SGML, CDATA, SDATA entities only --
                            -- lextype(NOTATION) --
                            NAME     same>

The starter set of transformations defined in the standard is:

                       <!-- BCTF Algorithms -->
            <!-- THIS IS A NON-MANDATORY STARTER SET. -->
<!NOTATION identity PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    IDENTITY BCTF Algorithm//EN" >
<!NOTATION fixed-2  PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    FIXED-2  BCTF Algorithm//EN" >
<!NOTATION fixed-3  PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    FIXED-3  BCTF Algorithm//EN" >
<!NOTATION fixed-4  PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    FIXED-4  BCTF Algorithm//EN" >
<!NOTATION utf-8    PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    UTF-8    BCTF Algorithm//EN" >
<!NOTATION utf-7    PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    UTF-7    BCTF Algorithm//EN" >
<!NOTATION euc-jp   PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    EUC-JP   BCTF Algorithm//EN" >
<!NOTATION sjis     PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    SJIS     BCTF Algorithm//EN" >
<!NOTATION unicode  PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    UNICODE  BCTF Algorithm//EN" >
<!NOTATION iso88591 PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    ISO88591 BCTF Algorithm//EN" >
<!NOTATION iso88592 PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    ISO88592 BCTF Algorithm//EN" >
<!NOTATION iso88593 PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    ISO88593 BCTF Algorithm//EN" >
<!NOTATION iso88594 PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    ISO88594 BCTF Algorithm//EN" >
<!NOTATION same     PUBLIC "ISO/IEC 10744:1992//NOTATION FSIATT BCTF
                    SAME     No change in BCTF Algorithm//EN" >
Return to Top