Compound Documents in HTML HTML における複合文書
This document is an Internet draft. Internet drafts are working documents of the Internet Engineering Task Force (IETF), its areas and its working groups. Note that other groups may also distribute working information as Internet drafts.
Internet Drafts are draft documents valid for a maximum of six months and can be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use Internet drafts as reference material or to cite them as other than as "work in progress".
To learn the current status of any Internet draft please check the "lid-abstracts.txt" listing contained in the Internet drafts shadow directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East coast) or ftp.isi.edu (US West coast). Further information about the IETF can be found at URL: http://www.cnri.reston.va.us/
Distribution of this document is unlimited. Please send comments to the HTML working group (HTML-WG) of the Internet Engineering Task Force (IETF) at MAIL:html-wg@oclc.org. Discussions of this group are archived at URL: http://www.acl.lanl.gov/HTML-WG/archives.html.
This specification provides an HTML implementation of a simple compound document architecture for the World Wide Web, based on a new <EMBED> element.
この仕様書は、新しい <EMBED>
要素に基いた、
World Wide Webの簡単な複合文書構造の HTML
の実装を提供します。
By not restricting itself to a limited class of media types or media handler implementations, this element enables portable compound document markup, and encourages the modular design of user-agents. Although this specification does not presume to define a concrete API between extensible user-agents and their media handlers, some high-level requirements are imposed on the embedding semantics in order to ensure support for the full linking and embedding model. media typeやmedia handlerの実装の級を制限しないことで、この要素は可搬的な複合文書markupを可能にし、user agentのモジュール化設計を推進します。 この仕様書は拡張可能なuser agentとそのmedia handlerの間の具体的な API を定義することを求めるものではありませんが、完全なリンクと埋め込みのmodelに確実に対応するために意味の埋め込みに何らかの高水準の要求が課されます。
By making <EMBED> a container element, rich alternative text with links and images is enabled. Moreover, the container element provides superior extensibility, setting the stage for structured enhancement of SGML content models, rather than sole dependence on proliferation of attributes.
<EMBED>
をcontainer要素とすることで、リンクと画像による表現豊かな代替textが可能になります。
更に、container要素は SGML content modelの構造化拡張の場とすることで、単に属性の増殖に依存するよりも優れた拡張性を提供します。
The only compound document feature defined in HTML 2.0 [1] was the <IMG> tag for embedding image media into HTML. Although arguably, next to <A>, the single most influential tag in the explosive growth of the Web, its shortcomings are now causing a proliferation of media- and user-agent-specific attempts at extending HTML.
HTML 2.0 で定義されている唯一の複合文書機能は HTML に画像媒体を埋め込む
<IMG>
tagです。議論の余地はあるものの、 <A>
に次いで、 Web の爆発的成長に最も影響を振るう単一のtagは、その不足のために、
媒体やuser agent特定の HTML の拡張の試みの増殖を現在起こしています。
The most serious shortcoming of the <IMG> tag is its arbitrary restriction to image media. Many of the proposed embedding extensions also use names which suggest specialized functionality (e.g. <APPLET>, <FIG>). But as modular, extensible user agents become the norm, such restrictions become untenable. We propose that the name EMBED is both broad and intuitive enough to denote a generic embedding element. In order to avoid implementation-dependent markup, it is essential that this EMBED tag should cover all embeddable Internet media types [2], however the corresponding media handlers are implemented (`built-ins', `plug-ins', etc.).
<IMG>
tagの最も重要な問題は、画像媒体に制限してしまっていることです。
多くの埋め込み拡張の提案も特定の機能を表す名前を使っています
(例えば <APPLET>
や <FIG>
)。
しかしモジュール化され拡張可能なuser agentが標準的になれば、そのような制限は維持できなくなります。
EMBED
という名前は一般的な埋め込み要素を表すのに十分大雑把で直感的であると考えます。
実装依存のmarkupを避けるために、対応するmedia handlerがどう実装されていようとも
(「組込み」でも「plugin」等でも)、この EMBED
tagが埋め込み可能な全てのInternet Media Typeをまかなうことが必要です。
The second key shortcoming of the <IMG> tag is that it is `empty' (meaning that it doesn't use a closing </IMG>). Since SGML attributes are the only mechanism then available for the expression of element properties, all the powerful structuring capabilities of SGML are lost. In particular, the inability to nest elements inside an empty element means that properties with rich text values (such as would be desirable for the alternative text of <IMG>) cannot be implemented.
<IMG>
tagの2つ目の問題点は、これが「empty」であること
(閉じ </IMG>
を使わないこと) です。
この場合 SGML 属性がelementの属性を表現する唯一の利用可能な仕組みですから、
SGML の全ての強力な構造化された能力は失われます。
とりわけ、empty elementは内部に入れ子にelementを入れることが出来ませんから、表現豊かなtextの値のproperty
(<IMG>
の代替textとして望ましかったものなど)
を実装できないことを意味します。
Moreover, extensibility of empty elements suffers because everything occurs in the a single, flat attribute namespace. Whereas empty elements with complex properties create an "attribute soup" that may not even be legal SGML:
更に、empty elementでは全てのものが単一の平坦な属性名前空間に含まれるために拡張性も制限されます。 複雑なpropertyを持つempty elementは「attribute soup」になって、正当な SGML でさえなくなりかねません。
<IMG APPLETSRC="my.applet" ALT="[applet]" FOO="23.8" BAR="5.0" ...> <!-- WRONG: cannot pass arbitrary attributes --> <!-- 誤り: 任意の属性を渡すことは不可 -->
complex container elements can grow in a natural way, benefitting from the structured design of SGML:
複雑なcontainerelementは、 SGML の構造化された設計の利点により自然な方法で修飾出来ます。
<EMBED SRC="my.applet"> <PARAM NAME="foo" VALUE="23.8"> <PARAM NAME="bar" VALUE="5.0"> ... <em>Download</em> this cool <A HREF="my.exe">application</A>! このイケてる応用を入手 <!-- rich alternative text --> rich代替text </EMBED>
The ability to pass an extensible set of parameters to the embedded media handler in this way is one of the main requirements for an embedding tag.
拡張可能なparameterの集合をこの方法で埋め込まれたmedia handlerに伝達する能力は、埋め込みtagの必要要件の一つです。
Notice that this structured content approach also makes it possible to combine <EMBED> with <IMG> for excellent backwards compatibility:
この構造化された内容を使う方法は、 <EMBED>
を <IMG>
と組み合わせて優れた後方互換性を確保することも可能にします。
<EMBED SRC="movie.mpg">
<IMG SRC="movie.001.jpg"> <!-- first frame 最初のframe(動画) -->
</EMBED>
Here, an image of the first frame of the movie will be shown whenever the movie itself is not displayed, providing fallback for all of the following situations:
ここで、動画自体を表示出来ない時には動画の最初のframe(動画)の画像が表示され、次の状況の全てに対して代替手段を提供します。
<EMBED>
tagを知らない場合video/mpeg
media typeの埋め込み可能なmedia handlerを持たない場合Because the Web, as a distributed hypermedia system, makes a clear separation between storage and presentation of data, the model described in this section would more accurately be called a "compound presentation architecture". The model offered here takes a very high-level view of client-side state, and explains how links, the fundamental building blocks of the Web, are used to assemble compound presentations in stateful user-agents.
Web は分散hypermedia systemとして、明確にデータの蓄積と表現を分離していますから、この節で説明するmodelはより正確には「複合表現構造」と呼ぶべきものです。 ここで示すmodelはclient側の状態の非常に高い水準の視点を取り、 Web の基本的な構築単位であるリンクを状態を持ったuser agentでどう複合表現を組み立てるのに使用するかを説明します
The model views the user-agent as a repository of hierarchical presentation resources. A presentation resource is an addressable unit of state in the user-agent, such as the document display area of a GUI window. An embedded display area (say, showing a video) within the larger display area (say, showing an HTML document) would be a child in the presentation resource hierarchy. This hierarchical structure makes it possible to use URLs (within the generic-RL paradigm [3]) as addresses, but this document does not define or require any specific client-side addressing schemes.
このmodelはuser agentを階層構造の表現資源の貯蔵庫と捉えます。 表現資源はuser agentにおいて、 GUI 窓の文書表示領域のようなaddressable単位の状態で存在します。 大表示領域 (例えば HTML 文書を表示。) 中の埋め込み表示領域 (例えば動画を再生。) は表現資源階層中では子供に当たります。この階層構造はaddressとして (generic-RL paradigm 中の) URL を使うことを可能としますが、この文書はそうした特定のclient側addressingschemeの定義や要求はしません。
Like server-side resources on the Web, these presentation resources may support methods to query and change the state they hold. This model views the standard display of a MIME entity in a presentation resource as POSTing that entity to the resource. The implementation of the POST method typically creates a media handler for the entity (which does the actual work of display), pushes that media handler onto a navigation stack, and then gives the media handler access to the display area represented by the resource.
Web のサーバー側資源同様に、これらの表現資源は問合せたりその保持する状態を変えたりする方法を持つことが出来ます。
このmodelは表現資源中の MIME entityの標準の表示を、そのentityを資源に
POST
するものとして捉えます。 POST
methodの実装は典型的にはentityのmedia handlerを作成し、
(これは普通の表示作業をし、) そのmedia handlerをnavigation stack上に押入れ、media handlerに資源により表現される表示領域へのaccess権を与えます。
This model of the user-agent now allows us to describe an anchor more generally as a recipe for getting a MIME entity from a retrieval resource and posting it to a presentation resource. A link, as always, is a relation between two anchors (known as the tail and the head). Thus, links and anchors have the following properties: user agentのこのmodelによって、anchorをより一般的に、取り出した資源から MIME entityを得て表現し現にそれをpostするためのrecipeとして説明できます。 linkは、常にそうであるように、2つのanchor (tail(anchor)とhead(anchor)として知られる。) の関係です。従って、linkとanchorは次のpropertyを持ちます。
link: head anchor, tail anchor, relations
anchor: source method call: retrieval address, method, and argument(s)
target method call: presentation address, method, and argument(s)
For this specification, the main point of the model is to prescribe what information must be made available to the media handlers by the presentation resource (this affects the design of `plug-in' APIs). The key requirement we impose is that the media handler must have acccess to complete link information according to the link model just described.
この仕様では、このmodelの要点はどの情報が表現資源によってmedia handlerに利用可能でなければならないかを指示するところです (これは「plugin」 API の設計に影響します)。 ここで課す重要な要件は、media handlerはただいま説明しましたlinkmodelに従った完全なlink情報への接触手段を持たなければならないということです。
The actual appearance of the compound presentation depends on a negotiation between the containing and contained presentations. This negotiation process may involve:
複合表現の実際の容姿は含める側と含まれる側の表現の間での折衝に拠ります。 この折衝過程は次のことと関係します。
[This section is incomplete.]
[この節は未完です。]
This specification defines an extension of the HTML 2.1 DTD [4]. This description makes free use of SGML elements and entities defined there.
この仕様は HTML 2.1 DTD の拡張を定義します。 この説明はそちらで定義された SGML 要素・entityを断り無く使用します。
<!ELEMENT EMBED - - (PARAM*, CAPTION?, EMBED.BODY, CREDIT?)> <!ATTLIST EMBED %attrs; %link.internal; %link.metainfo; %case.metainfo; %size; -- size of reserved area 予約域の大きさ -- %align; -- alignment or float 配置・浮動 -- %SDAPREF; '<Fig><Xref IDRef="#AttVal(SRC)"><?SDATrans Embed: #AttList>' %SDASUFF; '</Fig>' >
Attributes: SRC, PARAMS; TITLE, URN, REL, REV; ACCEPT, ACCEPT-CHARSET, ACCEPT-ENCODING; WIDTH, HEIGHT; ALIGN, HSPACE, VSPACE, FLOWTO.
Common Attributes: ID, LANG, DIR (implied for all elements below).
From the point of view of the compound document architecture, the <EMBED> element has two purposes:
複合文書構造の視点から、 <EMBED>
要素には二つの目的があります。
* It conditionally creates a presentation resource, a child node in the presentation hierarchy below the presentation of the HTML entity which contained the <EMBED> element.
* It declares a link for which the target of the tail anchor implicitly uses the newly created presentation resource.
This functionality is implemented with the help of the <EMBED.BODY> and <PARAM> elements:
<!ELEMENT EMBED.BODY O O %A.content> <!ATTLIST EMBED.BODY %attrs; >
The <EMBED> link is activated as soon as the parent presentation of the HTML entity is created. If for any reason the link fails, or the child presentation cannot be created, then the content of the <EMBED.BODY> element must be rendered in place of the <EMBED> element.
Note: There is never any need to actually include <EMBED.BODY> tags in a document; this construct exists solely to allow glitch-free use of %A.content in combination with <PARAM> tags. The %A.content was chosen in part to aid error recovery when the </EMBED> tag is accidentally omitted.
<!ELEMENT PARAM - O EMPTY -- builds presentation specializer -- > <!ATTLIST PARAM %attrs; %key.value; %SDAPREF; "<?SDATrans Param: #AttList>" >
Attributes: NAME, VALUE, ACCEPT, ACCEPT-CHARSET, ACCEPT-ENCODING.
The method invoked on the presentation resource is POST, which has two arguments. The first is the MIME [5] entity retrieved as a result of link activation. The second argument is a MIME entity called the presentation specializer, which is used to modify the resulting presentation, and is a generalization of the so-called "fragment id". This specializer can be defined in one of three ways, in order of priority:
<PARAM> elements these elements collectively define a presentation specializer of type multipart/form-data, which is used by the media handler as an unordered list of named parameters, each with full MIME type information
PARAMS attribute defines a presentation specializer of type application/x-www-form-urlencoded, which is used by the media handler as an unordered list of named string parameters
"fragment id" of SRC attribute defines a presentation specializer of type text/plain, which used as the name of the markup element on which the presentation should be focused
If two or more of the above mechanisms is used simultaneously, the one with higher priority wins.
<!ELEMENT INPUT - O EMPTY -- builds retrieval specializer -- > <!ATTLIST INPUT %attrs; %key.value; -- key and MIME-typed value -- TYPE %InputType #IMPLIED -- defaults to TEXT in FORM context -- CHECKED (CHECKED) #IMPLIED -- initial boolean state -- SRC %URI; #IMPLIED -- embedded graphic for TYPE=IMAGE -- %align.simple; -- alignment for TYPE=IMAGE -- SIZE CDATA #IMPLIED MAXLENGTH NUMBER #IMPLIED %SDAPREF; "Input #AttVal(Type): " >
Attributes: NAME, VALUE, ACCEPT, ACCEPT-CHARSET, ACCEPT-ENCODING; TYPE; CHECKED; SRC; ALIGN, SIZE, MAXLENGTH.
The <INPUT> element plays a largely parallel role to <PARAM>, but on the retrieval (source) end of the anchor rather than the presentation (target) end. Unfortunately, this element has been somewhat abused as a result of its great usefulness (though fixing these problems is beyond the scope of this proposal).
The only modification specified here is the addition of %mime.constraints; type information for the value of the input field (described in detail below). Note that the %mime.constraints; information is not intended to apply to the vestigial embedding link defined by the SRC attribute.
<!ELEMENT CAPTION - - (%text;)+ -- caption for floating element --> <!ATTLIST CAPTION %attrs; %align; -- side of rectangle where caption placed -- %SDAPREF; "Caption: " >
Attributes: ALIGN, HSPACE, VSPACE, FLOWTO.
<!ELEMENT CREDIT - - (%text;)* -- copyright/credit for embedded object --> <!ATTLIST CREDIT %attrs; %SDAFORM; "Fn" >
In typical rendering with default attributes, the italicized, centered caption would be placed at the bottom of the area reserved for the child presentation, and the credit would appear as smaller roman text right-aligned near the bottom of the reserved area.
Because the caption is not an independent float, the ALIGN attribute must be interpreted somewhat differently. Here, the value of ALIGN indicates on which side of the reserved area the caption should be placed. The values MIDDLE and CENTER are not meaningful.
<![ %HTML.Highlighting [ <!ENTITY % text "#PCDATA|A|EMBED|IMG|BR|%phrase|%font|SPAN|Q|BDO|SUP|SUB"> ]]> <!ENTITY % text "#PCDATA|A|EMBED|IMG|BR|SPAN|Q|BDO|SUP|SUB">
The <EMBED> tag is permitted as part of %text context, meaning that it does not force a paragraph break. The reason is that <EMBED> functions as either a float (alongside the text flow) or a glyph (part of the line of text line), but never as a block.
HTML is an application of SGML for which application conventions play a strong role, particularly in the rich syntax of its attribute values. Although these conventions cannot be checked directly by the SGML parser, DTD "macros" can be used help flag these conventions for other validation tools.
<!ENTITY % Length "CDATA" -- number followed by optional units -->
Attributes values defining a length are uniformly specified as a number followed by an optional suffix denoting the units of measurement. The number must be an integer value or a floating-point real value such as 2.5 (scientific notation, as in 1.2e2, is not allowed). No white space is allowed between the number and the suffix. The default units are screen pixels, and the following suffixes may also be recognized: pt denotes points, pi denotes picas, in denotes inches, cm denotes centimeters, mm denotes millimeters, em denotes em units (in the default font), and px denotes screen pixels.
<!ENTITY % URI "CDATA" -- uniform resource identifier -->
The syntax of Uniform Resource Identifiers is given by RFC 1630 [6]. For historical reasons, attribute values of type %URI which identify retrieval resources may also include a final "fragment identifier", which is actually unrelated to the retrieval process and instead specifies a presentation specializer of type text/plain.
5.3. Attribute Sets
The HTML DTD does not make extensive use elements for structuring; instead it is typified by sets of related attributes which recur in multiple elements. In such a setting, DTD evolution can be facilitated by making consistent use of SGML "macros" to identify and reuse such attribute sets.
<!ENTITY % attrs 'ID ID #IMPLIED -- element identifier -- LANG NAME #IMPLIED -- RFC 1766 language tag -- DIR (ltr|rtl) #IMPLIED -- text directionality --'>
The %attrs; attribute set is common to all elements.
ID Used to define a document-wide identifier. This can be used for naming positions within documents as the destination of a hypertext link. An ID attribute value is an SGML NAME token. (NAME tokens are formed by an initial letter followed by letters, digits, "-" and "." characters. The letters are restricted to A-Z and a-z.)
LANG DIR These attributes are described in the HTML 2.1 specification [4].
<!ENTITY % link.internal -- links with implicit presentation resource -- 'SRC %URI; #REQUIRED -- resource to retrieve -- PARAMS CDATA #IMPLIED -- presentation specializer --'>
SRC The address of the resource to be retrieved in traversing this link. The address must be a valid URI [6].
PARAMS Declares a presentation method specializer argument of type application/x-www-form-urlencoded [1]. (It is strongly recommend to use `;' as a separator in place of `&'.) This attribute is suitable for declaring small, simple parameter lists; more general presentation specializers can be created using the <PARAM> mechanism.
<!ENTITY % mime.constraints -- MIME typing constraints -- 'ACCEPT CDATA "text/plain" -- applicable media type(s) -- ACCEPT-CHARSET CDATA "ISO-8859-1" -- appl. character encoding(s) -- ACCEPT-ENCODING CDATA "ISO-8859-1" -- appl. transfer encoding(s) --'>
ACCEPT ACCEPT-CHARSET ACCEPT-ENCODING In link-related elements, the %mime.constraints attribute-set provides an advisory range of MIME type information, suggesting to the data producer what is acceptable to the consumer, and to the consumer what is available from the producer. This attribute-set also provides specific defaults for situations in which the MIME type information of the corresponding data cannot otherwise be determined.
The attribute values have syntax identical to the corresponding HTTP headers in HTTP/1.1 [7], except that the first entry of each list must be a definite (non-wildcarded) type specification. This first entry is used as default type information.
As attributes of linking elements (such as <EMBED>), these constraints support efficient type-negotiation, by narrowing the range of types in advance. For instance, a link with ACCEPT="video/mpeg, video/*" suggests that multiple video formats may be available for negotiation; if the the only video format that the user-agent can usefully interpret is video/avi, a reasonable HTTP negotiation offer would be Accept: video/avi, video/mpeg (with a video/mpeg result stored to disk). In link specializer elements defining name-value pairs (<INPUT> and <PARAM>), these attributes specify the parameter types that should be acceptable to the method and resource in question (retrieval and presentation resource, resp.). When the user is allowed to change the types of the values (as is permitted by RFC 1867 [8] for <INPUT>s of TYPE=FILE in <FORM> links, for example), these attributes may therefore be used constrain the user's changes, as a service to the eventual data consumer. In addition, the ACCEPT attribute (but not ACCEPT-CHARSET or ACCEPT-ENCODING) should be used to interpret the default value provided in the markup (the VALUE attribute).
Note on MIME/SGML/I18N/FORM Interactions: Resources which rely on form submission (or presentation specializers) in an internationalized setting must be aware of one important caveat: just because the default value (the VALUE attribute) of a field is returned, it cannot be guaranteed to be returned as an identical sequence of octets -- only as (another) valid encoding of the same sequence of characters (under the character- and transfer-encodings declared for the field in the form submission).
This may be true even if the character- and transfer-encodings of the original HTML MIME entity containing the form are the same as the eventual encodings used for form submission. The reason is that the MIME-to-SGML process is not required to preserve any of the encoding information of the MIME entity, only the actual sequence of characters in the (abstract) document character set of the SGML document entity. [This note should be moved to the HTML I18N draft.]
<![ %HTML.Recommended [ <!ENTITY % key.value -- key/value pair with typed value -- 'NAME NAME #IMPLIED -- keyword, usually required -- VALUE CDATA #IMPLIED -- default value -- %mime.constraints; -- type constraints for value --'> ]]> <!ENTITY % key.value -- key/value pair with typed value -- 'NAME CDATA #IMPLIED -- keyword, usually required -- VALUE CDATA #IMPLIED -- default value -- %mime.constraints; -- type constraints for value --'>
NAME A parameter name. It is not required that NAMEs be unique keys, even within the scope of a single linking element; a multiple-values model is supported. With the strict HTML DTD, this attribute is a case-insensitive SGML NAME token. With the default HTML DTD, this attribute may be arbitrary CDATA, and any desired case-folding is the responsibility of the eventual consumer.
VALUE Tags with %key.value attributes are used to collectively build up link specializers. Abstractly, the WWW method specializer resulting from such a collection of tags is the MIME entity of type multipart/form-data [8] which encodes all the name-value pairs and their types. Any %key.value tags without NAME attributes do not contribute to the specializer.
There are two exceptions to this general model of specializer construction. The first is historical: in the case of <INPUT> tags in a <FORM>, the default is to create a specializer of type application/x-www-form-urlencoded (this can only unambiguously create a form submission with values having default MIME type). This historical behavior can be overridden by setting the <FORM>'s ENCTYPE attribute to "multipart/form-data" (which is strongly recommended). In case of legacy servers which require application/x-www-form-urlencoded form submission, but expect values of non-default MIME types, those expectations must be explicitly spelled out in the %mime.constraints. of each <INPUT>.
The second exception provides a way to build small method specializers of arbitrary character-based type; the rule is that if exactly one instance of a %key.value tag is supplied, and that tag does not have a NAME attribute, then its VALUE is the entire specializer entity.
<!ENTITY % link.metainfo -- overall link metainfo -- 'TITLE CDATA #IMPLIED -- overall title for resource -- URN %URI #IMPLIED -- global entity name -- REL %linkType #IMPLIED -- link relationship -- REV %linkType #IMPLIED -- reverse relationship --'> <![ %HTML.Deprecated [ <!ENTITY % case.metainfo -- link metainfo for specific variant -- '%mime.constraints; -- type constraints -- METHODS NAMES #IMPLIED -- deprecated --'> ]]> <!ENTITY % case.metainfo -- link metainfo for specific variant -- '%mime.constraints; -- type constraints --'> <!ENTITY % linkExtraAttributes '%link.metainfo; %case.metainfo; '>
The link meta-information attribute set %linkExtraAttributes has been logically split into two parts to ease future extension. The new %case.metainfo component represents meta-information specific to a single link variant (currently consisting of MIME type information).
The only other change is the deprecation of the METHODS attribute. It is difficult to define the semantics of the METHODS attribute in an object-oriented model of the Web.
<!ENTITY % size 'WIDTH %Length #IMPLIED -- desired width in units -- HEIGHT %Length #IMPLIED -- desired height in units --'>
The %size; attribute set is used for elements that require bounding-box hints for rapid layout.
<!ENTITY % align.simple 'ALIGN (top|middle|bottom) #IMPLIED -- glyph alignment --'> <!ENTITY % align 'ALIGN (top|middle|bottom|left|center|right) #IMPLIED HSPACE %Length #IMPLIED -- text stays this far away horizontally -- VSPACE %Length #IMPLIED -- text stays this far away vertically -- FLOWTO NAME #IMPLIED -- flow text around block until this ID --'>
The %align; attribute set is used for graphic elements that can function either as floats or glyphs, while %align.simple; is used for graphic elements that function only as glyphs.
ALIGN The value of this attribute indicates the relation between the graphic element and the text flow. The possible values are:
LEFT RIGHT The graphic element functions as a float; subsequent text will be flowed around the graphic. The left (resp. right) edge of the graphic is aligned with the left (resp. right) edge of the text flow area.
CENTER The graphic element functions as a float centered horizontally within the text flow area. The graphic interrupts the flow of text, but does not logically break the current paragraph.
TOP BOTTOM The graphic element functions as a glyph within the line of text. The top (resp. bottom) of the graphic is aligned with the highest point (resp. baseline) of the rendered line of text.
MIDDLE The graphic element functions as a glyph within the line of text. The baseline of the graphic is aligned with the baseline of the rendered line of text. By default, the baseline of the image is taken to be at its vertical center. (There is currently no way to override this default baseline.)
HSPACE VSPACE The text surrounding the graphic element remains at least this far away. HSPACE specifies the minimum horizontal distance between the text and the left/right edges of the graphic, while VSPACE specifies the minimum vertical distance between the text and its top/bottom edges. This padding does not offset the alignment in any way.
FLOWTO Sometimes it is important that some subsequent element appear below a float, rather than as part of the text flow alongside it; the ID of that element can be specified with the FLOWTO attribute.
This attribute provides a more structured alternative to <BR CLEAR=ALL>. Its purpose is to declare the range of text with which the float is associated (from the element itself, until the element whose ID is given by FLOWTO). In typical rendering, the text beyond the specified range would not be flowed around the graphic.
The resulting SGML doctype is provisionally called "-//IETF//DTD HTML 2.1E//EN", and is defined in terms of the doctype "-//IETF//DTD HTML 2.1//EN". Because the HTML 2.1 DTD [4] defines multibyte entity references, it must be used with an SGML declaration that provides an extended coded character set; the HTML 2.1E DTD inherits this restriction.
The following changes are included below, but we recommend that they be included directly into future drafts of HTML 2.1, for consistency. This section will be removed from future versions of this draft, once these issues are resolved.
CHARSET in %linkExtraAttributes Change to ACCEPT-CHARSET to allow content negotiation.
ACCEPT-CHARSET in <FORM> Echoing comments of Larry Masinter, drop for now. This is wrong because it conflicts with media type metainfo for the FORM link, which should have priority since client Accept-ance was invented first! An ACCEPT-CHARSET should be given to each relevant INPUT instead.
ACCEPT in <INPUT> Add ACCEPT-CHARSET and ACCEPT-ENCODING here for constraining input values (not in <FORM> element).
METHODS in %linkExtraAttributes This should eventually be replaced by a per-link-variant METHOD attribute; multiple methods may have conflicting type signatures, not to mention semantics and security implications.
The proposed HTML 2.1E DTD may be constructed unambiguously from the HTML 2.1 DTD [4] and the DTD fragment below by the following procedure: Entity and element definitions already in HTML 2.1 are overridden (respecting the marked sections); all others are added to the end of the DTD in the order they appear here. <!-- This DTD fragment shows only changes from HTML 2.1 to 2.1E --> <!ENTITY % HTML.Version "-//IETF//DTD HTML 2.1E//EN"> <!-- Content models --> <![ %HTML.Highlighting [ <!ENTITY % text "#PCDATA|A|EMBED|IMG|BR|%phrase|%font|SPAN|Q|BDO|SUP|SUB"> ]]> <!ENTITY % text "#PCDATA|A|EMBED|IMG|BR|SPAN|Q|BDO|SUP|SUB"> <!-- Attribute value types --> <!ENTITY % URI "CDATA" -- uniform resource identifier --> <!ENTITY % Length "CDATA" -- number followed by optional units --> <!-- Attribute sets --> <!ENTITY % attrs 'ID ID #IMPLIED -- element identifier -- LANG NAME #IMPLIED -- RFC 1766 language tag -- DIR (ltr|rtl) #IMPLIED -- text directionality --'> <!ENTITY % size 'WIDTH %Length #IMPLIED -- desired width in units -- HEIGHT %Length #IMPLIED -- desired height in units --'> <!ENTITY % align.simple 'ALIGN (top|middle|bottom) #IMPLIED -- glyph alignment --'> <!ENTITY % align 'ALIGN (top|middle|bottom|left|center|right) #IMPLIED HSPACE %Length #IMPLIED -- text stays this far away horizontally -- VSPACE %Length #IMPLIED -- text stays this far away vertically -- FLOWTO NAME #IMPLIED -- flow text around block until this ID --'> <!ENTITY % mime.constraints -- MIME typing constraints -- 'ACCEPT CDATA "text/plain" -- applicable media type(s) -- ACCEPT-CHARSET CDATA "ISO-8859-1" -- appl. character encoding(s) -- ACCEPT-ENCODING CDATA "ISO-8859-1" -- appl. transfer encoding(s) --'> <!ENTITY % link.internal -- links with implicit presentation resource -- 'SRC %URI; #REQUIRED -- resource to retrieve -- PARAMS CDATA #IMPLIED -- presentation specializer -- USEMAP %URI #IMPLIED -- default event handling, if needed --'> <!ENTITY % link.metainfo -- overall link metainfo -- 'TITLE CDATA #IMPLIED -- overall title for resource -- URN %URI #IMPLIED -- global entity name -- REL %linkType #IMPLIED -- link relationship -- REV %linkType #IMPLIED -- reverse relationship --'> <![ %HTML.Deprecated [ <!ENTITY % case.metainfo -- link metainfo for specific variant -- '%mime.constraints; -- type constraints -- METHODS NAMES #IMPLIED -- deprecated --'> ]]> <!ENTITY % case.metainfo -- link metainfo for specific variant -- '%mime.constraints; -- type constraints --'> <!ENTITY % linkExtraAttributes '%link.metainfo; %case.metainfo; '> <![ %HTML.Recommended [ <!ENTITY % key.value -- key/value pair with typed value -- 'NAME NAME #IMPLIED -- keyword, usually required -- VALUE CDATA #IMPLIED -- default value -- %mime.constraints; -- type constraints for value --'> ]]> <!ENTITY % key.value -- key/value pair with typed value -- 'NAME CDATA #IMPLIED -- keyword, usually required -- VALUE CDATA #IMPLIED -- default value -- %mime.constraints; -- type constraints for value --'> <!-- Embed and Related Elements --> <!ELEMENT EMBED - - (PARAM*, CAPTION?, EMBED.BODY, CREDIT?)> <!ATTLIST EMBED %attrs; %link.internal; %link.metainfo; %case.metainfo; %size; -- size of reserved area -- %align; -- alignment or float -- %SDAPREF; '<Fig><Xref IDRef="#AttVal(SRC)"><?SDATrans Embed: #AttList>' %SDASUFF; '</Fig>' > <!ELEMENT CAPTION - - (%text;)+ -- caption for floating element --> <!ATTLIST CAPTION %attrs; %align; -- side of rectangle where caption placed -- %SDAPREF; "Caption: " > <!ELEMENT EMBED.BODY O O %A.content> <!ATTLIST EMBED.BODY %attrs; > <!ELEMENT CREDIT - - (%text;)* -- copyright/credit for embedded object --> <!ATTLIST CREDIT %attrs; %SDAFORM; "Fn" > <!-- Link Specializer Elements --> <!ELEMENT INPUT - O EMPTY -- builds retrieval specializer -- > <!ATTLIST INPUT %attrs; %key.value; -- key and MIME-typed value -- TYPE %InputType #IMPLIED -- defaults to TEXT in FORM context -- CHECKED (CHECKED) #IMPLIED -- initial boolean state -- SRC %URI; #IMPLIED -- embedded graphic for TYPE=IMAGE -- %align.simple; -- alignment for TYPE=IMAGE -- SIZE CDATA #IMPLIED MAXLENGTH NUMBER #IMPLIED %SDAPREF; "Input #AttVal(Type): " > <!ELEMENT PARAM - O EMPTY -- builds presentation specializer -- > <!ATTLIST PARAM %attrs; %key.value; %SDAPREF; "<?SDATrans Param: #AttList>" > <!-- Corrections --> <!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)> <!ATTLIST FORM %attrs; ACTION CDATA #IMPLIED METHOD (%HTTP-Method) GET ENCTYPE %Content-Type; "application/x-www-form-urlencoded" %SDAPREF; "<Para>Form:</Para>" %SDASUFF; "<Para>Form End.</Para>" >
Sun's <APPLET> element [9] can be mapped to <EMBED> with essentially just a few name changes:
* APPLET becomes EMBED
* NAME becomes ID
* CODE is prefixed with CODEBASE to become SRC
* CODEBASE is not needed (the embedding API is required to pass the retrieval URI (the SRC) to the media handler, from which the CODEBASE can be deduced)
It is possible to construct peculiar examples where the CODEBASE is not the base URI of the combination of CODEBASE with CODE, but this seems more confusing than useful.
Netscape initially implemented <EMBED> as an empty element [10], not a container. While this causes some forward-compatibility problems, the %A.content content model of <EMBED.BODY> allows error recovery to occur after the first paragraph break when </EMBED> is omitted.
Netscape's initial implementation also uses arbitrary attributes to pass parameters. In the interim, authors can use a combination like the following for compatibility (though it's still not legal SGML):
<EMBED SRC="sample.app" ALT="simple alt text" FOO=3 BAR=9> <PARAM NAME=foo VALUE=3> <PARAM NAME=bar VALUE=9> </EMBED> *8. Security Considerations >Immediate invocation of link without user feedback or control aggravates security problems of links described in [11].
Dave Raggett did a lot of the early work on <FIG> [12] which is reflected here in <EMBED>.
Arthur van Hoff of Sun Microsystems designed <APPLET> based on discussion in the hotjava-interest mailing list. This proposal has been strongly influenced by the <APPLET> tag.
Dan Connolly began work to formalize the Web model [13]. Discussions with Larry Masinter and Gavin Nicol were also important in shaping the model presented here.
1. T. Berners-Lee and D. Connolly, HTML 2.0, RFC 1866.
2. J. Postel, Internet Media Types, RFC 1590.
3. R. Fielding, Relative Uniform Resource Locators, RFC 1808.
4. F. Yergeau, G. Nicol, G. Adams, and M. Duerst, HTML Internationalization.
5. N. Borenstein and N. Freed, MIME Content Types, RFC 1521.
6. T. Berners-Lee, Universal Resource Identifiers, RFC 1630.
7. T. Berners-Lee, R. Fielding, and H. F. Nielsen, HTTP/1.1.
8. Larry Masinter et al., Form-Based File Upload in HTML, RFC 1867.
9. Sun Microsystems, APPLET Element Syntax.
10. Netscape Communications, Netscape Navigator 2.0 Feature Descriptions
11. T. Berners-Lee, L. Masinter, and M. McCahill, Uniform Resource Locators, RFC 1738.
12. Dave Raggett, HTML3 Draft.
13. Daniel W. Connolly, Resource Discovery and Reliable Links.
Paul Burchard <burchard@cs.princeton.edu> Computer Science Dept. Princeton University 35 Olden Street Princeton NJ 08544
Dave Raggett <dsr@w3.org> World Wide Web Consortium Massachusetts Institute of Technology 545 Technology Square Cambridge MA 02139