The purpose of <FIG>, after all, is to define a rectangular image  
area in an HTML document, and to then retrieve a SRC document in  
order to paint this area.  The MIME Media Type of the SRC document  
determines exactly how the rendering will be accomplished.  As Dave  
Raggett says in his HTML3 draft,
    Figures offer a path towards embedding arbitrary
    information formats via some kind of OLE/OpenDoc mechanism.
Furthermore, the "initialization parameters" of the script are most  
naturally expressed as a client-side specializer of the script's  
URI; that is, as the string following '#' in the URI (this string is  
sometimes also called a "fragment identifier", but "client-side  
specializer" makes sense for more media types).
The only slight glitch here is that we get very long URIs which  
won't fit legally into <FIG>'s SRC attribute.  To work around this,  
we can define a "URI extension" tag, <PARAM SRC="...">.  The content  
of <FIG> may begin with any number of <PARAM> tags, whose SRC  
attributes will be concatenated to extend the <FIG>'s own SRC  
attribute.  However, the <FIG>'s SRC must be a syntactically valid  
URI by itself.
Finally, by switching to <FIG>, we avoid all the erroneous uses of  
reserved attributes CLASS, LANG, and SRC, and take full advantage of  
HTML3's link model as defined by the %url.link; attributes.
So, for example, we should replace
    <APP  CLASS=ThreeD  SRC="applets/3D/"
      MODEL="applets/3D/cube.obj"  SCALE=0.8
      WIDTH=100  HEIGHT=100  ALIGN=middle>
with
    <FIG  BASE="applets/3D/"
      SRC="ThreeD.class#model=cube.obj;scale=0.8"
      WIDTH=100  HEIGHT=100  ALIGN=middle>
    </FIG>
or
    <FIG  BASE="applets/3D/"  SRC="ThreeD.class"
      WIDTH=100  HEIGHT=100  ALIGN=middle>
    <PARAM  SRC="#model=cube.obj">
    <PARAM  SRC=";scale=0.8">
    </FIG>
And here is a modified DTD fragment for <FIG> to support URI  
extenders for scripts (warning, SGML amateur at work :-)
<!ELEMENT FIG - - (PARAM*, OVERLAY*, CAPTION?, FIGTEXT, CREDIT?)
    -(FIG|IMG)>
<!ATTLIST FIG
    %attrs;
    %needs;                  -- for control of text flow --
    src  %URI;  #REQUIRED    -- URI of document to embed --
    %url.link;               -- standard link attributes --
    %block.align;            -- horizontal alignment --
    noflow (noflow) #IMPLIED -- noflow around figure --
    width  NUMBER #IMPLIED   -- desired width in units --
    height NUMBER #IMPLIED   -- desired height in units --
    units (en|pixels) pixels -- specifies units as en's or pixels --
    imagemap (%URI) #IMPLIED -- pass background clicks to server --
    >
<!ENTITY % URIFRAG "CDATA">
<!ELEMENT PARAM - O EMPTY>
<!ATTLIST PARAM src %URIFRAG; #REQUIRED>
--------------------------------------------------------------------
Paul Burchard	<burchard@math.utah.edu>
``I'm still learning how to count backwards from infinity...''
--------------------------------------------------------------------