APPLET = FIG (was Re: Java Applet element proposal)

Paul Burchard (burchard@horizon.math.utah.edu)
Fri, 2 Jun 95 21:09:13 EDT

As I've previously suggested on the hotjava-interest list, <APPLET>
is really nothing more than <FIG>, with one small extension. We do
not need a new script-specific tag.

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...''
--------------------------------------------------------------------