ietf-822
[Top] [All Lists]

Re: Comments on MIME/SGML

1994-03-07 17:54:00
Daniel,

Thank you for your comments on my draft.  My travel schedule made it
impossible for me to unable to respond to your comments immediately; I
appologize for the delay.  I deal with your comment on the DTD and
prolog first and then address the correspondences and the content-type.

You point, that I confused DTD and prolog, is on the mark.  After
reviewing your comments and 8879 I agree that the distinction must be
made and I propose a solution slightly different than the one you
propose.

The essence of my proposal is to replace the "dtd" parameter with "prolog"
and to require both prolog and instance.  The reason I suggest this
approach is practical, various implementations treat these two document
elements differently.  Having them as distinct body parts enables the
unpacker to present them to the SGML application in whatever form is
needed.  Thus the example you gave

<!DOCTYPE T SYSTEM "t.dtd" [
<!ENTITY fig1 SYSTEM "foo.ps" postscript>
]>
<T>blah blah blah <figure graphic=fig1> blah blah blah</T>

I propose to split into two parts, the prolog:
        <!DOCTYPE T SYSTEM "t.dtd" [
        <!ENTITY fig1 SYSTEM "foo.ps" postscript>
        ]>
and the instance:
        <T>blah blah blah <figure graphic=fig1> blah blah blah</T>

The definition of sgml-part becomes

               sgml-part       := "declaration" / "prolog" / "instance"
                                / "fosi" / extension-token

where prolog and instance are required.  I re-arranged the terms for
pedagogic reasons.  As you pointed out dtd is redundant and I suggest
we eliminate it as a parameter; it only creates problems, what if
its value is incorrect, the corresponding body part is not present and
not referenced, and other usual human errors.  My suggestion above
reflects this opinion.

For the extended example you provided I have provided an abbreviated
MIME message at the end of my response.

As to using text/sgml or application/sgml, I chose application to keep
within expressed boundaries others in the MIME community have
suggested.  Namely, that text be reserved for very simple things.  The
discussion of the text/enriched subtype explicitly strove to keep the
markup features to a minimum.  Yes, SGML data is character data but
the marked up text, the dtds, that are covered by the subtype are not
for casual reading.  Indeed, I, for one, don't want to have the DTDs
and prologs (perhaps more complicated than the one we use here)
displayed on my screen.  If you have text that is not marked up it can
be sent as an external entity with Content-Type: text.

The correspondences you provided I like, it may be easier to explain
waht is happening using your table.  I summarize it, with my own
suggestions, below.

        SGML:                   MIME:
        notation (type)         Content-Type:
        SYSTEM indentifier      Content-ID:
        data entity             Body Part
        marked up text          Application/SGML
        document                Multipart/SGML

        SDIF:                   MIME:
        data stream             Multipart/SDIF
        entity name             Content-Description: <entity name>
        public-text             Application/SDIF; public=<public id>
        cross-reference         Application/SDIF; cross-reference=content-id

Do you find my proposal acceptable?  Do you have any other
suggestions, especially ones that would make the language more
understandable.

Thanks.../Ed

Daniel W. Connolly's extended example (abbreviated):
        Content-ID:                     Contents
        <10024(_dot_)761615492(_dot_)3(_at_)ulua>       SGML document
        <10024(_dot_)761615492(_dot_)4(_at_)ulua>       SGML marked up text
        <10024(_dot_)761615492(_dot_)5(_at_)ulua>       prolog
        <10024(_dot_)761615492(_dot_)6(_at_)ulua>       dtd
        <10024(_dot_)761615492(_dot_)7(_at_)ulua>       declaration
        <10024(_dot_)761615492(_dot_)8(_at_)ulua>       instance

Content-Type: multipart/x-sgml; boundary="----- =_aaaaaaaaaa1";
        prolog="10024(_dot_)761615492(_dot_)5(_at_)ulua";
        instance="10024.761615492.8";
        declaration="10024(_dot_)761615492(_dot_)7(_at_)ulua"
Content-ID: <10024(_dot_)761615492(_dot_)3(_at_)ulua>

------- =_aaaaaaaaaa1
Content-Type: application/x-sgml; charset="us-ascii"
Content-ID: <10024(_dot_)761615492(_dot_)4(_at_)ulua>
Content-Description: comments on MIME/SGML as html
Content-Transfer-Encoding: quoted-printable

<HEAD>
<TITLE>Comments on MIME/SGML</TITLE>
</HEAD>
<BODY>
<H1>Proposed Changes for MIME representation of SGML
</H1>
...
</BODY>

------- =_aaaaaaaaaa1
Content-Type: application/x-sgml; charset="us-ascii"
Content-ID: <10024(_dot_)761615492(_dot_)5(_at_)ulua>
Content-Description: SGML document prolog

<!DOCTYPE HTML SYSTEM "10024(_dot_)761615492(_dot_)6(_at_)ulua"
         -- PUBLIC "-//IETF/DRAFT/ietf-iiir-html-01" @@ -- [
<!-- $Id$ -->

<!ENTITY web-node SYSTEM "10024(_dot_)761615492(_dot_)4(_at_)ulua">
]>
------- =_aaaaaaaaaa1
Content-Type: application/x-sgml; charset="us-ascii"
Content-ID: <10024(_dot_)761615492(_dot_)8(_at_)ulua>
Content-Description: SGML document wrapper

<HTML>
&web-node;
</HTML>

------- =_aaaaaaaaaa1
Content-Type: application/x-sgml; charset="us-ascii"
Content-ID: <10024(_dot_)761615492(_dot_)6(_at_)ulua>
Content-Description: HTML dtd
Content-Transfer-Encoding: quoted-printable

<!-- Jul 1 93 -->
<!--    Regarding clause 6.1, SGML Document:
...
<!-- end: -->
------- =_aaaaaaaaaa1
Content-Type: application/x-sgml; charset="us-ascii"
Content-ID: <10024(_dot_)761615492(_dot_)7(_at_)ulua>
Content-Description: HTML SGML declaration

<!SGML  "ISO 8879:1986"
--
        Document Type Definition for the HyperText Markup Language
        as used by the World Wide Web application (HTML DTD).

        NOTE: This is a definition of HTML with respect to
        SGML, and assumes an understanding of SGML terms.

        If you find bugs in this DTD or find it does not compile
        under some circumstances please mail 
www-bug(_at_)info(_dot_)cern(_dot_)ch
--

CHARSET
        ...
APPINFO    NONE


------- =_aaaaaaaaaa1--

<Prev in Thread] Current Thread [Next in Thread>