FRAME 文書は HTML 4 では特別な DTD で定義されています。
文書型定義宣言;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
典型的なページは次のように記述されます;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
...
</head>
<frameset>
...
</frameset>
</html>
Frameset DTD は Transitional DTD (loose DTD) にフレーム定義要素を追加して修正するという形で定義されています。原則 Transitional に従うとして良いでしょう。
<!ENTITY % html.content "HEAD, FRAMESET"> <!ELEMENT HTML O O (%html.content;) -- document root element --> <!ATTLIST HTML %i18n; -- lang, dir -- %version; >
| DTD | HTML 要素の内容モデル |
|---|---|
| Transitional | HEAD, BODY |
| Frameset | HEAD, FRAMESET |
Frameset 文書の場合、最大親要素(ルート)である HTML 要素の子供要素(内容モデル)は HEAD 要素と FRAMESET 要素です。
Transitional では FRAMESET 要素ではなく BODY 要素が定義されていました。
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- window subdivision-->
<!ATTLIST FRAMESET
%coreattrs; -- id, class, style, title --
rows %MultiLengths; #IMPLIED -- list of lengths,
default: 100% (1 row) --
cols %MultiLengths; #IMPLIED -- list of lengths,
default: 100% (1 col) --
onload %Script; #IMPLIED -- all the frames have been loaded --
onunload %Script; #IMPLIED -- all the frames have been removed --
>
<!-- reserved frame names start with "_" otherwise starts with letter -->
<!ELEMENT FRAME - O EMPTY -- subwindow -->
<!ATTLIST FRAME
%coreattrs; -- id, class, style, title --
longdesc %URI; #IMPLIED -- link to long description
(complements title) --
name CDATA #IMPLIED -- name of frame for targetting --
src %URI; #IMPLIED -- source of frame content --
frameborder (1|0) 1 -- request frame borders? --
marginwidth %Pixels; #IMPLIED -- margin widths in pixels --
marginheight %Pixels; #IMPLIED -- margin height in pixels --
noresize (noresize) #IMPLIED -- allow users to resize frames? --
scrolling (yes|no|auto) auto -- scrollbar or none --
>
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
<!ELEMENT NOFRAMES - - %noframes.content;
-- alternate content container for non frame-based rendering -->
<!ATTLIST NOFRAMES
%attrs; -- %coreattrs, %i18n, %events --
>
FRAMESET 文書で追加・修正された要素は FRAMESET, FRAME, NOFRAMES 要素です。
FRAMESET 要素はウィンドウの分割体裁を指定し、 NOFRAMES 要素を含む事で、フレームをサポートしていなかったり、表示しないように設定しているブラウザの為の代替内容を提供できます。
BODY 要素やその子供要素は、最初の FRAMESET 以前に現れてはならず、現れた場合は後続の FRAMESET 要素は無視されます。