The Unoptimized SGML-Bundle Relations Schema From: http://www.wco.com/~books/draft.5feb97.txt (Feb 09, 1997) The Unoptimized SGML-Bundle Relations Schema Terry Allen (tallen@fsc.fujitsu.com) Version 3, 5 Feb 97 & header; & boilerplate; [If this were an Internet Draft it would begin with a page or so of information everyone already knows anyway.] This document defines a schema for use in a multipart/related MIME message (MR), as defined in RFC 1872. Somehow it ought to be possible to express it in Ron's application/relations format, but I haven't figured out how yet. The Unoptimized SGML-Bundle schema (USB) is intended to describe the relations among *all* the necessary parts of a complex SGML document, along with necessary related entities, as they might be packed in a MIME message. It is called "Unoptimized" because it is an exercise is to determine what all these parts are; any practical implementation would probably be much less verbose and possible less restrictive. This schema is deliberately prescriptive, to further the goal of the exercise. Several DTDs are defined for use within certain Parts of a USB MIME message and for storing information in a structure that can be used by a MIME packing engine to create a USB MIME message. Don't take these DTDs seriously. They are placeholders for more optimized syntaxes. Several liberties have been taken with FPIs and the Docbook DTD for purposes of illustration. Readers of this document are encouraged to comment on its use of MIME and on whether the information it requires in a MIME message is sufficient to parse and render a complex SGML document. Suggestions for optimization will be filed for future reference. This schema may be compared to Donald Stinchfield's expired Internet Draft, "Using Catalogs and MIME to Exchange SGML Documents," written for the moribund IETF MIMESGML Working Group. That document required the use of SGML Open catalogues. This document defines requirements most of which could be met with SGML Open catalogues, but does not employ them directly. (Catalogues may be included within a USB MIME message, and this document takes no position on whether catalogues are a good thing or not.) A MIME message that employs the USB schema encapsulates a single SGML document, called here the "main document," or MD, although that MD may be arbitrarily complex and may have SUBDOCs. A Multipart/Related MIME message must have a Type parameter (per RFC 1872), which is a media type/subtype. For now I have made this "Unoptimized SGML-Bundle," but I suspect this may be the wrong approach. Within the message I use application/SGML (RFC 1874) in preference to text/SGML, because SGML documents are readable by humans only sometimes. I omit the application/SGML, optional parameters SGML-bctf and SGML-boot, and I take the application/SGML optional "charset" parameter to describe the character encoding of ROOT-SDECL (see below). I have deliberately evaded dealing with issues of encoding of character sets, and I have not (yet) provided a way for pointing to the SGML declarations of documents other than ROOT. A USB MR message consists of the following required Parts (the capitalized string before the colon is a USB Part Name): - MIMEMAP: list that maps MIME Content-IDs to URNs of Parts. The Parts may refer to each other by URN, not by Content-ID, so that they need not be rewritten when packed in a MIME Multipart/Related message. This list must be marked up using the USB-Package DTD, see below, and apparently must be created by the MIME packer. This Part's mapping allows URNs to be used without requiring external resolution. - ROOT-SDECL: SGML declaration for the root entity. This describes the character repertoire of the ROOT. This part either begins with " MIMEMAP --cuthere [docbook.dcl has no FPI, so a URL is used. It is necessary for parsing but is considered well known, so is not supplied.] Content-Type:Application/SGML Content-Description:ROOT-SDECL Content-ID:where-the-root-sdecl-is url:http://www.ora.com/davenport/docbook/docbook.dcl --cuthere [This is the document that relates the annotations to the underlying document.] Content-Type:Application/SGML Content-Description:ROOT Content-ID:where-the-root-is Complex Enough? --cuthere [I use Docbook here only for convenience; should find another format.] Content-Type:Application/SGML Content-Description:MD-META Content-ID:where-the-meta-is Complex Enough? Terry Allen --cuthere [This is a section which it could be required that defined applications honor. Again, Docbook used, and in fact misused, only for convenience.] Content-Type:Application/SGML Content-Description:MD-INTPROP Content-ID:where-the-intprop-is This document is copyright Palm Tree Books, 1997, and is offered as is. --cuthere [All the text entities that compose the main document, *not* all the entities in the MIME message. A style sheet would not be listed here.] Content-Type:Application/SGML Content-Description:ALLENTS Content-ID:where-allents-is ALLENTS --cuthere [Only what is required to *start* parsing.] Content-Type:Application/SGML Content-Description:STARTPARSE Content-ID:where-the-startparse-is STARTPARSE --cuthere [The required Parts are known; this completes the list of actually supplied Parts.] Content-Type:Application/SGML Content-Description:ALLOPTS Content-ID:where-the-allopts-is ALLOPTS --cuthere [The text to which the annotations are applied.] Content-Type:Application/SGML Content-Description:DOCUMENT Content-ID:underlying.html-is-here A Short but Demonstrative Chapter

This is the first paragraph.

This is a paragraph in French.

--cuthere [The annotations. Docbook's ULink element has a URL attribute but no URN attribute, as shown here, and FPIs cannot apparently have fragment identifiers, as used here. Pretend.] Content-Type:Application/SGML Content-Description:DOCUMENT Content-ID:annoset.sgm-is-here this statement is true this statement is false --cuthere Content-Type:Application/SGML Content-Description:DTD Content-ID:complex.dtd-is-here Appendix: USB-Package DTD Appendix: USB-Storage DTD Appendix: USB-Storage DTD Example Document style-sheet urn-resolution-hints