<!--============ HTML Document Type Definition Mozilla 2.0 ================-->

<!--                  THIS IS EXPERIMENTAL by k16                          -->

<!--=================== Mozilla Version Control ===========================-->

<!ENTITY % MOZILLA.40 "IGNORE">
<!ENTITY % MOZILLA.30 "IGNORE">

<!--================== Deprecated Features Switch =========================-->

<!ENTITY % HTML.Deprecated "INCLUDE">

<!--================== Imported Names =====================================-->

<!ENTITY % Content-Type "CDATA"
        -- meaning a MIME content type, as per RFC1521
        -->

<!ENTITY % HTTP-Method "GET | POST"
        -- as per HTTP specification
        -->

<!ENTITY % MIMEType "CDATA">

<!ENTITY % URL "CDATA"
        -- The term URL means a CDATA attribute
           whose value is a Uniform Resource Locator,
           See RFC1808 (June 95) and RFC1738 (Dec 94).
        -->

<!ENTITY % URLwithName "CDATA" -- URL#Name -->

<!-- Parameter Entities -->

<![ %MOZILLA.40 [
<!ENTITY % head.misc "SCRIPT|SERVER|STYLE|META|LINK">
]]>
<!ENTITY % head.misc "SCRIPT|SERVER|META|LINK" -- repeatable head elements -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<!ENTITY % list "UL|OL|DIR|MENU">

<![ %HTML.Deprecated [
<!ENTITY % preformatted "PRE|XMP|LISTING">
]]>
<!ENTITY % preformatted "PRE|XMP">

<!ENTITY % Script "CDATA">
<!ENTITY % StyleSheet "CDATA">

<!--================ Character mnemonic entities ==========================-->

<!ENTITY % ISOlat1 PUBLIC
       "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML">
%ISOlat1;

<!--================ Entities for special symbols =========================-->
<!-- &trade and &cbsp are not widely deployed and so not included here -->

<!ENTITY amp    CDATA "&#38;"   -- ampersand          -->
<!ENTITY gt     CDATA "&#62;"   -- greater than       -->
<!ENTITY lt     CDATA "&#60;"   -- less than          -->
<!ENTITY quot   CDATA "&#34;"   -- double quote       -->
<!ENTITY nbsp   CDATA "&#160"   -- non-breaking space -->

<!--=================== Generic Attributes ===============================-->

<!ENTITY % Lang "NAME">

<![ %MOZILLA.40 [
<!ENTITY % coreattrs
 "id          ID         #IMPLIED  -- document-wide unique id --
  class       CDATA      #IMPLIED  -- space separated list of classes --
  style    %StyleSheet   #IMPLIED  -- associated style info --
 ">
]]>
<![ %MOZILLA.30 [
<!ENTITY % coreattrs
 "id          ID         #IMPLIED  -- document-wide unique id --
  class       CDATA      #IMPLIED  -- space separated list of classes --
 ">
<!ENTITY % i18n
 "lang        %Lang      #IMPLIED  -- [RFC1766] language value --
 ">
]]>
<!ENTITY % coreattrs "">
<!ENTITY % i18n      "">

<!ENTITY % attrs "%coreattrs %i18n">

<!--=================== Text Markup =======================================-->

<![ %MOZILLA.30 [
<!ENTITY % font "TT|I|B|BIG|SMALL|SUB|SUP|BLINK|STRIKE|S|U">
]]>
<!ENTITY % font "TT|I|B|BIG|SMALL|SUB|SUP|BLINK">

<!ENTITY % phrase "EM|STRONG|CODE|SAMP|KBD|VAR|CITE">

<![ %MOZILLA.40 [
<!ENTITY % special "A|IMG|HYPE|APPLET|EMBED|OBJECT|FONT|BASEFONT|BR|WBR|NOBR|
                    SCRIPT|SERVER|NOSCRIPT|MAP|SPACER|LAYER|ILAYER|NOLAYER|SPAN">
]]>
<![ %MOZILLA.30 [
<!ENTITY % special "A|IMG|HYPE|APPLET|EMBED|FONT|BASEFONT|BR|WBR|NOBR|SCRIPT|SERVER|
                    NOSCRIPT|MAP|SPACER">
]]>
<!ENTITY % special "A|IMG|HYPE|APPLET|EMBED|FONT|BASEFONT|BR|WBR|NOBR|SCRIPT|SERVER|
                    MAP">

<![ %MOZILLA.30 [
<!ENTITY % form "INPUT|SELECT|TEXTAREA|KEYGEN">
]]>
<!ENTITY % form "INPUT|SELECT|TEXTAREA">

<!ENTITY % text "#PCDATA|%font|%phrase|%special">

<!ELEMENT (%font;|%phrase;) - - (%text;)*>
<!ATTLIST (%font;|%phrase;)
        %attrs;
        >

<!-- there are also 16 widely known color names although
  the resulting colors are implementation dependent:

   aqua, black, blue, fuchsia, gray, green, lime, maroon,
   navy, olive, purple, red, silver, teal, white, and yellow

 These colors were originally picked as being the standard
 16 colors supported with the Windows VGA palette.
 -->

<!ENTITY % rsize "CDATA">
<!ENTITY % fsize "CDATA">
<!ENTITY % face  "CDATA">
<!ENTITY % point "CDATA">
<!ENTITY % color "CDATA" -- a color specification: #HHHHHH @@ details? -->

<![ %MOZILLA.40 [
<!ENTITY % font-attrs
   "face       %face;  #IMPLIED
    point-size %point; #IMPLIED
    weight     NUMBER  #IMPLIED
   ">
]]>
<![ %MOZILLA.30 [
<!ENTITY % font-attrs
   "face    %face; #IMPLIED
   ">
]]>
<!ENTITY % font-attrs "">

<!ELEMENT FONT - - (%text;)*     -- local change to font -->
<!ATTLIST FONT
    %attrs;
    size    %rsize;   3           -- [+]nn e.g. size="+1", size=4 --
    color   %color;   #IMPLIED    -- #RRGGBB in hex, e.g. red: color="#FF0000" --
    %font-attrs;
    >

<!ELEMENT BASEFONT - O (%text;)*  -- base font size (1 to 7)-->
<!ATTLIST BASEFONT
    %attrs;
    size    %fsize;   3  -- e.g. size=3 --
    >

<!ELEMENT (BR|WBR) - O EMPTY    -- forced line break -->
<!ATTLIST BR
    %attrs;
    clear (left|all|right) #IMPLIED -- control of text flow --
    >
<!ATTLIST WBR
    -- %attrs; --
    >

<!ELEMENT NOBR - O (%text;)* -(NOBR) >
<!ATTLIST NOBR
    %attrs;
    >

<!--================== HTML content models ================================-->
<!--
    HTML has three basic content models:

        %text;       character level elements and text strings
        %flow;       block-like elements e.g. paragraphs and lists
        %bodytext;   as %flow plus headers H1-H6 and ADDRESS
-->

<!ENTITY % block
     "P|%list;|%preformatted;|DL|DIV|CENTER|
      BLOCKQUOTE|FORM|ISINDEX|HR|TABLE|ADDRESS|MULTICOL">

<!ENTITY % block.content "(%heading;|%text;|%block;)*">

<!-- %flow is used for DD and LI -->

<!ENTITY % flow "(%text;|%block;)*">

<!--=================== Document Body =====================================-->

<!ENTITY % body.content "(%heading;|%text;|%block;)*">

<!ENTITY % body-color-attrs "
        bgcolor %color; #IMPLIED
        text %color;  #IMPLIED
        link %color;  #IMPLIED
        vlink %color; #IMPLIED
        alink %color; #IMPLIED
        ">

<!ENTITY % Length "CDATA"   -- nn for pixels or nn% for percentage length -->
<!ENTITY % Pixels "NUMBER"  -- integer representing length in pixels -->

<![ %MOZILLA.40 [
<!ENTITY % body-margin-attrs "
  marginwidth  %Pixels;       #IMPLIED  -- margin widths in pixels --
  marginheight %Pixels;       #IMPLIED  -- margin height in pixels --
  ">
]]>
<!ENTITY % body-margin-attrs "">

<!ELEMENT BODY O O  %body.content;>
<!ATTLIST BODY
        %attrs;
        background %URL; #IMPLIED  -- texture tile for document background --
        %body-color-attrs;  -- bgcolor, text, link, vlink, alink --
        %body-margin-attrs;
        onblur   %Script; #IMPLIED
        onfocus  %Script; #IMPLIED
        onload   %Script; #IMPLIED
        onunload %Script; #IMPLIED
        >

<!ENTITY % address.content "((%text;)|P)*">

<!ELEMENT ADDRESS - - %address.content;>
<!ATTLIST ADDRESS
        %attrs;
        >

<!ELEMENT DIV - - %body.content>
<!ATTLIST DIV
        %attrs;
        align   (left|center|right) left -- alignment of following text --
        >

<!-- CENTER is a shorthand for DIV with ALIGN=CENTER -->
<!ELEMENT CENTER - - %body.content;>
<!ATTLIST CENTER
        %attrs;
        >

<!--================== The Anchor Element =================================-->

<!ELEMENT A - - (%text;)* -(A)>
<!ATTLIST A
        %attrs;
        name    CDATA   #REQUIRED    -- named link end --
        href    %URL;    #REQUIRED    -- URL for linked resource --
        onclick     %Script; #IMPLIED
        onmouseout  %Script; #IMPLIED
        onmouseover %Script; #IMPLIED
        target  CDATA   #IMPLIED
        >

<!--================== Client-side image maps ============================-->

<!-- These can be placed in the same document or grouped in a
     separate document although this isn't yet widely supported -->

<!ENTITY % SHAPE "(rect|circle|poly|default)">
<!ENTITY % COORDS "CDATA" -- comma separated list of numbers -->

<!ELEMENT MAP - - (AREA)*>
<!ATTLIST MAP
    -- %attrs; --
    name    CDATA   #REQUIRED
    >

<!ELEMENT AREA - O EMPTY>
<!ATTLIST AREA
    %attrs;
    coords  %COORDS; #REQUIRED -- defines coordinates for shape --
    shape   %SHAPE;  rect
    href    %URL;    #REQUIRED -- this region acts as hypertext link --
    nohref (nohref) #IMPLIED  -- this region has no action --
    alt     CDATA   #IMPLIED  -- needed for non-graphical user agents (added by k16) --
    target  CDATA   #IMPLIED
    onmouseout  %Script; #IMPLIED
    onmouseover %Script; #IMPLIED
    >

<!--=================== Images ============================================-->

<!-- Suggested widths are used for negotiating image size
     with the module responsible for painting the image.
     align=left or right cause image to float to margin
     and for subsequent text to wrap around image -->

<![ %MOZILLA.40 [
<!ENTITY % img-attrs
       "suppress (true|false) false -- Navigator4.0  --
        nosave   (nosave) #IMPLIED  -- Navigator4.0? --">
]]>
<![ %MOZILLA.30 [
<!ENTITY % IAlign
     "(top|bottom|left|right|absmiddle|absbottom|texttop|middle|baseline)">
]]>
<!ENTITY % IAlign "(top|bottom|left|right)">
<!ENTITY % img-attrs "">

<!ELEMENT IMG    - O EMPTY --  Embedded image -->
<!ATTLIST IMG
        %attrs;
        src     %URL;     #REQUIRED  -- URL of image to embed --
        lowsrc  %URL;     #IMPLIED
        alt     CDATA     #IMPLIED   -- for display in place of image --
        align   %IAlign;  #IMPLIED   -- vertical or horizontal alignment --
        border  %Pixels;  #IMPLIED   -- suggested link border width --
        height  %Length;  #IMPLIED   -- suggested height in pixels --
        width   %Length;  #IMPLIED   -- suggested width in pixels --
        hspace  %Pixels;  #IMPLIED   -- suggested horizontal gutter --
        vspace  %Pixels;  #IMPLIED   -- suggested vertical gutter --
        ismap   (ismap)   #IMPLIED   -- use server image map --
        usemap  %URLwithName #IMPLIED   -- use client-side image map --
        name    CDATA    #IMPLIED
        onabort %Script; #IMPLIED
        onerror %Script; #IMPLIED
        onload  %Script; #IMPLIED
        %img-attrs;
        >

<!ELEMENT HYPE - O EMPTY --  Secret tag ???  -->

<!-- USEMAP points to a MAP element which may be in this document
  or an external document, although the latter is not widely supported -->

<!--=================== Embedding =========================================-->

<!ENTITY % time   "CDATA" -- \d{2}:\d{2} -->
<!ENTITY % volume "CDATA" -- \d{1,2}|100 -->
<!ENTITY % border "CDATA" -- \d+|BORDER -->

<!ELEMENT EMBED - - (NOEMBED|%body.content;)*>
<!ATTLIST EMBED
        -- %attrs; --
        ALIGN          (left|right|top|bottom) left
        BORDER         %border; #IMPLIED
        FRAMEBORDER    (NO)    #IMPLIED
        HEIGHT         %Pixels; #IMPLIED
        WIDTH          %Pixels; #IMPLIED
        UNITS          %Pixels; #IMPLIED
        HIDDEN         (TRUE|FALSE) FALSE
        NAME           CDATA #IMPLIED
        PALETTE        (FOREGROUND|BACKGROUND) BACKGROUND
        PLUGINSPAGE    %URL;      #IMPLIED
        PLUGINURL      %URL;      #IMPLIED
        SRC            %URL;      #REQUIRED -- SRC or TYPE is required --
        TYPE           %MIMEType; #REQUIRED -- SRC or TYPE is required --
        HSPACE         %Pixels; #IMPLIED
        VSPACE         %Pixels; #IMPLIED
        >

<!ELEMENT NOEMBED - - (#PCDATA) -(NOEMBED)>
<!ATTLIST NOEMBED
    %attrs;
    >

<![ %MOZILLA.40 [
<!ELEMENT OBJECT - - (PARAM | %flow;)*>
<!ATTLIST OBJECT
    CLASSID  %URL;      #IMPLIED
    DATA     %URL;      #IMPLIED
    CODEBASE %URL;      #IMPLIED
    TYPE     %MIMEType; #IMPLIED
    ALIGN    (left|right|top|bottom) left
    HEIGHT   %Pixels;   #IMPLIED
    WIDTH    %Pixels;   #IMPLIED
    ID       ID         #IMPLIED
    >
]]>

<!--=================== Java APPLET tag ===================================-->
<!--
  This tag is supported by all Java enabled browsers. Applet resources
  (including their classes) are normally loaded relative to the document
  URL (or <BASE> element if it is defined). The CODEBASE attribute is used
  to change this default behavior. If the CODEBASE attribute is defined then
  it specifies a different location to find applet resources. The value
  can be an absolute URL or a relative URL. The absolute URL is used as is
  without modification and is not effected by the documents <BASE> element.
  When the codebase attribute is relative, then it is relative to the
  document URL (or <BASE> tag if defined).
-->

<![ %MOZILLA.30 [
<!ENTITY % applet-attrs
       "archive   %URL;       #IMPLIED
        mayscript (mayscript) #IMPLIED">
]]>
<!ENTITY % applet-attrs "">

<!ELEMENT APPLET - - (PARAM|%text;)*>
<!ATTLIST APPLET
        %attrs;
        code     %URL;     #REQUIRED  -- class file --
        codebase %URL;     #IMPLIED   -- code base --
        name     CDATA     #IMPLIED   -- applet name --
        width    %Length;  #REQUIRED  -- suggested width in pixels --
        height   %Length;  #REQUIRED  -- suggested height in pixels --
        align    %IAlign;  bottom     -- vertical or horizontal alignment --
        hspace   %Pixels;  #IMPLIED   -- suggested horizontal gutter --
        vspace   %Pixels;  #IMPLIED   -- suggested vertical gutter --
        alt      CDATA     #IMPLIED   -- for display in place of applet --
        %applet-attrs;
        >

<!ELEMENT PARAM - O EMPTY>
<!ATTLIST PARAM
        -- %attrs; --
        name    NMTOKEN   #REQUIRED  -- The name of the parameter --
        value   CDATA     #REQUIRED  -- The value of the parameter --
        >

<!--
Here is an example:

    <applet codebase="applets/NervousText"
        code=NervousText.class
        width=300
        height=50>
    <param name=text value="Java is Cool!">
    <img src=sorry.gif alt="This looks better with Java support">
    </applet>
-->

<!--=================== Horizontal Rule ===================================-->

<!ELEMENT HR    - O EMPTY>
<!ATTLIST HR
        %attrs;
        align (left|right|center) center
        noshade (noshade) #IMPLIED
        size  %Pixels; #IMPLIED
        width %Length; #IMPLIED
        >

<![ %MOZILLA.30 [
<!ELEMENT SPACER - O EMPTY>
<!ATTLIST SPACER
        -- %attrs; --
        ALIGN  %IAlign; bottom
        HEIGHT %Pixels; #IMPLIED
        WIDTH  %Pixels; #IMPLIED
        SIZE   %Pixels; #IMPLIED
        TYPE  (horizontal|vertical|block)   #IMPLIED
        >
]]>

<!--=================== Paragraphs =========================================-->

<!ELEMENT P     - O (%text;)*>
<!ATTLIST P
        %attrs;
        align  (left|center|right) left
        >

<!--=================== Headings ==========================================-->

<!--
  There are six levels of headers from H1 (the most important)
  to H6 (the least important).
-->

<!ELEMENT (%heading)  - -  (%text;)*>
<!ATTLIST (%heading)
        %attrs;
        align  (left|center|right) left
        >

<!--=================== Preformatted Text =================================-->

<!-- excludes images and changes in font size -->

<![ %MOZILLA.40 [
<!ENTITY % pre.exclusion "IMG|APPLET|OBJECT|HYPE|BIG|SMALL|SUB|SUP|FONT|EMBED">
]]>
<!ENTITY % pre.exclusion "IMG|APPLET|HYPE|BIG|SMALL|SUB|SUP|FONT|EMBED">

<!ELEMENT PRE - - (%text;)* -(%pre.exclusion)>
<!ATTLIST PRE
    %attrs;
    cols      NUMBER     #IMPLIED
    wrap      (wrap)     #IMPLIED
    >


<!ENTITY % literal "CDATA"
        -- historical, non-conforming parsing mode where
           the only markup signal is the end tag
           in full
        -->

<!ELEMENT XMP - -  %literal>
<!ATTLIST XMP
    %attrs;
    >

<![ %HTML.Deprecated [
    <!ELEMENT LISTING - -  %literal>
    <!ATTLIST LISTING
        %attrs;
        >
    <!ELEMENT PLAINTEXT - O %literal;>
    <!ATTLIST PLAINTEXT
        %attrs;
        >
]]>

<!--=================== Block-like Quotes =================================-->

<!ELEMENT BLOCKQUOTE - - %body.content;>
<!ATTLIST BLOCKQUOTE
        %attrs;
        >

<!--=================== Lists =============================================-->

<!--
    HTML 3.2 allows you to control the sequence number for ordered lists.
    You can set the sequence number with the START and VALUE attributes.
    The TYPE attribute may be used to specify the rendering of ordered
    and unordered lists.
-->

<!-- definition lists - DT for term, DD for its definition -->

<!ELEMENT DL    - -  (DT|DD)+>
<!ATTLIST DL
        %attrs;
        compact (compact) #IMPLIED -- more compact style --
        >

<!ELEMENT DT - O  (%text;)*>
<!ELEMENT DD - O  %flow;>
<!ATTLIST (DT|DD)
        %attrs;
        >

<!-- Ordered lists OL, and unordered lists UL -->
<!ELEMENT (OL|UL) - -  (LI)+>

<!--
       Numbering style
    1   Arabic numbers      1, 2, 3, ...
    a   lower alpha         a, b, c, ...
    A   upper alpha         A, B, C, ...
    i   lower Roman         i, ii, iii, ...
    I   upper Roman         I, II, III, ...

    The style is applied to the sequence number which by default
    is reset to 1 for the first list item in an ordered list.

    This can't be expressed directly in SGML due to case folding.
-->

<!ENTITY % OLStyle "CDATA" -- constrained to: [1|a|A|i|I] -->

<!ATTLIST OL -- ordered lists --
        %attrs;
        type      %OLStyle;  #IMPLIED   -- numbering style --
        start     NUMBER     #IMPLIED   -- starting sequence number --
        >

<!-- bullet styles -->

<!ENTITY % ULStyle "disc|square|circle">

<!ATTLIST UL -- unordered lists --
        %attrs;
        type    (%ULStyle;)  #IMPLIED   -- bullet style --
        >

<![ %MOZILLA.40 [
<!ENTITY % DIRStyle "CDATA" -- constrained to: [1|a|A|i|I|disc|square|circle] -->
<!ENTITY % dir-types "type %DIRStyle; #IMPLIED">
]]>
<!ENTITY % dir-types "">

<!ELEMENT (DIR|MENU) - -  (LI)+ -(%block;)>
<!ATTLIST (DIR|MENU)
        %attrs;
        %dir-types;
        -- compact (compact) #IMPLIED --
        >

<!-- <DIR>              Directory list                  -->
<!-- <DIR COMPACT>      Compact list style              -->
<!-- <MENU>             Menu list                       -->
<!-- <MENU COMPACT>     Compact list style              -->

<!-- The type attribute can be used to change the bullet style
     in unordered lists and the numbering style in ordered lists -->

<!ENTITY % LIStyle "CDATA" -- constrained to: "(%ULStyle|%OLStyle)" -->

<!ELEMENT LI - O %flow -- list item -->
<!ATTLIST LI
        %attrs;
        type    %LIStyle;    #IMPLIED   -- list item style --
        value    NUMBER      #IMPLIED   -- reset sequence number --
        >

<!--================ Forms ===============================================-->

<!ELEMENT FORM - - %body.content; -(FORM) +(%form;)>
<!ATTLIST FORM
        %attrs;
        action %URL; #IMPLIED  -- server-side form handler --
        method (%HTTP-Method;) GET -- see HTTP specification --
        enctype %Content-Type; "application/x-www-form-urlencoded"
        name   CDATA #IMPLIED
        target CDATA #IMPLIED
        onreset  %Script; #IMPLIED
        onsubmit %Script; #IMPLIED
        >

<!ENTITY % InputType
        "(BUTTON|CHECKBOX|FILE|HIDDEN|IMAGE|PASSWORD|RADIO|RESET|SUBMIT|TEXT)">

<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
        %attrs;
        type  %InputType; TEXT     -- what kind of widget is needed --
        name  CDATA   #IMPLIED   -- required for all but submit and reset --
        value CDATA   #IMPLIED   -- required for radio and checkboxes --
        checked (checked) #IMPLIED -- for radio buttons and check boxes --
        size  %Pixels;    #IMPLIED  -- specific to each type of field --
        maxlength NUMBER #IMPLIED -- max chars allowed in text fields --
        src   %URL;    #IMPLIED   -- for fields with background images --
        align %IAlign; #IMPLIED   -- vertical or horizontal alignment --
        onblur   %Script; #IMPLIED
        onchange %Script; #IMPLIED
        onclick  %Script; #IMPLIED
        onfocus  %Script; #IMPLIED
        onselect %Script; #IMPLIED
        width   %Length;  #IMPLIED  -- (added by k16) --
        height  %Length;  #IMPLIED  -- (added by k16) --
        border  %border;  #IMPLIED  -- (added by k16) --
        >

<!ELEMENT SELECT - - (OPTION+) -(%form)>
<!ATTLIST SELECT
        -- %attrs; --
        name CDATA #REQUIRED
        size %Pixels; #IMPLIED
        multiple (multiple) #IMPLIED
        onblur   %Script; #IMPLIED
        onchange %Script; #IMPLIED
        onclick  %Script; #IMPLIED
        onfocus  %Script; #IMPLIED
        >

<!ELEMENT OPTION - O (#PCDATA)*>
<!ATTLIST OPTION
        -- %attrs; --
        selected (selected) #IMPLIED
        value  CDATA  #IMPLIED -- defaults to element content --
        >

<!-- Multi-line text input field. -->

<!ELEMENT TEXTAREA - - (#PCDATA)* -(%form)>
<!ATTLIST TEXTAREA
        %attrs;
        name CDATA #REQUIRED
        cols NUMBER #REQUIRED
        rows NUMBER #IMPLIED
        wrap (OFF|HARD|SOFT) #IMPLIED
        onblur   %Script; #IMPLIED
        onchange %Script; #IMPLIED
        onfocus  %Script; #IMPLIED
        onselect %Script; #IMPLIED
        >

<![ %MOZILLA.30 [
<!ELEMENT KEYGEN - O EMPTY>
<!ATTLIST KEYGEN
        -- %attrs; --
        CHALLENGE CDATA #IMPLIED
        NAME      CDATA #REQUIRED
        >
]]>

<!--======================= Tables ========================================-->

<!-- Widely deployed subset of the full table standard, see RFC 1942
     e.g. at http://www.ics.uci.edu/pub/ietf/html/rfc1942.txt -->

<!-- horizontal placement of table relative to window -->
<![ %MOZILLA.40 [
<!ENTITY % Where "(left|center|right)">
]]>
<!ENTITY % Where "(left|right)">

<!-- horizontal alignment attributes for cell contents -->
<!ENTITY % cell.halign
        "align  (left|center|right) #IMPLIED"
        >

<!-- vertical alignment attributes for cell contents -->
<!ENTITY % cell.valign
        "valign  (top|middle|bottom|baseline)  #IMPLIED"
        >

<!ELEMENT TABLE - - (CAPTION?, TR+)>
<!ELEMENT TR - O (TH|TD)*>
<!ELEMENT (TH|TD) - O %body.content;>

<![ %MOZILLA.40 [
<!ENTITY % table-attrs
       "BACKGROUND  %URL;    #IMPLIED  -- (added by k16) --
        BGCOLOR     %color;  #IMPLIED
        BORDERCOLOR %color;  #IMPLIED
        COLS        NUMBER   #IMPLIED
       ">
]]>
<![ %MOZILLA.30 [
<!ENTITY % table-attrs
       "BGCOLOR   %color;   #IMPLIED">
]]>
<!ENTITY % table-attrs "">

<!ATTLIST TABLE                       -- table element --
        %attrs;
        align     %Where;   #IMPLIED  -- table position relative to window --
        width     %Length;   #IMPLIED  -- table width relative to window --
        height    %Pixels;   #IMPLIED
        border    %border;   #IMPLIED  -- controls frame width around table --
        cellspacing %Pixels; #IMPLIED  -- spacing between cells --
        cellpadding %Pixels; #IMPLIED  -- spacing within cells --
        hspace    %Pixels;   #IMPLIED
        vspace    %Pixels;   #IMPLIED
        %table-attrs;
        >

<!ELEMENT CAPTION - - (%text;)* -- table or figure caption -->
<!ATTLIST CAPTION
        %attrs;
        align (top|bottom) top
        >

<![ %MOZILLA.30 [
<!ENTITY % tr-attrs
       "BGCOLOR   %color;   #IMPLIED">
]]>
<!ENTITY % tr-attrs "">

<!ATTLIST TR                       -- table row --
        -- %attrs; --
        %cell.halign;              -- horizontal alignment in cells --
        %cell.valign;              -- vertical alignment in cells --
        %tr-attrs;
        >

<![ %MOZILLA.40 [
<!ENTITY % tdth-attrs
       "BACKGROUND  %URL;    #IMPLIED  -- (added by k16) --
        BGCOLOR     %color;  #IMPLIED
       ">
]]>
<![ %MOZILLA.30 [
<!ENTITY % tdth-attrs
       "BGCOLOR   %color;   #IMPLIED">
]]>
<!ENTITY % tdth-attrs "">

<!ATTLIST (TH|TD)                  -- header or data cell --
        %attrs;
        nowrap (nowrap)  #IMPLIED  -- suppress word wrap --
        rowspan NUMBER   1         -- number of rows spanned by cell --
        colspan NUMBER   1         -- number of cols spanned by cell --
        %cell.halign;              -- horizontal alignment in cell --
        %cell.valign;              -- vertical alignment in cell --
        width   %Length;  #IMPLIED  -- suggested width for cell   HTML3.2??? --
        height  %Length;  #IMPLIED  -- suggested height for cell  HTML3.2??? --
        %tdth-attrs;
        >

<!--================== Multi Columns ====================================-->

<!ELEMENT MULTICOL - - (%text;)* >
<!ATTLIST MULTICOL
        %attrs;
        COLS   NUMBER #REQUIRED
        GUTTER %Pixels; #IMPLIED
        WIDTH  %Pixels; #IMPLIED
        >

<!--================== Document Frames ====================================-->

<!ENTITY % frame-size "CDATA" -- ((\d+[*%]?|\*),)*(\d+[*%]?|\*) -->

<![ %MOZILLA.30 [
<!ENTITY % frame-attrs
   "BORDERCOLOR  %color;       #IMPLIED
    FRAMEBORDER  (NO|YES)      YES       -- request frame separators? --">
<!ENTITY % frameset-attrs
   "%frame-attrs;
    ONBLUR      %Script; #IMPLIED
    ONFOCUS     %Script; #IMPLIED
    BORDER      %border; #IMPLIED">
]]>
<!ENTITY % frame-attrs "">
<!ENTITY % frameset-attrs "">

<!ELEMENT FRAMESET - - (FRAMESET|FRAME|NOFRAMES)+>
<!ATTLIST FRAMESET
  %attrs;
  -- absolute pixel values, percentages or relative scales. --
  rows        %frame-size; #REQUIRED  -- if not given, default is 1 row --
  cols        %frame-size; #REQUIRED  -- if not given, default is 1 column --
  onLoad      %Script; #IMPLIED  -- intrinsic event --
  onUnload    %Script; #IMPLIED  -- intrinsic event --
  %frameset-attrs;
  >

<!-- reserved frame names start with "_" otherwise starts with letter -->
<!ELEMENT FRAME - O EMPTY>
<!ATTLIST FRAME
  %attrs;
  name         CDATA         #IMPLIED  -- name of frame for targetting --
  src          %URL;          #REQUIRED -- source of frame content --
  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 --
  %frame-attrs;
  >

<!ELEMENT NOFRAMES - - (BODY|%body.content;) -(NOFRAMES)>
<!ATTLIST NOFRAMES
    -- %attrs; --
    >

<!--================== Style Sheet ====================================-->

<![ %MOZILLA.40 [

<!ELEMENT STYLE  - - CDATA -- placeholder for style info -->
<!ATTLIST STYLE
        -- %i18n; --
        TYPE  %Content-Type; #IMPLIED
        >

<!ELEMENT (LAYER|ILAYER)  - - (%body.content;) -(LAYER|ILAYER|NOLAYER)>
<!ATTLIST (LAYER|ILAYER)
--      ID                ID      #IMPLIED   change to %attrs by k16 --
        %attrs;
        LEFT              %point;  #IMPLIED
        TOP               %point;  #IMPLIED
        PAGEX             %Pixels; #IMPLIED
        PAGEY             %Pixels; #IMPLIED
        SRC               %URL;    #IMPLIED
        NAME              CDATA   #IMPLIED
        Z-INDEX           NUMBER  #IMPLIED
        ABOVE             ID      #IMPLIED
        BELOW             ID      #IMPLIED
        WIDTH             %Length; #IMPLIED
        HEIGHT            %Length; #IMPLIED
        CLIP              %COORDS; #IMPLIED
        VISIBILITY        (SHOW|HIDE|INHERIT) INHERIT
        BGCOLOR           %color;  #IMPLIED
--      BACKGROUND-COLOR  %color;  #IMPLIED --
        BACKGROUND        %URL;    #IMPLIED
--      BACKGROUND-IMAGE  %URL;    #IMPLIED --
        OnMouseOver       %Script; #IMPLIED
        OnMouseOut        %Script; #IMPLIED
        OnFocus           %Script; #IMPLIED
        OnBlur            %Script; #IMPLIED
        OnLoad            %Script; #IMPLIED
        >

<!ELEMENT NOLAYER - - (%body.content;) -(LAYER|ILAYER|NOLAYER)>
<!ATTLIST NOLAYER
        -- %i18n; --
        >

<!ELEMENT SPAN - - (%text;)*>
<!ATTLIST SPAN
    %attrs;
    STYLE %StyleSheet; #IMPLIED
    >

]]>

<!--================== The LINK Element ==================================-->

<![ %MOZILLA.40 [

<!ENTITY % Types "CDATA"
        -- See Internet Draft: draft-ietf-html-relrev-00.txt
           LINK has been part of HTML since the early days
           although few browsers as yet take advantage of it.

           Relationship values can be used in principle:

                a) for document specific toolbars/menus when used
                   with the LINK element in the document head:
                b) to link to a separate style sheet
                c) to make a link to a script
                d) by stylesheets to control how collections of
                   html nodes are rendered into printed documents
                e) to make a link to a printable version of this document
                   e.g. a postscript or pdf version
-->

<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
        -- %attrs; --
        src     %URL;    #IMPLIED    -- URL for linked resource --
        href    %URL;    #IMPLIED    -- (added by k16) --
        type    CDATA    #IMPLIED
        rel     %Types;  #IMPLIED    -- forward link types --
        rev     %Types;  #IMPLIED    -- reverse link types (added by k16) --
        >

]]>

<!--================ Document Head ========================================-->

<!-- %head.misc defined earlier on as "SCRIPT|SERVER|NOSCRIPT|STYLE|META|LINK" -->

<![ %MOZILLA.40 [
<!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE*">
]]>
<!ENTITY % head.content "TITLE & ISINDEX? & BASE?">

<!ELEMENT HEAD O O  (%head.content;) +(%head.misc;)>
<!ATTLIST HEAD
        -- %i18n; --
        >

<!ELEMENT TITLE - -  (#PCDATA)* -(%head.misc;)
          -- The TITLE element is not considered part of the flow of text.
             It should be displayed, for example as the page header or
             window title.
          -->
<!ATTLIST TITLE
        -- %i18n; --
        >

<!ELEMENT ISINDEX - O EMPTY>
<!ATTLIST ISINDEX
        %attrs;
        action %URL; #IMPLIED
        prompt CDATA #IMPLIED -- prompt message -->

<!--
    The BASE element gives an absolute URL for dereferencing relative
    URLs, e.g.

         <BASE href="http://foo.com/index.html">
         ...
         <IMG SRC="images/bar.gif">

    The image is deferenced to

         http://foo.com/images/bar.gif

   In the absence of a BASE element the document URL should be used.
   Note that this is not necessarily the same as the URL used to
   request the document, as the base URL may be overridden by an HTTP
   header accompanying the document.
-->

<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE
        href   %URL;  #REQUIRED
        target CDATA #IMPLIED
        >

<!ELEMENT META - O EMPTY -- Generic Metainformation -->
<!ATTLIST META
        -- %i18n; --
        http-equiv  NAME    #IMPLIED  -- HTTP response header name  --
        name        NAME    #IMPLIED  -- metainformation name       --
        content     CDATA   #REQUIRED -- associated information     --
        >

<![ %MOZILLA.30 [
<!ENTITY % script-attrs
       "LANGUAGE CDATA  #REQUIRED
        SRC      %URL;  #IMPLIED
       ">
]]>
<!ENTITY % script-attrs
       "LANGUAGE CDATA  #REQUIRED
       ">

<!ELEMENT SCRIPT - - CDATA -- placeholder for script statements -->
<!ATTLIST SCRIPT
        %coreattrs;
        -- %i18n; --
        %script-attrs;
        >

<!ELEMENT SERVER - - CDATA >
<!ATTLIST SERVER
        -- %attrs; --
        >

<![ %MOZILLA.30 [
<!ELEMENT NOSCRIPT - - (%body.content;) -(SCRIPT|NOSCRIPT)>
<!ATTLIST NOSCRIPT
        -- %attrs; --
        >
]]>

<!--================ Document Structure ===================================-->

<!ENTITY % HTML.Version
 "http://developer.netscape.com/library/documentation/htmlguid/index.htm"
>

<!ENTITY % version.attr "VERSION CDATA #FIXED '%HTML.Version;'">

<!ENTITY % html.body "(BODY|FRAMESET)">

<![ %HTML.Deprecated [
    <!ENTITY % html.content "HEAD, %html.body;, PLAINTEXT?">
]]>

<!ENTITY % html.content "HEAD, %html.body;">

<!ELEMENT HTML O O  (%html.content;)>
<!ATTLIST HTML
        %attrs;
        -- %i18n; --
        -- %version.attr; -->
