FramesetのDTDを見る


Framesetと"INCLUDE"

 フレームセットの場合は、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Frameset//EN">
と宣言するとなっています。これは、以下のような記載になっています。
<!ENTITY % HTML.Frameset "INCLUDE">
<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
%HTML4.dtd;
<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
に、%HTML.FramesetをINCLUDEと宣言し、マーク区分で%HTML.Framesetを使います。


以下のコメントが記載されています。
%HTML.Framesetとは、をDTDでみましょう。

<!--
    これはHTML 4.0フレームセット用DTD(HTML 4.0 Frameset DTD)で、フ
    レームのある文書の場合に使います。このDTDは、"HTML"要素の内容モ
    デルがframeset文書で、"BODY"要素が"FRAMESET"要素に置き換わること
    以外はHTML 4.0 Transitional DTDと同じです。

-->

マーク部分(区分)の見方

マーク部分(区分)の見方は、
<![ INCLUDE [*****************************************]]>
*****************************************を無視しないで、文書の一部として
解釈する。

<![%HTML.Frameset; [*****************************************]]>
は、<!ENTITY % HTML.Frameset "INCLUDE">と宣言されているので、
<![ INCLUDE [*****************************************]]>
ということになります。
 
<![ %HTML.Frameset; [<!ENTITY % html.content "HEAD, FRAMESET">]]>
<!ENTITY % html.content "HEAD, BODY">

%HTML.Frameset;なら(マーク区分でのINCLUDEと同じで補足説明になっています)、
<!ENTITY % html.content "HEAD, FRAMESET">で、HEADに続いてFRAMESETです。

Transitionalでは(このDTDはTransitionalのDTDですので)、
<!ENTITY % html.content "HEAD, BODY">で、HEADに続いてBODYです
です。

<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> では、 <!--================ Document Structure ==================================--> <!ENTITY % version "version CDATA #FIXED '%HTML.Version;'"> <![ %HTML.Frameset; [ <!ENTITY % html.content "HEAD, FRAMESET"> ]]> <!ENTITY % html.content "HEAD, BODY"> <!ELEMENT HTML O O (%html.content;) -- document root element --> <!ATTLIST HTML %i18n; -- lang, dir -- %version; >

FRAMESETとNOFRAMESの内容の規定

<!ENTITY % HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
では、
<!--================== Document Frames ===================================-->

<!--
  HTML文書の内容モデルは、HEADに続いてFRAMESET要素がくるのかBODY要素が
  くるのかで、ことなります。
  BODY開始タグの省略が広く行き渡っていますが、マークセクションが使用さ
  れていないと内容モデルを定義するのに実際上こまります。
-->

<!-- Feature Switch for frameset documents -->
<!-- frameset文書への切り替え-->

<!ENTITY % HTML.Frameset "IGNORE">
<!ENTITY % HTML.Framesetは、transitionalでは無視します。>

%HTML.Framesetであれば、マーク部分で補足説明
==================================================

<![ %HTML.Frameset; [
<!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 -- 
  >
]]>


%HTML.Framesetであれば、マーク部分で補足説明
==========================================
<![ %HTML.Frameset; [
<!-- 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 --
  >
]]>
%HTML.Framesetであれば、の条件終。
=================================

<!ELEMENT IFRAME - - (%flow;)*         -- inline subwindow -->
<!ATTLIST IFRAME
  %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 --
  scrolling   (yes|no|auto)  auto      -- scrollbar or none --
  align       %IAlign;       #IMPLIED  -- vertical or horizontal alignment --
  height      %Length;       #IMPLIED  -- frame height --
  width       %Length;       #IMPLIED  -- frame width --
  >

%HTML.Framesetであれば、マーク部分で補足説明
==========================================
<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>

つまり、NOFRAMESの内容がBODYでNOFRAMESの入れ子はできません。 前述の様に、BODYは省略しないこと。

<!ENTITY % noframes.content "(%flow;)*">
  transitionalでは(transitionalのDTDですので)、%flow;ということです
<!ELEMENT NOFRAMES - - %noframes.content;
 -- alternate content container for non frame-based rendering -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
<!ELEMENT NOFRAMES - - %noframes.content;
 -- alternate content container for non frame-based rendering -->

となっていても、条件によって、%noframes.contentの意味が異なってきています。

[ホーム]


http://www.asahi-net.or.jp/‾bd9y-ktu/dtd_f/frset.html