MIMESGML Working Group E. Levinson Internet Draft: MIME/SGML ACCURATE Info. Sys. October 20, 1995 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/SGML-internet filed by date and time. 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 the 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. The RFC proposes new content sub-types of Text/SGML, Application/SGML, and Application/SGML-notation, and a new header, Content-SGML- Entity. This specification uses the proposed Multipart/Related Content-Type [RFC-REL] and access-type=content-id [RFC-ATCID] specifications. Multipart/Related provides the mechanism for treating the set of SGML components as a single object and access-type=content-type allows a several MIME entities to contain identical bodies without replicating the body in each Levinson Expires April 30, 1996 [Page 1] Internet Draft MIME-SGML MIME entity. Table of Contents 1. Introduction ................................... 3 1.1. Terminology .................................... 4 1.2. Standard Generalized Markup Language (SGML) .... 5 2. A Model for MIME/SGML .......................... 6 2.1. Application/SGML-Notation ...................... 7 2.2. Parsable SGML Data ............................. 7 2.3. Data Entities .................................. 8 3. The Content-SGML-Entity Header ................. 8 4. Encapsulting the SGML Entities ................. 12 4.1. The Multipart/Related Media-Type ............... 12 4.2. Examples ....................................... 12 4.2.1. Implied SGML Declaration ....................... 13 4.2.2. An SGML Text Entity ............................ 13 4.2.3. A Notation Declaration ......................... 14 4.2.4. Script-based Notation .......................... 14 4.2.5. Active and Doctype Parameter Usage ............. 15 4.2.6. Auxiliary Information .......................... 15 5. SGML Entities Not Part of a Document ........... 16 6. SGML Document Interchange Format (SDIF) ........ 16 7. Security ....................................... 17 8. References ..................................... 17 9. Acknowledgements ............................... 19 10. Author's Address ............................... 19 Apppendicies: A. An Extended Example ............................ 20 B. Notes for Implementors ......................... 22 0. Changes 0.02 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 encapsulation 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. Levinson Expires April 30, 1996 [Page 2] Internet Draft MIME-SGML Removed Text/ and Application/SGML registration information and replaced that with a statement referencing the separate type registration. Clarified 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 "doctype" 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. 0.01. Changes to version 00 Introductory and explanatory text has been changed and 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. 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 fo 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 structural relationship must be preserved independently of the system on which the document Levinson Expires April 30, 1996 [Page 3] Internet Draft MIME-SGML exists. The components and their relationships are often represented as files with explicit internal references to other components (files). The encapsulation described here permits such transfers using the Multipurpose Internet Mail Extensions (MIME) specification [RFC-1521]. The goals 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 with minimal effort and maximum flexibility and support all SGML constructs as defined in [ISO-8889]. To minimize the receiving system's effort, multiple parses of the SGML document can be avoided by using information from SGML entity and notation declarations. The Content-SGML-Entity header makes that information available at the MIME level without the receiver to parse the document. No assumptions are made about the capabilities of the SGML system other than its ability to parse and process SGML entities. It is assumed that the sending and receiving parties SGML environment contain sufficient information (well known SGML entities) to allow only the necessary 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 of the documents entities within a single Multipart MIME entity. The two sections following that describe the handling of incomplete or unparsable documents and the SGML Document Interchange Format (SDIF) [ISO-9069]. 1.1. Terminology 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 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. Levinson Expires April 30, 1996 [Page 4] Internet Draft MIME-SGML 1.2. Standard Generalized Markup Language (SGML) 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. 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. 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. To enable the receiver to efficiently process the encapsulated SGML document the MIME message must carry detailed information for each SGML entity in the Multipart/Related MIME body part. Additional information about displaying the document or about the document's entities may be included as auxiliary information. In the sender's environment the SGML entities may reference standard names, called formal public identifiers, or specific local files, or both. Further, some SGML entities may refer to other entities, for example files containing text, images, or graphics. The identity and content of each entity must be available to the recipients to enable them to transform the sender's entity references into an equivalent local reference and to instantiate the entities locally. This document Levinson Expires April 30, 1996 [Page 5] Internet Draft MIME-SGML describes the MIME encapsulation of an SGML document that preserves the entity structure and permits the recipient of the encapsulated document to automatically instantiate it locally. 2. A Model for MIME/SGML Four issues must be addressed for the recipient's user agent to display, or pass on to some process, the encapsulated SGML document. The various document parts must be specified and entity references on the sender's systems must be resolved to corresponding references on the receiver's system. Similarly, notation declarations, that is, references to processors for non-SGML data, must be resolved into valid processes on the receiving system. An appropriate application, a part of the unpacker called the receiving agent, must be in control to present the MIME body parts and the entity and notation information to the SGML processing software. Finally, the MIME encapsulated SGML text entities must be independent of the sender's system representation dependencies. 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 references available to the unpacker. The unpacker may then provide whatever information the SGML system requires. A new media type, for conveying process associations, is defined, Application/SGML-notation. 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-TYPES] media types provide labels for the SGML text entities and indicate their actual encodings. A group of SGML entities, encapsulated within the same Multipart/Related MIME entity, form an SGML MIME encapsulation. Auxiliary information, 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. SGML defines an Entity Manager [ISO-8879, 4.123] that performs the mapping between SGML entities and the local file system. The specification of that mapping is system dependent. Consequently each SGML entity shall be represented as one MIME Levinson Expires April 30, 1996 [Page 6] Internet Draft MIME-SGML entity. 2.1. 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: RFC-SGML Person and email address to contact for further information: E. Levinson The Application/SGML-Notation media type provides the connection 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., safe-Tkl). 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. In addition to the structure described above, figure 1, below, shows the relationships between the various elements of email and SGML. Note that the unpacker (packer), as described in [SDIF] corresponds to the combination of Receiving (Sending) Agent and MIME User Agent. The Receiving Agent (RA) gets invoked by the MIME User Agent and performs the functions needed to make the received MIME entities available to, and usable by, the SGML entity manager. The RA invokes SGML system. While it may be possible to include RA functionality in the SGML entity manager the RA provides a useful processing model element. Figure 1. SGML Encapsulation Processing Model 2.2. Parsable SGML Data Data entities that contain parsable SGML data shall be included as body parts whose media type is Text/ or Levinson Expires April 30, 1996 [Page 7] Internet Draft MIME-SGML RECEIVER SENDER +------------+ +------------+ | SGML |<--entities-->| SGML | | Parser | (ISO 8879) | Parser | +------------+ +------------+ ^ | | v +------------+ +------------+ | Entity |<-stor. objs->| Entity | | Manager | | Manager | +------------+ +------------+ ^ | | v +-> +------------+ +------------+ <-+ u| | Receiving |<-data files->| Sending | | n| | Agent |<--headers--->| Agent | |p p| +------------+ (files) +------------+ |a a| ^ | |c c| | v |k k| +------------+ +------------+ |e e| | MIME |<-body parts->| MIME | |r r| | User Agent | (MIME) | User Agent | | +-> +------------+ +------------+ <-+ ^ | | v +------------+ +------------+ | Transfer |<--messages-->| Transfer | | Agent | (SMTP) | Agent | +------------+ +------------+ ^ | | v --------------------------------- Transport Medium (TCP/IP) Application/SGML [RFC-TYPES]. 2.3. Data Entities Data entities (those that contain data but may 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. 3. The Content-SGML-Entity Header The Content-SGML-Entity (cse) header is required when encapsulating an SGML document within a Multipart/Related MIME entity. The header contains information from the SGML entity Levinson Expires April 30, 1996 [Page 8] Internet Draft MIME-SGML declaration corresponding to the entity contained in the body of the body part. Data for an entity catalog, defined in [TR9401], can be generated by the receiving agent using the cse header data and the stored entity's local file name. When the same data is referred to by several SGML entity declarations, the data only need be present in the one MIME body part. Subsequent body parts can use the Message/External-Body access-type=content-id media type [RFC- ATCID]. Each of those body parts must have its own Content- SGML-Entity header. 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 declaration. The decl-type, doctype, and public-id-ver describe the entity declaration's environment. Finally, the active parameter 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 Levinson Expires April 30, 1996 [Page 9] Internet Draft MIME-SGML 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 document 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 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 declaration; the name in this case would be the document type name. baseset An entity declared by a public identifier in a base character set [production 174, ISO-8879, 13.1.1.1]. capacity An entity declared by a public identifier in a capacity set [180, ISO- 8879, 13.2]. general An entity declared in a entity declaration 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 declaration 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 notation name or, for other media types, a script or description of the processing that the notation specifies. parameter An entity declared in an entity declaration as parameter entity. syntax An entity declared by a public identifier in a public concrete syntax Levinson Expires April 30, 1996 [Page 10] Internet Draft MIME-SGML [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", "notation", or "parameter". 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 version 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 character 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). Levinson Expires April 30, 1996 [Page 11] Internet Draft MIME-SGML 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 Multipart/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 entities are wholly contained within a subdocument. Consequently 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 correct name space. This avoids the need to have recursive Multipart/Related encapsulations. 4.1. The Multipart/Related Media-Type The Multipart/Related [RFC-REL] 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 content 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 Levinson Expires April 30, 1996 [Page 12] Internet Draft MIME-SGML SGML prolog, but which implies the SGML declaration. ]> &chap1; &chap2; &chap3; 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=""; type="application/SGML" --tiger-lily ... --tiger-lily Content-Type: Application/SGML Content-ID: ]> &chap1; &chap2; &chap3; --tiger-lily ... 4.2.2. An SGML Text Entity The entity "chap3" would be a MIME body part such as --tiger-lily Levinson Expires April 30, 1996 [Page 13] Internet Draft MIME-SGML Content-Type: Text/SGML Content-SGML-Entity: decl-type=general; name=chap3; system-id="chapt3.sgml"

This is chapter THREE ... --tiger-lily Here, as in most other situations the cse header describes the entity contained in the body part. 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 associating an SGML notation declaration name with a MIME media type is redundant; the association exists in the body part containing 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 notation 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. In this case we use a x-safe-Tkl script. ... --tiger-lily Content-Type: Application/X-safe-Tkl Content-SGML-Entity: decl-type=notation; name=stkl; system-id="/usr/local/bin/safe-Tkl" [safe-Tkl script] --tiger-lily Levinson Expires April 30, 1996 [Page 14] Internet Draft MIME-SGML ... 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. MIME-Version: 1.0 Content-Type: Multipart/Related; start=; type=Text/SGML; boundary="tiger-lily" --tiger-lily Content-Type: Text/sgml Content-ID: Content-SGML-Entity: decl-type=doctype; active=usrgde ] > ] > ... &chap2; ... --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. X- SGML-Open-TR9401 contains a catalog with keywords defined in [TR9401]. In this example the catalog has been included inside the Multipart/Related MIME entity. Levinson Expires April 30, 1996 [Page 15] Internet Draft MIME-SGML MIME-Version: 1.0 Content-Type: Multipart/Related; start=; type=Text/SGML; boundary="tiger-lily" --tiger-lily Content-Type: Text/SGML Content-ID: --tiger-lily Content-Type: Application/X-SGML-Open-TR9401 Content-ID: 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. SGML Entities Not Part of a Document 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 mapping the received entity's public identifier to the file in which it stored the entity. 6. SGML Document Interchange Format (SDIF) SDIF [ISO-9069] defines a data stream structure for exchanging Levinson Expires April 30, 1996 [Page 16] Internet Draft MIME-SGML arbitrary SGML documents. The MIME encapsulation described in this RFC provides an alternate encoding of the SDIF abstract data stream suited to Internet mail [RFC822]. The encapsulation may be used to construct a conforming SDIF data stream [N1781]. When several documents are encoded as an SDIF data stream the documents must be contained in an appropriate Multipart MIME entity, for example a Multipart/Mixed entity containing several "Multipart/Related; type=SGML" entities. The following correspondence exists between MIME elements and SDIF ones. Data stream character set SGML-boot parameter (see note) SDIF Name data-stream-name Message-ID document-name Content-ID explanatory comments Content-Description Document descriptor MIME body part indicated by Multipart/Related Entity descriptor MIME body part SDIF Identifier Content-SGML-Entity Note: The SGML-boot parameter [RFC-TYPES] gives the correspondence between character numbers [ISO-8879, 4.36] as used in the SGML declaration and the corresponding character number in [US-ASCII]. 7. 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 system; 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 should alert the user when such situations arise. 8. References [ISO-8824] ISO 8824, Information processing systems -- Open System Interconnection -- Specification of Levinson Expires April 30, 1996 [Page 17] Internet Draft MIME-SGML Abstract Syntax Notation One (ASN.1). [ISO-8879] ISO 8879:1986, Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML). [ISO-9069] ISO 9069:1988, Information Processing - SGML Support Facilities -- SGML Document Interchange Format (SDIF). [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) [N-1781] ISO/IEC JTC1/SC18/WG8 N1781, "Clarification of the Requirements for Encoding the SGML Document Interchange Format (SDIF, ISO 9069). [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 Internet Message Bodies", 09/23/1993. [RFC-1522] K. Moore, "MIME (Multipurpose Internet Mail Extensions) 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 Transformation Format of UNICODE", 07/13/1994 [RFC-ATCID] E. Levinson, "The Message/External-Body Content-ID Access Type", Internet Draft, draft-ietf- mimesgml-cid-00.txt, working draft. [RFC-REL] E. Levinson, "The MIME Multipart/Related Content- type", Internet Draft, draft-ietf-mimesgml- related-03.txt, working draft. [RFC-TYPES] E. Levinson, "SGML Media Types", Internet Draft, draft-ietf-mimesgml-types-00.txt, working draft. Levinson Expires April 30, 1996 [Page 18] Internet Draft MIME-SGML [TR9401] SGML Open Consortium Technical Resolution 9401:1994, "Entity Management", 08/09/1994 [US-ASCII] Coded Character Set -- 7-Bit American Standard Code for Information Interchange, ANSI X3.4-1986. 9. 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 Terry Allen (O'Reilly & Associates, Inc.), Harald T. Alvestrand (UniNett), Nathaniel Borenstein (First Virtual Holdings Incorporated), Daniel W. Connolly (W3O), Steven DeRose (EBT), Roy Fielding (University of California, Irvine), Andy Gelsey (CSC), Paul Grosso (ArborText, Inc.), John Klensin (MCI), Einar Stefferud (Network Management Associates, Inc), Don Stinchfield (EBT), and Erik Naggum (Naggum Software), for their suggestions, explanations, and encouragement. No errors or faults in this document can be ascribed to them, they're all mine. 10. Author's Address Ed Levinson ELevinson@Accurate.com Accurate Information Systems, Inc. 2 Industrial Way Eatontown, NJ 0772 Levinson Expires April 30, 1996 [Page 19] Internet Draft MIME-SGML APPENDIX A. 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=""; type="application/SGML" --tiger-lily Content-Type: Application/SGML Content-ID: ]> &chap1; &chap2; &chap3; --tiger-lily Content-Type: Text/SGML Content-SGML-Entity: decl-type=general; name=chap1; public-id="-//Acme//TEXT chapt1//EN"

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

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

This is chapter THREE ... --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 April 30, 1996 [Page 20] Internet Draft MIME-SGML <-- Acme Widget Company --> <-- Instruction Book DTD --> &Isolat1; &ISOamsa; --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 April 30, 1996 [Page 21] Internet Draft MIME-SGML APPENDIX B. Notes for Implementors An SGML document is encapsulated with the sender's references to her local storage objects intact. The receiving system's SGML Entity Manager may be able to translate those references to to its local storage objects. The recipient's storage objects must be provided by the MIME User Agent to the receiving agent. Other SGML systems, not capable of translating the sender's references, must depend on the receiving agent to parse the SGML document and replace the sender's references with valid local ones. Levinson Expires April 30, 1996 [Page 22]