Contents
<!ENTITY % OAlign "(texttop|middle|textmiddle|baseline| textbottom|left|center|right)"> <!ELEMENT OBJECT - - (PARAM | %block)*> <!ATTLIST OBJECT %attrs -- %coreattrs, %i18n, %events -- declare (declare) #IMPLIED -- declare but don't instantiate flag -- classid %URL #IMPLIED -- identifies an implementation -- codebase %URL #IMPLIED -- some systems need an additional URL -- data %URL #IMPLIED -- reference to object's data -- type %ContentType #IMPLIED -- Internet content type for data -- codetype %ContentType #IMPLIED -- Internet content type for code -- standby CDATA #IMPLIED -- message to show while loading -- align %OAlign #IMPLIED -- positioning inside document -- height %Length #IMPLIED -- suggested height -- width %Length #IMPLIED -- suggested width -- border %Length #IMPLIED -- suggested link border width -- hspace %Length #IMPLIED -- suggested horizontal gutter -- vspace %Length #IMPLIED -- suggested vertical gutter -- usemap %URL #IMPLIED -- reference to image map -- shapes (shapes) #IMPLIED -- object has shaped hypertext links -- name %URL #IMPLIED -- submit as part of form -- tabindex NUMBER #IMPLIED -- position in tabbing order -- >
Start tag: required, End tag: required
Attribute definitions
Attributes defined elsewhere
Most user agents contain mechanisms for rendering common data types such as text, GIF images, colors, fonts, and a handful of graphic elements. To render data types they don't support natively, user agents generally run external applications. The OBJECT element allows authors to control whether included objects are handled by user agents internally or externally.
In the most general case, an inserted rendering mechanism specifies three types of information:
In certain cases, it may not be necessary to specify all of this information. For example, some rendering mechanisms may not require data (e.g., a self-contained applet that peforms a small animation). Other rendering mechanisms may not require run-time initialization. Finally, some rendering mechanisms may not require additional implementation information, i.e., the user agent itself may already know how to render that type of data (e.g., GIF images).
In HTML, the OBJECT element specifies the location of a rendering mechanism and the location of data required by the rendering mechanism. This information is specified by the attributes of the OBJECT element. The PARAM element specifies a set of run-time values. We discuss this element below, in the section on object initialization.
A user agent must interpret an OBJECT element according to the following precedence rules:
In the following example, we insert a fictitious rendering mechanism written in the Python language that displays an analog clock. This applet requires no additional data or run-time values. The classid attribute specifies the location of the applet:
<OBJECT classid="http://www.miamachina.it/analogclock.py"> </OBJECT>
We recommend completing this declaration by including alternate text in the contents of OBJECT, in case the user agent cannot render the clock.
<OBJECT classid="http://www.miamachina.it/analogclock.py"> An animated clock. </OBJECT>
Note that the clock will be rendered as soon as the user agent interprets this OBJECT declaration. It is possible to delay execution of the rendering mechanism by first declaring the object (described below).
One significant consequence of the OBJECT element's design is that it offers a mechanism for specifying alternate object renderings; each embedded OBJECT declaration may specify an alternate rendering mechanism. If a user agent cannot render the outermost OBJECT, it tries to render the contents, which may be another OBJECT element, etc.
In the following example, we embed several OBJECT declarations to illustrate how alternate renderings work. User agents will attempt to render the first OBJECT element it can, in the following order: (1) an Earth applet written in the Python language, (2) an MPEG animation of the Earth, (3) a GIF image of the Earth, (4) alternate text.
<OBJECT title="The Earth as seen from space" classid="http://www.observer.mars/TheEarth.py"> <OBJECT data="TheEarth.mpeg" type="application/mpeg"> <OBJECT src="TheEarth.gif"> The <STRONG>Earth</STRONG> as seen from space. </OBJECT> </OBJECT> </OBJECT>
The outermost declaration specifies an applet that requires no data or initial values. The second declaration specifies an MPEG animation and, since it does not define a rendering mechanism, relies on the user agent to handle the animation. We also set the type attribute so that a user agent that cannot render MPEG can elect not to retrieve "TheEarth.mpeg" from the network. The third declaration specifies the location of a GIF file and furnishes alternate text in case all other mechanisms fail.
Inline vs. external data. Data to be rendered may be supplied in two ways: inline and from an external resource. While the former method will generally lead to faster rendering, it is not convenient when rendering large quantities of data.
<!ELEMENT PARAM - O EMPTY -- named property value --> <!ATTLIST PARAM name CDATA #REQUIRED -- property name -- value CDATA #IMPLIED -- property value -- valuetype (DATA|REF|OBJECT) DATA -- How to interpret value -- type CDATA #IMPLIED -- Internet media type -- >
Start tag: required, End tag: forbidden
Attribute definitions
The PARAM element specifies a set of values that may be required by a rendering mechanism at run-time. Any number of of PARAM elements may appear at the beginning of an OBJECT declaration. The syntax of names and values is assumed to be understood by the rendering mechanism. Names and values are passed to the rendering mechanism on its standard input.
We return to our clock example. This time, we suppose that the rendering mechanism (the clock) is able to handle two run-time parameters that define its initial height and width. We set the initial dimensions to 40x40 pixels with two PARAM elements.
<OBJECT classid="http://www.miamachina.it/analogclock.py"> <PARAM name="height" value="40" valuetype="data"> <PARAM name="width" value="40" valuetype="data"> This user agent cannot render Python apps. </OBJECT>
Since the default valuetype for a PARAM element is "data", we could replace the above declarations with either:
<PARAM name="height" value="40"> <PARAM name="width" value="40" >
or:
<PARAM name="height" value="40" data> <PARAM name="width" value="40" data>
(The latter form -- the value "data" only for valuetype attribute -- is possible due to the DTD definition of this attribute.)
In the following example, run-time data for the rendering mechanism's "Init_values" parameter is specified as an external resource (a GIF file). The value of the valuetype attribute is thus set to "ref", and the value is a URL designating the resource.
<OBJECT classid="http://www.gifstuff.com/gifappli" standby="Loading Elvis..."> <PARAM name="Init_values" value="./images/elvis.gif"> valuetype="ref"> </OBJECT>
Note that we have also set the standby attribute so that the user agent may render a message while the rendering mechanism loads.
Rendering mechanisms are located by URLs. As we discussed in the section on URLs, the first segment of an absolute URL specifies the protocol used to transfer the data designated by the URL. For HTML documents, this protocol is generally "http". Some rendering mechanisms might employ other protocols. For instance, when specifying a Java rendering mechanism, you may use URLs that begin with "java" and for ActiveX applets, you may use "clsid".
In the following example, we insert a Java applet into an HTML document.
<OBJECT classid="java:program.start"> </OBJECT>
By setting the codetype attribute, a user agent can decide whether to retrieve the Java application based on its ability to do so.
<OBJECT codetype="application/octet-stream" classid="java:program.start"> </OBJECT>
Some rendering schemes require additional information to identify their implementation and must be told where to find that information. You may give path information to the rendering mechanism via the codebase attribute.
<OBJECT codetype="application/octet-stream" classid="java:program.start"> codebase="http://foooo.bar.com/java/myimplementation/" </OBJECT>
The following example specifies (with the classid attribute) an ActiveX rendering mechanism via a URL that begins with the protocol information "clsid". The data attribute locates the data to render (another clock).
<OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502" data="http://www.acme.com/ole/clock.stm"> This application is not supported. </OBJECT>
To declare an rendering mechanism so that it is not executed when read by the user agent, set the boolean declare attribute in the OBJECT element. At the same time, you must identify the declaration by setting the id attribute in the OBJECT element to a unique value. Later instantiations of the object will refer to this identifier.
A rendering mechanism defined with the declare attribute is instantiated every time the OBJECT is referenced thereafter.
In the following example, we declare an OBJECT and cause it so be instantiated by referring to it from a link. Thus, the object can be activated by clicking on some highlighted text, for example.
<OBJECT declare id="earth_declaration" data="TheEarth.mpeg" type="application/mpeg"> <OBJECT src="TheEarth.gif"> The <STRONG>Earth</STRONG> as seen from space. </OBJECT> </OBJECT> ...later in the document... Click to see a neat <A href="#earth_declaration"> animation of The Earth!</A>
The following example illustrates how to specify run-time values that are other objects. In this example, we send text (a poem, in fact) to a hypothetical mechanism for viewing poems. The rendering mechanism recognizes a run-time parameter named "font" (say, for rendering the poem text in a certain font). The value for this parameter is itself an object that inserts (but does not render) the font object. The relationship between the font object and the poem viewer object is achieved by (1) assigning the id "tribune" to the font object declaration and (2) referring to it from the PARAM element of the poem viewer object (with valuetype and value).
<OBJECT declare id="tribune" type="application/x-webfont" data="tribune.gif"> </OBJECT> ...view the poem in KublaKhan.txt here... <OBJECT classid="http://foo.bar.com/poem_viewer" data="KublaKhan.txt"> <PARAM name="font" valuetype="object" value="#tribune"> <P>You're missing a really cool poem viewer ... </OBJECT>
User agents that don't support the declare attribute must render the contents of the OBJECT declaration.
The align attribute specifies the position of an object with respect to its context.
The following values place an object in the heart of text:
<!-- To avoid problems with text-only UAs you need to provide a description with ALT, and avoid server-side image maps --> <!ELEMENT IMG - O EMPTY -- Embedded image --> <!ATTLIST IMG %attrs; -- %coreattrs, %i18n, %events -- src %URL #REQUIRED -- URL of image to embed -- alt CDATA #IMPLIED -- description for text only browsers -- align %IAlign #IMPLIED -- vertical or horizontal alignment -- height %Pixels #IMPLIED -- suggested height in pixels -- width %Pixels #IMPLIED -- suggested width in pixels -- border %Pixels #IMPLIED -- suggested link border width -- hspace %Pixels #IMPLIED -- suggested horizontal gutter -- vspace %Pixels #IMPLIED -- suggested vertical gutter -- usemap %URL #IMPLIED -- use client-side image map -- ismap (ismap) #IMPLIED -- use server-side image map -- >
Start tag: required, End tag: forbidden
Attribute definitions
Attributes defined elsewhere
The IMG element embeds an image in the current document at the location of the element's definition. However, we recommend using the OBJECT element to insert an image into a document.
The height and width attributes of this element override the natural height and width of the source image. User agents should scale the image appropriately.
In an earlier example, we defined a link to a family photo. Here, we insert the photo directly into the current document
...preceding text... I just returned from vacation! Here's a photo of my family at the lake: <IMG src="http://www.somecompany.com/People/Ian/vacation/family.png" alt="A photo of my family at the lake.">
This may be expressed with the OBJECT element as follows:
...preceding text... I just returned from vacation! Here's a photo of my family at the lake: <OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png" type="image/png"> A photo of my family at the lake. </OBJECT>
The alt attribute specifies alternate text when the image cannot be displayed (see below for information on how to specify alternate text ).
The align attribute specifies the position of an object with respect to its context.
The following values place an object in the heart of text:
Two other values, left and right, cause the image to float. They are discussed in the section on floating objects.
Differing interpretations of align. Existing user agents vary in their interpretation of the align attribute. Some only take into account what has occurred on the text line prior to the element, some take into account the text on both sides of the element.
<!ELEMENT APPLET - - (PARAM | %inline)*> <!ATTLIST APPLET codebase %URL #IMPLIED -- optional base URL for applet -- archive CDATA #IMPLIED -- comma separated archive list -- code CDATA #IMPLIED -- applet class file -- object CDATA #IMPLIED -- serialized applet file -- alt CDATA #IMPLIED -- description for text only browsers -- name CDATA #IMPLIED -- allows applets to find each other -- width %Pixels #REQUIRED -- suggested width in pixels -- height %Pixels #REQUIRED -- suggested height in pixels -- align %IAlign #IMPLIED -- vertical or horizontal alignment -- hspace %Pixels #IMPLIED -- suggested horizontal gutter -- vspace %Pixels #IMPLIED -- suggested vertical gutter -- >
Start tag: required, End tag: required
Attribute definitions
Attributes defined elsewhere
This element, supported by all Java-enabled browsers, allows designers to embed a Java applet in an HTML document. It has been deprecated in favor of the OBJECT element.
The content of the APPLET acts as alternate information for user agents that don't support this element or are currently configured not to support applets. The content must be ignored otherwise.
The following sample Java applet:
<APPLET code="Bubbles.class" width="500" height="500"> Java applet that draws animated bubbles. </APPLET>
may be rewritten as follows with OBJECT:
<OBJECT codetype="application/octet-stream" classid="java:Bubbles.class" width="500" height="500"> Java applet that draws animated bubbles. </OBJECT>
Initial values may be supplied to the applet via the PARAM element.
The following sample Java applet:
<APPLET code="AudioItem" width="15" height="15"> <PARAM name="snd" value="Hello.au|Welcome.au"> Java applet that plays a welcoming sound. </APPLET>
may be rewritten as follows with OBJECT:
<OBJECT codetype="application/octet-stream" classid="AudioItem" width="15" height="15"> <PARAM name="snd" value="Hello.au|Welcome.au"> Java applet that plays a welcoming sound. </OBJECT>
For instance, the following line will include the contents of piece_to_include.html at the location where the OBJECT definition occurs.
...text before... <OBJECT data="file_to_include.html"> Warning: file_to_include.html could not be included. </OBJECT> ...text after...
The contents of OBJECT must only be rendered if the file specified by the data attribute cannot be loaded.
The behavior of a user agent in cases where a file includes itself is not defined.
Careful file inclusions. Be careful if you attempt to include a section of an HTML document defined by an anchor. The entire document after the anchor definition will be included, and you might unwittingly include unwanted end tags (for elements such as BODY, HTML, etc.) in your document.
The IFRAME element may also be used to insert an inline frame containing text in an HTML document.
An image map is created by associating an object with a specification of sensitive geometric areas on the object.
There are two types of image maps:
Client-side image maps are preferred over server-side image maps. It is possible to implement client-side image maps with several elements.
Non-graphical representation of image maps. Non-graphical user agents may render client-side image maps as sets of textual links. The textual region may be activated by keyboard input.
Attribute definitions
Coordinates are relative to the top, left corner of the object. All values are lengths (they may be pixel values or percentage values).
The following attribute is defined for the OBJECT element.
Attribute definitions
In the following example, we create a client-side image map for the OBJECT element by associating URLs with regions specified by a series of A elements.
<OBJECT data="navbar.gif" shapes> <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circ" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,373,28,50,50,276,0">Top Ten</A> </OBJECT>
If the OBJECT element includes a shapes attribute, user agents must parse the contents of the element to look for anchors.
If two or more defined regions overlap, the region defined first takes precedence (i.e., responds to user input).
<!ELEMENT MAP - - (AREA)*> <!ATTLIST MAP %coreattrs; -- id, class, style, title -- name CDATA #IMPLIED >
Start tag: required, End tag: required
<!ELEMENT AREA - O EMPTY> <!ATTLIST AREA shape %Shape rect -- controls interpretation of coords -- coords %Coords #IMPLIED -- comma separated list of values -- href %URL #IMPLIED -- this region acts as hypertext link -- target CDATA #IMPLIED -- where to render linked resource -- nohref (nohref) #IMPLIED -- this region has no action -- alt CDATA #REQUIRED -- description for text only browsers -- tabindex NUMBER #IMPLIED -- position in tabbing order -- >
Start tag: required, End tag: forbidden
Attribute definitions
Attributes defined elsewhere
Several elements (OBJECT, IMG, and INPUT) allow the following attribute to specify an associated client-side image map.
Attribute definitions
We can rewrite the previous example in terms of MAP and AREA. We still create an OBJECT that will insert an image. We associate the object and the image map by setting the usemap attribute on the OBJECT and the name attribute of the MAP element to the same value.
<OBJECT data="navbar1.gif" usemap="#map1"></OBJECT> <MAP name="map1"> <AREA href="guide.html" alt="Access Guide" shape="rect" coords="0,0,118,28"> <AREA href="search.html" alt="Search" shape="rect" coords="184,0,276,28"> <AREA href="shortcut.html" alt="Go" shape=circ coords="184,200,60"> <AREA href="top10.html" alt="Top Ten" shape="poly" coords="276,0,373,28,50,50,276,0"> </MAP>
The alt attribute specifies alternate text for cases when the image map may not be displayed (see below for information on how to specify alternate text).
Note: MAP is not backwards compatible with HTML 2.0 user agents.
It is only possible to define a server-side image map with the IMG element. To do so, set the boolean attribute ismap in the IMG definition. The associated map of regions must be specified with the usemap attribute.
When the user activates a region of the image map, the screen coordinates are sent directly to the server where the document resides. Screen coordinates are expressed as screen pixel values. For normative information about the definition of a pixel and how to scale it, please consult [CSS1].
The location clicked is passed to the server as follows. The user agent derives a new URL from the URL specified by the href attribute by appending `?' followed by the x and y coordinates, separated by a comma. The link is then followed using the new URL. For instance, in the previous example, if the user clicks at at the location x=10, y=27 then the derived URL is "/cgibin/navbar.map?10,27".
In the following example, the first active region defines a client-side link. The second defines a server-side link, but doesn't assign a specific shape to it (this is accomplished with the "default" value of the shape attribute). Since the regions of the two links overlap, the first takes precedence of the later definition. Thus, a click anywhere but in the rectangle will cause the click's coordinates to be sent to the server.
<OBJECT data="game.gif" shapes> <A href="guide.html" shape="rect" coords="0,0,118,28"> Rules of the Game</A> <A href="http://www.acme.com/cgi-bin/competition" ismap shape="default"> Guess the location</a> </OBJECT>
The height and width attributes give user agents an idea of the size of an image or object so that they may reserve space for it and continue rendering the document while waiting for the image data. Both attributes take values of type length. User agents may scale objects and images to match these values if appropriate.
The vspace and hspace attributes specify the amount of white space to be inserted to the left and right (hspace) and above and below (vspace) an image or object. The default value for this attribute is not specified, but is generally a small, non-zero length. Both attributes take values of type length.
Images or objects that are the content of an A element are sometimes surrounded by a border. The border attribute specifies the width of this border.
Attribute definitions
Several non-textual elements (IMG, AREA, APPLET, and INPUT) allow authors to specify alternate text to serve as content when the element cannot be rendered normally. Specifying alternate text assists users without graphic display terminals, users whose browsers don't support forms, visually impaired users, those who use speech synthesizers, those who have configured their graphical user agents not to display images, etc.
While alternate text may be very helpful, it must be handled with care. Authors should observe the following guidelines:
The alt attribute is mandatory for the AREA element, but optional for IMG, APPLET, and INPUT.
When an author does not set the alt attribute for the IMG or APPLET elements, user agents should supply the alternate text, calculated in the following order:
When an author does not set the alt attribute for the INPUT element, user agents should supply the alternate text, calculated in the following order: