MIMESGML Working Group                                       E. Levinson
Internet Draft: MIME/SGML                                    XIson, Inc.
<draft-ietf-mimesgml-encap-03.txt>                       5 February 1996

                   Encapsulating SGML Documents Using
                   the Multipart/Related Content-Type

This draft document is being circulated for comment.  Please send your
comments to the authors or to the sgml-internet mail list sgml-
internet@ebt.com.

Archives of the email discussions are available at
ftp://ftp.naggum.no:/pub/archives/sgml-internet.

Status of this Memo

This document is an Internet Draft; Internet Drafts are working
documents of the Internet Engineering Task Force (IETF) its Areas, and
Working Groups.  Note that other groups may also distribute working
documents as Internet Drafts.

Internet Drafts are draft documents valid for a maximum of six months.
They may be updated, replaced, or obsoleted by other documents at any
time.  It is not appropriate to use Internet Drafts as reference
material or to cite them other than as a "working draft" or  "work in
progress".

Please check the abstract listing in each Internet Draft directory for
the current status of this or any other Internet Draft.

Abstract

This document describes an encapsulation of a Standard
Generalized Markup Language (SGML) document within a MIME
message.  The document may be represented in the message by
some or all of its components.  The MIME message may also
include auxiliary information to be used by the recipient in
processing the encapsulated SGML.  This document proposes a
new content sub-type Application/SGML-notation, and a new
header, Content-SGML-Entity.

This specification uses the proposed Multipart/Related
Content-Type [RFC-1872] which provides the mechanism for
treating the set of SGML components as a single object.







Levinson                 Expires August 15, 1996                [Page 1]


Internet Draft                                                 MIME-SGML


                        Table of Contents

1.      Introduction ...................................    2
        Terminology ....................................    3
2.      A Model for a MIME/SGML Encapsulation ..........    4
2.1.    The Helper Application .........................    5
2.2.    Data Entities ..................................    6
2.3.    Application/SGML-Notation ......................    6
3.      The Content-SGML-Entity Header .................    6
4.      Encapsulating the SGML Entities ................    9
4.1.    The Multipart/Related Media-Type ...............   10
4.2.    Examples .......................................   10
4.2.1.  Implied SGML Declaration .......................   10
4.2.2.  An SGML Text Entity ............................   11
4.2.3.  A Notation Declaration .........................   12
4.2.4.  Script-based Notation ..........................   12
4.2.5.  Active and Doctype Parameter Usage .............   12
4.2.6.  Auxiliary Information ..........................   13
5.      Independent SGML Entities ......................   14
6.      Security .......................................   14
7.      References .....................................   15
8.      Acknowledgments ................................   16
9.      Author's Address ...............................   16

        Appendix: An Extended Example ..................   17
        Change History .................................   19

1.   Introduction

A need exists for the transfer via email of documents
constructed using the Standard Generalized Markup Language
(SGML) [ISO-8879].  A document transfer consists of a set of
the documents components sufficient to enable the receiver to
process the document.  Such processing might consist of
displaying the document or a portion of it, interacting with a
local application, or other appropriate action.

SGML documents consist of a set of inter-related components,
or SGML entities, whose relationship must be preserved
independently of the system on which the document exists.  The
components and their relationships are often represented as
files with explicit internal references to the other
components (files).

The goal for the MIME encapsulation of SGML is to permit
sending, via email, the entities needed for a receiving system
to display (or process) the SGML document without imposing
requirements on the receiver's SGML system beyond [ISO-8879].



Levinson                 Expires August 15, 1996                [Page 2]


Internet Draft                                                 MIME-SGML


The encapsulation augments the standardized facilities of
[ISO-8879] with MIME [RFC-1521] features.  To support a wide
variety of SGML implementations the encapsulation provides the
receiver, via a Content-SGML-Entity header, the the SGML
entity and notation declaration information.

The SGML Open Consortium has defined a catalog [TR9401] for
which extensions [EXCH] have been defined to support the
exchange of SGML using MIME.  Exchanges between SGML systems
that support [TR9401] and [EXCH] will be simplified by using
[EXCH].

No assumptions beyond [ISO-8879] are made about the
capabilities of the receiver's SGML system.  It may be a
general purpose SGML engine or a specialized application based
on a specific SGML document type definition.  As discussed in
section 2, a receiver may need to interpose an additional
application layer between the MIME User Agent and the SGML
system.

It is assumed that the sending and receiving parties' SGML
environment contains sufficient information (well known SGML
entities) to allow only a limited number of entities,
typically the marked up text, to be included in the email
message.

Sections 2 and 3 define the basic elements for labeling the
SGML entities.  Section 4 describes the encapsulation and
provides examples of the documents entities within a single
Multipart MIME entity.  Section 5 describes the handling of
SGML entities not included within an Multipart/Related body
part.

Terminology

The Standard Generalized Markup Language (SGML) is used to
encode document structure and a rigorous description of it is
left to [ISO-8879].  The terms used in the present document
attempt to be consistent with SGML terminology and usage.

Both SGML and MIME use the term "entity" to refer to their
basic components.  Here the use of "entity" generally connotes
an SGML entity.  For MIME entities, body part is used; in some
contexts that proves awkward and "MIME entity" is used
instead.  The context hopefully makes such usage clear.

Two SGML terms, SGML Document and SGML Document Entity, are
used in this paper and the difference between them is



Levinson                 Expires August 15, 1996                [Page 3]


Internet Draft                                                 MIME-SGML


significant.  An SGML Document [ISO-8879, 4.282] is the entire
collection of objects or entities that make up a document.
Those objects include markup definitions, text with SGML
markup, plain text, image data, etc.  An SGML document entity
[ibid., 4.283], on the other hand, is the specific object with
which an SGML system begins processing the SGML document.

2.   A Model for a MIME/SGML Encapsulation

An SGML document exists as a collection of one or more
entities; entities are system independent analogues to files.
Those SGML entities are mapped to storage objects or files and
the mapping may be one-to-one, many-to-one, or one-to-many.
The SGML document refers to the storage objects via entity
declarations.  The declarations may define the name and type
of storage object or provide a name by which an SGML system
can map the declared entity to a storage object.  Preservation
of the structure of references from one entity to another,
known in SGML as the entity structure, are key to the email
exchange of SGML documents.

In addition to preserving the entity structure, several other
issues must be addressed by the application that displays or
processes the SGML elements in the MIME message.  The MIME
encapsulation described here provides the information a
"helper" application needs to resolve these issues.  The
helper application, invoked by the MIME User Agent, performs
any pre-processing that may be required.  It may display or
process the the SGML entities itself or invoke another SGML
engine for that purpose.

The issues to be addressed are as follows.  The entity
declarations for the SGML entities included in the message
must be resolved to corresponding references on the receiver's
system.  Similarly, the references to processors for non-
parsable SGML data, declared in SGML notation declarations,
must be resolved to valid processors on the receiving system.
An appropriate helper application must be provided with access
to all the encapsulated MIME body parts and header information
before any SGML processing can begin.  Finally, character
encoding of the MIME encapsulated SGML text entities must
conveyed to the recipients.

The these issues are addressed in the following manner.  A new
header, Content-SGML-Entity, provides the entity description
for the body part containing the entity, making the sender's
entity declaration information available to the helper
application.  The helper application may then provide to the



Levinson                 Expires August 15, 1996                [Page 4]


Internet Draft                                                 MIME-SGML


SGML system whatever information it requires.  Notation
information, carried in an Application/SGML-Notation body
part, along with its Content-SGML-Entity header information
associates notation declarations with MIME media types.  The
Multipart/Related MIME media type labels the SGML entities as
a unit allowing the MIME User Agent to invoke the appropriate
process.  Text/SGML and Application/SGML [RFC-1874] media
types provide parameters to label the SGML text entity
encodings.  A group of SGML entities, encapsulated within the
same Multipart/Related MIME entity, form an SGML MIME
encapsulation.

Auxiliary information, such as style sheets and catalogs, to
be used in processing the SGML document, may be included in
the MIME message.  The information is referenced through the
Multipart/Related start-info parameter.

Not all the entities that constitute an SGML document need to
be included in the document's MIME encapsulation.  Communities
or individuals may often agree to include only a subset of the
SGML entities.  For example certain communities use standard
SGML document type definitions (DTDs), within those
communities the DTD and other similar SGML entities need not
be included in the encapsulation.  Other communities may only
want to encapsulate a minimal entity or set of entities and
include auxiliary information to enable the recipient to
retrieve any additional entities the recipient requires.  The
description of such community agreements, auxiliary
information, and protocols for requesting additional entities
are beyond the scope of this RFC.

2.1  The Helper Application

The helper application, invoked by the MIME User Agent for
"Multipart/Related; type=Text/SGML" (or Application/SGML),
will depend on the manner in which the MIME User Agent
presents the header information.  There are no existing
standards for that interface.

The helper application, if it does not display or process the
document itself, also depends on the characteristics of the
SGML system that does.  SGML defines an Entity Manager
[ISO-8879, 4.123] that performs the mapping between SGML
entities and the local file system.  Depending on the
capability of the entity manager the helper application may
store the entities in pre-determined locations, create mapping
file entries for an SGML entity manager, create catalog
entries for an entity manager that uses them, or parse the



Levinson                 Expires August 15, 1996                [Page 5]


Internet Draft                                                 MIME-SGML


SGML prolog (DTD) and modify the relevant entity declarations
to point to the received entities.  The helper application,
when invoking the SGML system, can also provide information
from the Multipart/Related start-info parameter.

2.2. SGML Data Entities

Data entities that contain parsable SGML data shall be
included as body parts whose media type is Text/ or
Application/SGML [RFC-1874].

Data entities that contain data but are not be parsable as
SGML shall be included as MIME body parts whose media types
reflect the data content, i.e., Text/Plain, Image/JPEG, etc.

2.3. Application/SGML-Notation

     MIME type name:          Application
     MIME subtype name:       SGML-Notation
     Required parameters:     none
     Optional parameters:     none
     Encoding considerations: none
     Security considerations: none
     Published specification: This document
     Person and email address to contact for further information:
                     E. Levinson <XIson@cnj.digex.net>

The Application/SGML-Notation media type provides the connec-
tion between the document's SGML notation declarations and
MIME media types.  The MIME entity must contain a Content-
SGML-Entity corresponding to the notation's declaration.  The
body of the SGML-Notation MIME entity contains a Content-Type
header that specifies the media type associated with the name
parameter of the Content-SGML-Entity statement.

Some SGML notation declarations may correspond to a script for
an active media type (e.g., java).  In those cases a MIME
entity with the corresponding media type should be used.  That
MIME entity shall contain an appropriate Content-SGML-Entity
header.

3.   The Content-SGML-Entity Header

The Content-SGML-Entity (cse) header is required when encapsu-
lating an SGML document within a Multipart/Related MIME
entity.  The header contains information from the SGML entity
declaration corresponding to the entity contained in the body
of the body part.



Levinson                 Expires August 15, 1996                [Page 6]


Internet Draft                                                 MIME-SGML


Data for an entity catalog, defined in [TR9401], can be gener-
ated by the receiving agent using the cse header data and the
stored entity's local file name.

The Content-SGML-Entity header is defined as follows.

     entity-header := "Content-SGML-Entity" ":"
               "decl-type" "=" decl-type
               *( ";"  cse-parm )

     decl-type     := "doctype" / "linktype"  /
                "general" / "parameter" /
                "baseset" / "capacity"  / "syntax"

     cse-parm      := cse-attr "=" value /

     cse-attr      := "active" / "doctype" /
               "linktype" / "name" / "notation-name" /
               "public-id" / "public-id-ver" /
               "system-id" / extension-token

     value         := token / quoted-string   ; c.f. [RFC-1521]

     extension-token := ( "X-" / "x-" ) token
               ; no intervening white space


The header parameters provide information from, and about, the
entity declaration for the SGML entity contained in the MIME
body part.  The name, notation-name, public-id, and system-id
parameter values come directly from the SGML entity declara-
tion.  The decl-type, doctype, and public-id-ver describe the
entity declaration's environment.  Finally, the active parame-
ter provides parsing context information.

active      Specifies the name of an active document type or
            link type.  The parameter is used for document
            entities when the prolog contains more than one
            document or link type declaration.  The parameter
            can occur multiple times, once for each active
            document or link type and SGML entity parsing
            occurs with respect to the active document or link
            types.  This parameter is only applicable to docu-
            ment entities (decl-type=doctype).

decl-type   A string specifying the entity declaration type.
            Decl-type is a token specifying how the entity was
            declared.  Within an SGML document or subdocument



Levinson                 Expires August 15, 1996                [Page 7]


Internet Draft                                                 MIME-SGML


            each entity type constitutes a unique name space.
            The possible values for decl-type are:

            doctype   An entity containing an external DTD
                      subset, declared in a <!DOCTYPE ... >
                      declaration; the name in this case would
                      be the document type name.

            baseset   An entity declared by a public identi-
                      fier in a base character set [production
                      174, ISO-8879, 13.1.1.1].

            capacity  An entity declared by a public identi-
                      fier in a capacity set [180, ISO-8879,
                      13.2].

            general   An entity declared in a entity declara-
                      tion as a general entity

            linktype  An entity containing an external Link
                      Process Definition subset, declared in a
                      linktype declaration; the name parameter
                      is the link type name.

            notation  The header describes a notation declara-
                      tion and, for Application/SGML-notation,
                      the body of the MIME body part contains
                      a content-type header giving the MIME
                      content type corresponding to the nota-
                      tion name or, for other media types, a
                      script or description of the processing
                      that the notation specifies.

            parameter An entity declared in an entity declara-
                      tion as parameter entity.

            syntax    An entity declared by a public identi-
                      fier in a public concrete syntax [183,
                      ISO-8879, 13.4].

doctype     A string specifying the document type name of the
            DTD subset in which the entity was declared, if
            the entity was declared in a DTD subset other than
            the base DTD subset.  This parameter applies only
            to entities with a decl-type of "general", "nota-
            tion", or "parameter".





Levinson                 Expires August 15, 1996                [Page 8]


Internet Draft                                                 MIME-SGML


extension-token
            A parameter not defined in this document and
            agreed upon by the parties using it, a group of
            consenting adults.

linktype    A string specifying the link type name of the Link
            Process Definition (LPD) subset in which the
            entity was declared, if the entity was declared in
            an LPD subset.  This parameter is required only
            for entities with a decl-type of "general" or
            "parameter".

name        A string giving the name of the entity and is
            omitted if the entity has no name.

notation-name
            The notation name of an external entity.  Not
            valid if the decl-type is "notation".  The value
            of this parameter corresponds to the value of a
            Content-SGML-Entity header name parameter.

public-id   The public identifier in the entity's declaration.

public-id-ver
            The display version if a public text display ver-
            sion was not present in the public id.  Use this
            the parameter only if a device dependent display
            version was used.

system-id   The system identifier in the entity's declaration.

MIME headers, including the cse header only contain US-ASCII
characters [US-ASCII].  SGML entity declarations, on the other
hand, will contain characters from the SGML document's charac-
ter set.  Characters in that set that are not US-ASCII should
be represented as an SGML numeric character reference in the
reference concrete syntax (e.g., "&#nnn;", where "nnn" is the
integer code position of the character).

4.   Encapsulating the SGML Entities

The SGML document's must be processed as a unit, handling the
MIME body parts individually is not sufficient.  The MIME Mul-
tipart/Related provides the framework for handling the SGML
composite structure.

An SGML document can recursively contain subdocuments each of
which has its own entity structure.  The name spaces for SGML



Levinson                 Expires August 15, 1996                [Page 9]


Internet Draft                                                 MIME-SGML


entities are wholly contained within a subdocument.  Conse-
quently the entity names specified on a Content-SGML-Entity
header must preserve those name spaces.  The header's doctype
parameter provides the information needed to identify the cor-
rect name space.  This avoids the need to have recursive Mul-
tipart/Related encapsulations.

4.1. The Multipart/Related Media-Type

The Multipart/Related [RFC-1872] media type contains a set of
related body parts, in this case entities in an SGML document,
and its "start" parameter names the body part within the MIME
entity with which processing starts, i.e. the SGML document
entity.  If there is no start parameter then the first MIME
entity in the Multipart/Related must be the SGML document
entity.

The Multipart/Related "type" parameter shall be the media type
of the SGML document entity, Text/ or Application/SGML.  The
"start-info" parameter can contain a list of one or more con-
tent references which provide alternative sets of auxiliary
information, e.g. stylesheets, catalogs, etc.  The receiving
agent shall accept the first such set of information that it
can use.

Below are sample excerpts of an encapsulated SGML document, an
appendix contains an extended example.

4.2. Examples

The following examples point out some of the key features of
the MIME/SGML encapsulation.  The examples cover a combined
prolog and instance with an implied SGML declaration, the use
of the Content-SGML-Entity, Application/SGML-notation, active
parameter, and auxiliary information.

4.2.1.    Implied SGML Declaration

Consider the following document instance which includes the
SGML prolog, but which implies the SGML declaration.

     <!DOCTYPE book PUBLIC
          "-//Acme//DTD Book//EN"
     "/home/users/sgml/dtds/book.dtd"
     [
     <!ENTITY chap1 PUBLIC "-//Acme//TEXT chapt1//EN">
     <!ENTITY chap2 SYSTEM>
     <!ENTITY chap3 SYSTEM "chapt3.sgml">



Levinson                 Expires August 15, 1996               [Page 10]


Internet Draft                                                 MIME-SGML


          <!NOTATION jxz SYSTEM "/usr/local/bin/jxz">
          <!ENTITY fig1  SYSTEM "fig1.jxz" NDATA jxz>
     ]>
     <book> &chap1; &chap2; &chap3; </book>

The Multipart/Related MIME entity's start parameter's value is
the content-id of the MIME body part containing the document
entity.

     MIME-Version: 1.0
     Content-Type: Multipart/Related; boundary=tiger-lily
        start="<doc.950209.1430@Acme.com>"; type="application/SGML"

     --tiger-lily
          ...
     --tiger-lily
     Content-Type: Application/SGML
     Content-ID: <doc.950209.1430@Acme.com>

     <!DOCTYPE book PUBLIC
          "-//Acme//DTD Book//EN"
     "/home/users/sgml/dtds/book.dtd"
     [
     <!ENTITY chap1 PUBLIC "-//Acme//TEXT chapt1//EN">
     <!ENTITY chap2 SYSTEM>
     <!ENTITY chap3 SYSTEM "chapt3.sgml">
          <!NOTATION jxz SYSTEM "/usr/local/bin/jxz">
          <!ENTITY fig1  SYSTEM "fig1.jxz" NDATA jxz>
     ]>
     <book> &chap1; &chap2; &chap3; </book>
     --tiger-lily
          ...


4.2.2.    An SGML Text Entity

The entity "chap3" would be a MIME body part such as

     --tiger-lily
     Content-Type: Text/SGML
     Content-SGML-Entity: decl-type=general; name=chap3;
        system-id="chapt3.sgml"

     <chapt><H1>This is chapter THREE ...</chapt>
     --tiger-lily

Here, as in most other situations the cse header describes the
entity contained in the body part.



Levinson                 Expires August 15, 1996               [Page 11]


Internet Draft                                                 MIME-SGML


4.2.3.    A Notation Declaration

The notation declaration contained in the SGML prolog will be
represented as a separate body part.

     --tiger-lily
     Content-Type: Application/SGML-notation
     Content-SGML-Entity; decl-type=notation;
        name=jxz; system-id="/usr/local/bin/jxz";

     Content-type: Image/JPEG

     --tiger-lily

Note: It can be argued that a separate MIME body part associ-
ating an SGML notation declaration name with a MIME media type
is redundant; the association exists in the body part contain-
ing the actual data.  The content-type header gives the media
type and the Content-SGML-Entity header, the notation name.
That, however, does not suffice for entities that are not
included in the message.  The associations between the nota-
tion name and the MIME type may still be needed.

4.2.4.    Script-based Notation

Consider a notation declaration in which the non-SGML data is
processed by a script interpreted by a local process.  The
script interpreter is identified by the media type Applica-
tion/X-active.

          ...
     --tiger-lily
     Content-Type: Application/X-active
     Content-SGML-Entity: decl-type=notation; name=actscr;
        system-id="/usr/local/bin/active-scripts

     [an X-active script]
     --tiger-lily
          ...


4.2.5.    Active and Doctype Parameter Usage

In the example below, two document type declarations are
given, one of which is active.  Additionally one other entity
is included and is labeled as to which document type contained
the declaration.




Levinson                 Expires August 15, 1996               [Page 12]


Internet Draft                                                 MIME-SGML


     MIME-Version: 1.0
     Content-Type: Multipart/Related;
        start=<AAA.950711.1120@XIson.com>;
        type=Text/SGML; boundary="tiger-lily"

     --tiger-lily
     Content-Type: Text/sgml
     Content-ID: <AAA.950711.1120@XIson.com>
     Content-SGML-Entity: decl-type=doctype; active=usrgde

     <!DOCTYPE usrgde
          PUBLIC "-//Acme//DTD User Guide//EN"
          SYSTEM "/home/users/sgml/dtds/user-guide.sgml"
          [   <!ENTITY chap2 SYSTEM> ]
     >
     <!DOCTYPE admin
          PUBLIC "-//Acme//DTD System Administration Manual//EN"
          SYSTEM "/home/users/sgml/dtds/admin-man.sgml"
          [   <!ENTITY chap3 SYSTEM> ]
     >
     <book> ... &chap2; ... </book>
     --tiger-lily
          ...
     --tiger-lily
     Content-Type: Text/sgml
     Content-SGML-Entity: name=chap2; decl-type=general;
        doctype=usrgde;

     This is Chapter 2 of a User Guide ...
     --tiger-lily--


4.2.6.    Auxiliary Information

This example show the inclusion of Auxiliary information.  The
SGML-Open-Catalog contains a catalog with keywords defined in
[TR9401].  In this example the catalog is included inside the
Multipart/Related MIME entity.


     MIME-Version: 1.0
     Content-Type: Multipart/Related;
        start=<AAA.950711.1120@XIson.com>;
        type=Text/SGML; boundary="tiger-lily"

     --tiger-lily
     Content-Type: Text/SGML
     Content-ID: <AAA.950711.1120@XIson.com>



Levinson                 Expires August 15, 1996               [Page 13]


Internet Draft                                                 MIME-SGML


     <!DOCTYPE ...>
     --tiger-lily
     Content-Type: Application/SGML-Open-Catalog
     Content-ID: <AAA.950711.1120@XIson.com>

     ENTITY chap2 "/home/users/widget/chapt2.sgml"
     ENTITY chap3 "/home/users/widget/chapt3.sgml"
     PUBLIC "-//Acme//TEXT chapt1//EN"
            "ftp://ftp.acme.com/sgml/widget/chapt1.sgml"
     PUBLIC "-//Acme//DTD Book//EN"
            "ftp://ftp.acme.com/sgml/dtds/book.dtd"
     PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols:
          Arrow Relations//EN"
            "ftp://ftp.acme.com/sgml/entities/arrow.sgml"
     PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols:
          Binary Operators//EN"
            "ftp://ftp.acme.com/sgml/entities/binops.sgml"
          ...
     --tiger-lily--


5.   Independent SGML Entities

Independent SGML and data entities included in MIME messages
constitute independent MIME body parts and are not included
within a Multipart/Related MIME entity.  The SGML entities
shall have the SGML media types appropriate to the data being
sent; data entities shall use the media type corresponding to
their notation declaration.

Content-SGML-Entity headers can be used with body parts that
are not included within any Multipart/Related MIME entity.
This allows, for example, a receiving agent to add an entry to
a catalog or mapping file indicating the location in which the
received entity was stored.

6.   Security

SGML documents, like other compound documents, may contain
entities whose media types present security concerns, e.g.
Application/PostScript.  Further SGML may contain explicit
processing instructions for a presentation or composition sys-
tem; use of such instructions present concerns similar to
those of Application/PostScript.

The use of active media types with Notation declarations can
provide an opportunity for the sender to execute a script or
other code on the recipient's machine.  Unpacking software



Levinson                 Expires August 15, 1996               [Page 14]


Internet Draft                                                 MIME-SGML


should alert the user when such situations arise.

7.   References

[ISO-8824]  ISO 8824, Information processing systems -- Open
            System Interconnection -- Specification of
            Abstract Syntax Notation One (ASN.1).

[ISO-8879]  ISO 8879:1986, Information processing -- Text and
            office systems -- Standard Generalized Markup Lan-
            guage (SGML).

[ISO-10744] ISO/IEC 10744:1992, Information technology --
            Hypermedia/Time-based Structuring Language
            (HyTime) (as modified by First Proposed Technical
            Corrigendum, ISO/IEC JTC1/SC18 N5027)

[RFC-822]   Crocker, D., Standard for the Format of ARPA
            Internet Text Messages, August 1982, University of
            Delaware, RFC 822, STD 11.

[RFC-1521]  N. Borenstein, N. Freed, "MIME  (Multipurpose
            Internet Mail Extensions) Part One:  Mechanisms
            for Specifying and Describing the Format of Inter-
            net Message Bodies", 09/23/1993.

[RFC-1522]  K. Moore, "MIME (Multipurpose Internet Mail Exten-
            sions) Part Two: Message Header Extensions for
            Non-ASCII Text", 09/23/1993.

[RFC-1590]  J. Postel, "Media Type Registration Procedure",
            03/02/1994.

[RFC-1642]  D. Goldsmith, M. Davis, "UTF-7, A Mail-Safe Trans-
            formation Format of UNICODE", 07/13/1994

[RFC-1872]  E. Levinson, "The MIME Multipart/Related Content-
            type", Internet Draft, draft-ietf-mimesgml-
            related-03.txt, working draft.

[RFC-1874]  E. Levinson, "SGML Media Types", Internet Draft,
            draft-ietf-mimesgml-types-00.txt, working draft.

[TR9401]    SGML Open Consortium Technical Resolution
            9401:1995, "Entity Management", SGML Open

[US-ASCII]  Coded Character Set -- 7-Bit American Standard
            Code for Information Interchange, ANSI X3.4-1986.



Levinson                 Expires August 15, 1996               [Page 15]


Internet Draft                                                 MIME-SGML


8.   Acknowledgements

The editor has borrowed freely from the suggestions of others
and in particular lifted text from James J. Clark and Charles
F. Goldfarb (Information Management Consulting) and benefitted
from a number of discussions with them.  If any errors
occurred in translating their words into this text, rest
assure that the misinterpretation was mine.

The editor also acknowledges the contributions, suggestions,
and explanations provided by the following individuals: Terry
Allen (O'Reilly & Associates, Inc.), Harald T. Alvestrand
(UniNett), Nathaniel Borenstein (First Virtual Holdings Incor-
porated), Daniel W. Connolly (W3O), Steven DeRose (EBT), Roy
Fielding (University of California, Irvine), Andy Gelsey
(CSC), Paul Grosso (ArborText, Inc.), John Klensin (MCI), Erik
Naggum (Naggum Software), Gavin Nicol (EBT), Einar Stefferud
(Network Management Associates, Inc), and Don Stinchfield
(EBT).  No errors or faults in this document can be ascribed
to them, they're all mine.

9.   Author's Address

Ed Levinson
XIson@cnj.digex.net
XIson, Inc.
47 Clive Street
Metuchen, NJ  08840























Levinson                 Expires August 15, 1996               [Page 16]


Internet Draft                                                 MIME-SGML


                          APPENDIX.

                     An Extended Example

This example presents a variety of SGML entity declarations and the
corresponding Content-SGML-Entity headers.

MIME-Version: 1.0
Content-Type: Multipart/Related; boundary=tiger-lily
   start="<doc.950209.1430@Acme.com>"; type="application/SGML"

--tiger-lily
Content-Type: Application/SGML
Content-ID: <doc.950209.1430@Acme.com>

<!DOCTYPE book PUBLIC
     "-//Acme//DTD Book//EN"
"/home/users/sgml/dtds/book.dtd"
[
<!ENTITY chap1 PUBLIC "-//Acme//TEXT chapt1//EN">
<!ENTITY chap2 SYSTEM>
<!ENTITY chap3 SYSTEM "chapt3.sgml">
     <!NOTATION jxz SYSTEM "/usr/local/bin/jxz">
     <!ENTITY fig1  SYSTEM "fig1.jxz" NDATA jxz>
]>
<book> &chap1; &chap2; &chap3; </book>
--tiger-lily
Content-Type: Text/SGML
Content-SGML-Entity: decl-type=general; name=chap1;
   public-id="-//Acme//TEXT chapt1//EN"

<chapt><H1>This is chapter ONE ...</chapt>
--tiger-lily
Content-Type: Text/SGML;
Content-SGML-Entity: decl-type=general; name=chap2

<chapt><H1>This is chapter TWO ...</chapt>
--tiger-lily
Content-Type: Text/SGML
Content-SGML-Entity: decl-type=general; name=chap3;
   system-id="chapt3.sgml"

<chapt><H1>This is chapter THREE ...</chapt>
--tiger-lily
Content-Type: Application/SGML
Content-SGML-Entity: decl-type=doctype; name=book;
   public-id="-//Acme//DTD Book//EN";
   system-id="/home/users/sgml/dtds/book.dtd"



Levinson                 Expires August 15, 1996               [Page 17]


Internet Draft                                                 MIME-SGML


<--  Acme Widget Company  -->
<-- Instruction Book DTD -->
<!ENTITY % ISOlat1
  PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN">
  &Isolat1;
<!ENTITY % ISOamsa
  PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols:
       Arrow Relations//EN">
  &ISOamsa;
 ...
<!ELEMENT ...>
 ...

--tiger-lily
Content-Type: image/jpeg
Content-Transfer-Encoding: BASE64
Content-SGML-Entity: decl-type=general; name=fig1;
   system-id="fig1.jxz"; notation-name=jxz

[Base64 encoded binary image data]
--tiger-lily--






























Levinson                 Expires August 15, 1996               [Page 18]


Internet Draft                                                 MIME-SGML


Change History

Changes to version 03 (October 20, 1995)

Introduction and following sections rewritten and reorgainized to
reflect discussion on the sgml-internet list and to identify
assumptions and processing requirements.

Removed the discussion of SDIF and the figure and discussion of
a "receiving agent".

Removed Appendix B, "Notes for Implementors", that information now
duplicates materiel discussed in the body of the draft.

Changes to version 02 (July 12, 1995)


Section 1   Provided additional clarification of goals and
            assumptions.

            Moved all discussion of SDIF to section 6 and
            clarified language to indicate that the encapsula-
            tion can be used to encode an SDIF data stream and
            that the use of SDIF is not required.

Section 2   Added a diagram identifying the various processes
            in the model.

            Removed Text/ and Application/SGML registration
            information and replaced that with a statement
            referencing the separate type registration.  Clar-
            ified introductory remarks.

Section 3   Classified the Content-SGML-Entity parameters as
            to their purpose.  Added clarifications to the
            active parameter and the decl-type values "doc-
            type" and "notation".

Section 4   Eliminated the discussion of recursion and
            explained how SUBDOC name spaces are handled.

            Revised Auxiliary Information example (catalog).

References  Updated references to Internet Drafts.

Changes to version 00

Introductory and explanatory text has been changed and



Levinson                 Expires August 15, 1996               [Page 19]


Internet Draft                                                 MIME-SGML


expanded to eliminate any bias towards "complete" documents.

Added explanatory text covering auxiliary information, given
by the "start-info" Multipart/Related parameter.  Included
usage description for the "type" and "start-info" parameters.
Also added an example using "start-info".

Added "active" parameter to the Content-SGML-Entity header and
added an example showing its use.

Added additional detail to a number of examples and two more
examples.

Tightened up text discussion SDIF.





































Levinson                 Expires August 15, 1996               [Page 20]