Home | History | Annotate | Download | only in dtds
      1 <!--
      2    Extensible HTML version 1.0 Frameset DTD
      3 
      4    This is the same as HTML 4.0 Frameset except for
      5    changes due to the differences between XML and SGML.
      6 
      7    Namespace = http://www.w3.org/1999/xhtml
      8 
      9    For further information, see: http://www.w3.org/TR/xhtml1
     10 
     11    Copyright (c) 1998-1999 W3C (MIT, INRIA, Keio),
     12    All Rights Reserved. 
     13 
     14    This DTD module is identified by the PUBLIC and SYSTEM identifiers:
     15 
     16    PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     17    SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
     18 
     19 
     20 -->
     21 
     22 <!--================ Character mnemonic entities =========================-->
     23 
     24 <!ENTITY % HTMLlat1 PUBLIC
     25    "-//W3C//ENTITIES Latin 1 for XHTML//EN"
     26    "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
     27 %HTMLlat1;
     28 
     29 <!ENTITY % HTMLsymbol PUBLIC
     30    "-//W3C//ENTITIES Symbols for XHTML//EN"
     31    "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
     32 %HTMLsymbol;
     33 
     34 <!ENTITY % HTMLspecial PUBLIC
     35    "-//W3C//ENTITIES Special for XHTML//EN"
     36    "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
     37 %HTMLspecial;
     38 
     39 <!--================== Imported Names ====================================-->
     40 
     41 <!ENTITY % ContentType "CDATA">
     42     <!-- media type, as per [RFC2045] -->
     43 
     44 <!ENTITY % ContentTypes "CDATA">
     45     <!-- comma-separated list of media types, as per [RFC2045] -->
     46 
     47 <!ENTITY % Charset "CDATA">
     48     <!-- a character encoding, as per [RFC2045] -->
     49 
     50 <!ENTITY % Charsets "CDATA">
     51     <!-- a space separated list of character encodings, as per [RFC2045] -->
     52 
     53 <!ENTITY % LanguageCode "NMTOKEN">
     54     <!-- a language code, as per [RFC1766] -->
     55 
     56 <!ENTITY % Character "CDATA">
     57     <!-- a single character from [ISO10646] -->
     58 
     59 <!ENTITY % Number "CDATA">
     60     <!-- one or more digits -->
     61 
     62 <!ENTITY % LinkTypes "CDATA">
     63     <!-- space-separated list of link types -->
     64 
     65 <!ENTITY % MediaDesc "CDATA">
     66     <!-- single or comma-separated list of media descriptors -->
     67 
     68 <!ENTITY % URI "CDATA">
     69     <!-- a Uniform Resource Identifier, see [RFC2396] -->
     70 
     71 <!ENTITY % UriList "CDATA">
     72     <!-- a space separated list of Uniform Resource Identifiers -->
     73 
     74 <!ENTITY % Datetime "CDATA">
     75     <!-- date and time information. ISO date format -->
     76 
     77 <!ENTITY % Script "CDATA">
     78     <!-- script expression -->
     79 
     80 <!ENTITY % StyleSheet "CDATA">
     81     <!-- style sheet data -->
     82 
     83 <!ENTITY % Text "CDATA">
     84     <!-- used for titles etc. -->
     85 
     86 <!ENTITY % FrameTarget "NMTOKEN">
     87     <!-- render in this frame -->
     88 
     89 <!ENTITY % Length "CDATA">
     90     <!-- nn for pixels or nn% for percentage length -->
     91 
     92 <!ENTITY % MultiLength "CDATA">
     93     <!-- pixel, percentage, or relative -->
     94 
     95 <!ENTITY % MultiLengths "CDATA">
     96     <!-- comma-separated list of MultiLength -->
     97 
     98 <!ENTITY % Pixels "CDATA">
     99     <!-- integer representing length in pixels -->
    100 
    101 <!-- these are used for image maps -->
    102 
    103 <!ENTITY % Shape "(rect|circle|poly|default)">
    104 
    105 <!ENTITY % Coords "CDATA">
    106     <!-- comma separated list of lengths -->
    107 
    108 <!-- used for object, applet, img, input and iframe -->
    109 <!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
    110 
    111 <!-- a color using sRGB: #RRGGBB as Hex values -->
    112 <!ENTITY % Color "CDATA">
    113 
    114 <!-- There are also 16 widely known color names with their sRGB values:
    115 
    116     Black  = #000000    Green  = #008000
    117     Silver = #C0C0C0    Lime   = #00FF00
    118     Gray   = #808080    Olive  = #808000
    119     White  = #FFFFFF    Yellow = #FFFF00
    120     Maroon = #800000    Navy   = #000080
    121     Red    = #FF0000    Blue   = #0000FF
    122     Purple = #800080    Teal   = #008080
    123     Fuchsia= #FF00FF    Aqua   = #00FFFF
    124 -->
    125 
    126 <!--=================== Generic Attributes ===============================-->
    127 
    128 <!-- core attributes common to most elements
    129   id       document-wide unique id
    130   class    space separated list of classes
    131   style    associated style info
    132   title    advisory title/amplification
    133 -->
    134 <!ENTITY % coreattrs
    135  "id          ID             #IMPLIED
    136   class       CDATA          #IMPLIED
    137   style       %StyleSheet;   #IMPLIED
    138   title       %Text;         #IMPLIED"
    139   >
    140 
    141 <!-- internationalization attributes
    142   lang        language code (backwards compatible)
    143   xml:lang    language code (as per XML 1.0 spec)
    144   dir         direction for weak/neutral text
    145 -->
    146 <!ENTITY % i18n
    147  "lang        %LanguageCode; #IMPLIED
    148   xml:lang    %LanguageCode; #IMPLIED
    149   dir         (ltr|rtl)      #IMPLIED"
    150   >
    151 
    152 <!-- attributes for common UI events
    153   onclick     a pointer button was clicked
    154   ondblclick  a pointer button was double clicked
    155   onmousedown a pointer button was pressed down
    156   onmouseup   a pointer button was released
    157   onmousemove a pointer was moved onto the element
    158   onmouseout  a pointer was moved away from the element
    159   onkeypress  a key was pressed and released
    160   onkeydown   a key was pressed down
    161   onkeyup     a key was released
    162 -->
    163 <!ENTITY % events
    164  "onclick     %Script;       #IMPLIED
    165   ondblclick  %Script;       #IMPLIED
    166   onmousedown %Script;       #IMPLIED
    167   onmouseup   %Script;       #IMPLIED
    168   onmouseover %Script;       #IMPLIED
    169   onmousemove %Script;       #IMPLIED
    170   onmouseout  %Script;       #IMPLIED
    171   onkeypress  %Script;       #IMPLIED
    172   onkeydown   %Script;       #IMPLIED
    173   onkeyup     %Script;       #IMPLIED"
    174   >
    175 
    176 <!-- attributes for elements that can get the focus
    177   accesskey   accessibility key character
    178   tabindex    position in tabbing order
    179   onfocus     the element got the focus
    180   onblur      the element lost the focus
    181 -->
    182 <!ENTITY % focus
    183  "accesskey   %Character;    #IMPLIED
    184   tabindex    %Number;       #IMPLIED
    185   onfocus     %Script;       #IMPLIED
    186   onblur      %Script;       #IMPLIED"
    187   >
    188 
    189 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
    190 
    191 <!-- text alignment for p, div, h1-h6. The default is
    192      align="left" for ltr headings, "right" for rtl -->
    193 
    194 <!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
    195 
    196 <!--=================== Text Elements ====================================-->
    197 
    198 <!ENTITY % special
    199    "br | span | bdo |object | applet | img | map | iframe">
    200 
    201 <!ENTITY % fontstyle "tt | i | b | big | small | u
    202                       | s | strike |font | basefont">
    203 
    204 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
    205                    samp | kbd | var | cite | abbr | acronym">
    206 
    207 <!ENTITY % inline.forms "input | select | textarea | label | button">
    208 
    209 <!-- these can occur at block or inline level -->
    210 <!ENTITY % misc "ins | del | script | noscript">
    211 
    212 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
    213 
    214 <!-- %Inline; covers inline or "text-level" elements -->
    215 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
    216 
    217 <!--================== Block level elements ==============================-->
    218 
    219 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
    220 <!ENTITY % lists "ul | ol | dl | menu | dir">
    221 <!ENTITY % blocktext "pre | hr | blockquote | address | center">
    222 
    223 <!ENTITY % block
    224     "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
    225 
    226 <!ENTITY % Block "(%block; | form | %misc;)*">
    227 
    228 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
    229 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
    230 
    231 <!--================== Content models for exclusions =====================-->
    232 
    233 <!-- a elements use %Inline; excluding a -->
    234 
    235 <!ENTITY % a.content
    236    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
    237 
    238 <!-- pre uses %Inline excluding img, object, applet, big, small,
    239      sub, sup, font, or basefont -->
    240 
    241 <!ENTITY % pre.content
    242    "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
    243       %phrase; | %inline.forms;)*">
    244 
    245 <!-- form uses %Flow; excluding form -->
    246 
    247 <!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
    248 
    249 <!-- button uses %Flow; but excludes a, form, form controls, iframe -->
    250 
    251 <!ENTITY % button.content
    252    "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
    253       table | br | span | bdo | object | applet | img | map |
    254       %fontstyle; | %phrase; | %misc;)*">
    255 
    256 <!--================ Document Structure ==================================-->
    257 
    258 <!-- the namespace URI designates the document profile -->
    259 
    260 <!ELEMENT html (head, frameset)>
    261 <!ATTLIST html
    262   %i18n;
    263   xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
    264   >
    265 
    266 <!--================ Document Head =======================================-->
    267 
    268 <!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
    269 
    270 <!-- content model is %head.misc; combined with a single
    271      title and an optional base element in any order -->
    272 
    273 <!ELEMENT head (%head.misc;,
    274      ((title, %head.misc;, (base, %head.misc;)?) |
    275       (base, %head.misc;, (title, %head.misc;))))>
    276 
    277 <!ATTLIST head
    278   %i18n;
    279   profile     %URI;          #IMPLIED
    280   >
    281 
    282 <!-- The title element is not considered part of the flow of text.
    283        It should be displayed, for example as the page header or
    284        window title. Exactly one title is required per document.
    285     -->
    286 <!ELEMENT title (#PCDATA)>
    287 <!ATTLIST title %i18n;>
    288 
    289 <!-- document base URI -->
    290 
    291 <!ELEMENT base EMPTY>
    292 <!ATTLIST base
    293   href        %URI;          #IMPLIED
    294   target      %FrameTarget;  #IMPLIED
    295   >
    296 
    297 <!-- generic metainformation -->
    298 <!ELEMENT meta EMPTY>
    299 <!ATTLIST meta
    300   %i18n;
    301   http-equiv  CDATA          #IMPLIED
    302   name        CDATA          #IMPLIED
    303   content     CDATA          #REQUIRED
    304   scheme      CDATA          #IMPLIED
    305   >
    306 
    307 <!--
    308   Relationship values can be used in principle:
    309 
    310    a) for document specific toolbars/menus when used
    311       with the link element in document head e.g.
    312         start, contents, previous, next, index, end, help
    313    b) to link to a separate style sheet (rel="stylesheet")
    314    c) to make a link to a script (rel="script")
    315    d) by stylesheets to control how collections of
    316       html nodes are rendered into printed documents
    317    e) to make a link to a printable version of this document
    318       e.g. a PostScript or PDF version (rel="alternate" media="print")
    319 -->
    320 
    321 <!ELEMENT link EMPTY>
    322 <!ATTLIST link
    323   %attrs;
    324   charset     %Charset;      #IMPLIED
    325   href        %URI;          #IMPLIED
    326   hreflang    %LanguageCode; #IMPLIED
    327   type        %ContentType;  #IMPLIED
    328   rel         %LinkTypes;    #IMPLIED
    329   rev         %LinkTypes;    #IMPLIED
    330   media       %MediaDesc;    #IMPLIED
    331   target      %FrameTarget;  #IMPLIED
    332   >
    333 
    334 <!-- style info, which may include CDATA sections -->
    335 <!ELEMENT style (#PCDATA)>
    336 <!ATTLIST style
    337   %i18n;
    338   type        %ContentType;  #REQUIRED
    339   media       %MediaDesc;    #IMPLIED
    340   title       %Text;         #IMPLIED
    341   xml:space   (preserve)     #FIXED 'preserve'
    342   >
    343 
    344 <!-- script statements, which may include CDATA sections -->
    345 <!ELEMENT script (#PCDATA)>
    346 <!ATTLIST script
    347   charset     %Charset;      #IMPLIED
    348   type        %ContentType;  #REQUIRED
    349   language    CDATA          #IMPLIED
    350   src         %URI;          #IMPLIED
    351   defer       (defer)        #IMPLIED
    352   xml:space   (preserve)     #FIXED 'preserve'
    353   >
    354 
    355 <!-- alternate content container for non script-based rendering -->
    356 
    357 <!ELEMENT noscript %Flow;>
    358 <!ATTLIST noscript
    359   %attrs;
    360   >
    361 
    362 <!--======================= Frames =======================================-->
    363 
    364 <!-- only one noframes element permitted per document -->
    365 
    366 <!ELEMENT frameset (frameset|frame|noframes)*>
    367 <!ATTLIST frameset
    368   %coreattrs;
    369   rows        %MultiLengths; #IMPLIED
    370   cols        %MultiLengths; #IMPLIED
    371   onload      %Script;       #IMPLIED
    372   onunload    %Script;       #IMPLIED
    373   >
    374 
    375 <!-- reserved frame names start with "_" otherwise starts with letter -->
    376 
    377 <!-- tiled window within frameset -->
    378 
    379 <!ELEMENT frame EMPTY>
    380 <!ATTLIST frame
    381   %coreattrs;
    382   longdesc    %URI;          #IMPLIED
    383   name        NMTOKEN        #IMPLIED
    384   src         %URI;          #IMPLIED
    385   frameborder (1|0)          "1"
    386   marginwidth %Pixels;       #IMPLIED
    387   marginheight %Pixels;      #IMPLIED
    388   noresize    (noresize)     #IMPLIED
    389   scrolling   (yes|no|auto)  "auto"
    390   >
    391 
    392 <!-- inline subwindow -->
    393 
    394 <!ELEMENT iframe %Flow;>
    395 <!ATTLIST iframe
    396   %coreattrs;
    397   longdesc    %URI;          #IMPLIED
    398   name        NMTOKEN        #IMPLIED
    399   src         %URI;          #IMPLIED
    400   frameborder (1|0)          "1"
    401   marginwidth %Pixels;       #IMPLIED
    402   marginheight %Pixels;      #IMPLIED
    403   scrolling   (yes|no|auto)  "auto"
    404   align       %ImgAlign;     #IMPLIED
    405   height      %Length;       #IMPLIED
    406   width       %Length;       #IMPLIED
    407   >
    408 
    409 <!-- alternate content container for non frame-based rendering -->
    410 
    411 <!ELEMENT noframes (body)>
    412 <!ATTLIST noframes
    413   %attrs;
    414   >
    415 
    416 <!--=================== Document Body ====================================-->
    417 
    418 <!ELEMENT body %Flow;>
    419 <!ATTLIST body
    420   %attrs;
    421   onload      %Script;       #IMPLIED
    422   onunload    %Script;       #IMPLIED
    423   background  %URI;          #IMPLIED
    424   bgcolor     %Color;        #IMPLIED
    425   text        %Color;        #IMPLIED
    426   link        %Color;        #IMPLIED
    427   vlink       %Color;        #IMPLIED
    428   alink       %Color;        #IMPLIED
    429   >
    430 
    431 <!ELEMENT div %Flow;>  <!-- generic language/style container -->
    432 <!ATTLIST div
    433   %attrs;
    434   %TextAlign;
    435   >
    436 
    437 <!--=================== Paragraphs =======================================-->
    438 
    439 <!ELEMENT p %Inline;>
    440 <!ATTLIST p
    441   %attrs;
    442   %TextAlign;
    443   >
    444 
    445 <!--=================== Headings =========================================-->
    446 
    447 <!--
    448   There are six levels of headings from h1 (the most important)
    449   to h6 (the least important).
    450 -->
    451 
    452 <!ELEMENT h1  %Inline;>
    453 <!ATTLIST h1
    454   %attrs;
    455   %TextAlign;
    456   >
    457 
    458 <!ELEMENT h2 %Inline;>
    459 <!ATTLIST h2
    460   %attrs;
    461   %TextAlign;
    462   >
    463 
    464 <!ELEMENT h3 %Inline;>
    465 <!ATTLIST h3
    466   %attrs;
    467   %TextAlign;
    468   >
    469 
    470 <!ELEMENT h4 %Inline;>
    471 <!ATTLIST h4
    472   %attrs;
    473   %TextAlign;
    474   >
    475 
    476 <!ELEMENT h5 %Inline;>
    477 <!ATTLIST h5
    478   %attrs;
    479   %TextAlign;
    480   >
    481 
    482 <!ELEMENT h6 %Inline;>
    483 <!ATTLIST h6
    484   %attrs;
    485   %TextAlign;
    486   >
    487 
    488 <!--=================== Lists ============================================-->
    489 
    490 <!-- Unordered list bullet styles -->
    491 
    492 <!ENTITY % ULStyle "(disc|square|circle)">
    493 
    494 <!-- Unordered list -->
    495 
    496 <!ELEMENT ul (li)+>
    497 <!ATTLIST ul
    498   %attrs;
    499   type        %ULStyle;     #IMPLIED
    500   compact     (compact)     #IMPLIED
    501   >
    502 
    503 <!-- Ordered list numbering style
    504 
    505     1   arabic numbers      1, 2, 3, ...
    506     a   lower alpha         a, b, c, ...
    507     A   upper alpha         A, B, C, ...
    508     i   lower roman         i, ii, iii, ...
    509     I   upper roman         I, II, III, ...
    510 
    511     The style is applied to the sequence number which by default
    512     is reset to 1 for the first list item in an ordered list.
    513 -->
    514 <!ENTITY % OLStyle "CDATA">
    515 
    516 <!-- Ordered (numbered) list -->
    517 
    518 <!ELEMENT ol (li)+>
    519 <!ATTLIST ol
    520   %attrs;
    521   type        %OLStyle;      #IMPLIED
    522   compact     (compact)      #IMPLIED
    523   start       %Number;       #IMPLIED
    524   >
    525 
    526 <!-- single column list (DEPRECATED) --> 
    527 <!ELEMENT menu (li)+>
    528 <!ATTLIST menu
    529   %attrs;
    530   compact     (compact)     #IMPLIED
    531   >
    532 
    533 <!-- multiple column list (DEPRECATED) --> 
    534 <!ELEMENT dir (li)+>
    535 <!ATTLIST dir
    536   %attrs;
    537   compact     (compact)     #IMPLIED
    538   >
    539 
    540 <!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
    541 <!ENTITY % LIStyle "CDATA">
    542 
    543 <!-- list item -->
    544 
    545 <!ELEMENT li %Flow;>
    546 <!ATTLIST li
    547   %attrs;
    548   type        %LIStyle;      #IMPLIED
    549   value       %Number;       #IMPLIED
    550   >
    551 
    552 <!-- definition lists - dt for term, dd for its definition -->
    553 
    554 <!ELEMENT dl (dt|dd)+>
    555 <!ATTLIST dl
    556   %attrs;
    557   compact     (compact)      #IMPLIED
    558   >
    559 
    560 <!ELEMENT dt %Inline;>
    561 <!ATTLIST dt
    562   %attrs;
    563   >
    564 
    565 <!ELEMENT dd %Flow;>
    566 <!ATTLIST dd
    567   %attrs;
    568   >
    569 
    570 <!--=================== Address ==========================================-->
    571 
    572 <!-- information on author -->
    573 
    574 <!ELEMENT address %Inline;>
    575 <!ATTLIST address
    576   %attrs;
    577   >
    578 
    579 <!--=================== Horizontal Rule ==================================-->
    580 
    581 <!ELEMENT hr EMPTY>
    582 <!ATTLIST hr
    583   %attrs;
    584   align       (left|center|right) #IMPLIED
    585   noshade     (noshade)      #IMPLIED
    586   size        %Pixels;       #IMPLIED
    587   width       %Length;       #IMPLIED
    588   >
    589 
    590 <!--=================== Preformatted Text ================================-->
    591 
    592 <!-- content is %Inline; excluding 
    593         "img|object|applet|big|small|sub|sup|font|basefont" -->
    594 
    595 <!ELEMENT pre %pre.content;>
    596 <!ATTLIST pre
    597   %attrs;
    598   width       %Number;      #IMPLIED
    599   xml:space   (preserve)    #FIXED 'preserve'
    600   >
    601 
    602 <!--=================== Block-like Quotes ================================-->
    603 
    604 <!ELEMENT blockquote %Flow;>
    605 <!ATTLIST blockquote
    606   %attrs;
    607   cite        %URI;          #IMPLIED
    608   >
    609 
    610 <!--=================== Text alignment ===================================-->
    611 
    612 <!-- center content -->
    613 <!ELEMENT center %Flow;>
    614 <!ATTLIST center
    615   %attrs;
    616   >
    617 
    618 <!--=================== Inserted/Deleted Text ============================-->
    619 
    620 
    621 <!--
    622   ins/del are allowed in block and inline content, but its
    623   inappropriate to include block content within an ins element
    624   occurring in inline content.
    625 -->
    626 <!ELEMENT ins %Flow;>
    627 <!ATTLIST ins
    628   %attrs;
    629   cite        %URI;          #IMPLIED
    630   datetime    %Datetime;     #IMPLIED
    631   >
    632 
    633 <!ELEMENT del %Flow;>
    634 <!ATTLIST del
    635   %attrs;
    636   cite        %URI;          #IMPLIED
    637   datetime    %Datetime;     #IMPLIED
    638   >
    639 
    640 <!--================== The Anchor Element ================================-->
    641 
    642 <!-- content is %Inline; except that anchors shouldn't be nested -->
    643 
    644 <!ELEMENT a %a.content;>
    645 <!ATTLIST a
    646   %attrs;
    647   charset     %Charset;      #IMPLIED
    648   type        %ContentType;  #IMPLIED
    649   name        NMTOKEN        #IMPLIED
    650   href        %URI;          #IMPLIED
    651   hreflang    %LanguageCode; #IMPLIED
    652   rel         %LinkTypes;    #IMPLIED
    653   rev         %LinkTypes;    #IMPLIED
    654   accesskey   %Character;    #IMPLIED
    655   shape       %Shape;        "rect"
    656   coords      %Coords;       #IMPLIED
    657   tabindex    %Number;       #IMPLIED
    658   onfocus     %Script;       #IMPLIED
    659   onblur      %Script;       #IMPLIED
    660   target      %FrameTarget;  #IMPLIED
    661   >
    662 
    663 <!--===================== Inline Elements ================================-->
    664 
    665 <!ELEMENT span %Inline;> <!-- generic language/style container -->
    666 <!ATTLIST span
    667   %attrs;
    668   >
    669 
    670 <!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
    671 <!ATTLIST bdo
    672   %coreattrs;
    673   %events;
    674   lang        %LanguageCode; #IMPLIED
    675   xml:lang    %LanguageCode; #IMPLIED
    676   dir         (ltr|rtl)      #REQUIRED
    677   >
    678 
    679 <!ELEMENT br EMPTY>   <!-- forced line break -->
    680 <!ATTLIST br
    681   %coreattrs;
    682   clear       (left|all|right|none) "none"
    683   >
    684 
    685 <!ELEMENT em %Inline;>   <!-- emphasis -->
    686 <!ATTLIST em %attrs;>
    687 
    688 <!ELEMENT strong %Inline;>   <!-- strong emphasis -->
    689 <!ATTLIST strong %attrs;>
    690 
    691 <!ELEMENT dfn %Inline;>   <!-- definitional -->
    692 <!ATTLIST dfn %attrs;>
    693 
    694 <!ELEMENT code %Inline;>   <!-- program code -->
    695 <!ATTLIST code %attrs;>
    696 
    697 <!ELEMENT samp %Inline;>   <!-- sample -->
    698 <!ATTLIST samp %attrs;>
    699 
    700 <!ELEMENT kbd %Inline;>  <!-- something user would type -->
    701 <!ATTLIST kbd %attrs;>
    702 
    703 <!ELEMENT var %Inline;>   <!-- variable -->
    704 <!ATTLIST var %attrs;>
    705 
    706 <!ELEMENT cite %Inline;>   <!-- citation -->
    707 <!ATTLIST cite %attrs;>
    708 
    709 <!ELEMENT abbr %Inline;>   <!-- abbreviation -->
    710 <!ATTLIST abbr %attrs;>
    711 
    712 <!ELEMENT acronym %Inline;>   <!-- acronym -->
    713 <!ATTLIST acronym %attrs;>
    714 
    715 <!ELEMENT q %Inline;>   <!-- inlined quote -->
    716 <!ATTLIST q
    717    %attrs;
    718   cite        %URI;          #IMPLIED
    719    >
    720 
    721 <!ELEMENT sub %Inline;> <!-- subscript -->
    722 <!ATTLIST sub %attrs;>
    723 
    724 <!ELEMENT sup %Inline;> <!-- superscript -->
    725 <!ATTLIST sup %attrs;>
    726 
    727 <!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
    728 <!ATTLIST tt %attrs;>
    729 
    730 <!ELEMENT i %Inline;>   <!-- italic font -->
    731 <!ATTLIST i %attrs;>
    732 
    733 <!ELEMENT b %Inline;>   <!-- bold font -->
    734 <!ATTLIST b %attrs;>
    735 
    736 <!ELEMENT big %Inline;>   <!-- bigger font -->
    737 <!ATTLIST big %attrs;>
    738 
    739 <!ELEMENT small %Inline;>   <!-- smaller font -->
    740 <!ATTLIST small %attrs;>
    741 
    742 <!ELEMENT u %Inline;>   <!-- underline -->
    743 <!ATTLIST u %attrs;>
    744 
    745 <!ELEMENT s %Inline;>   <!-- strike-through -->
    746 <!ATTLIST s %attrs;>
    747 
    748 <!ELEMENT strike %Inline;>   <!-- strike-through -->
    749 <!ATTLIST strike %attrs;>
    750 
    751 <!ELEMENT basefont EMPTY>  <!-- base font size -->
    752 <!ATTLIST basefont
    753   id          ID             #IMPLIED
    754   size        CDATA          #REQUIRED
    755   color       %Color;        #IMPLIED
    756   face        CDATA          #IMPLIED
    757   >
    758 
    759 <!ELEMENT font %Inline;> <!-- local change to font -->
    760 <!ATTLIST font
    761   %coreattrs;
    762   %i18n;
    763   size        CDATA          #IMPLIED
    764   color       %Color;        #IMPLIED
    765   face        CDATA          #IMPLIED
    766   >
    767 
    768 <!--==================== Object ======================================-->
    769 <!--
    770   object is used to embed objects as part of HTML pages.
    771   param elements should precede other content. Parameters
    772   can also be expressed as attribute/value pairs on the
    773   object element itself when brevity is desired.
    774 -->
    775 
    776 <!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
    777 <!ATTLIST object
    778   %attrs;
    779   declare     (declare)      #IMPLIED
    780   classid     %URI;          #IMPLIED
    781   codebase    %URI;          #IMPLIED
    782   data        %URI;          #IMPLIED
    783   type        %ContentType;  #IMPLIED
    784   codetype    %ContentType;  #IMPLIED
    785   archive     %UriList;      #IMPLIED
    786   standby     %Text;         #IMPLIED
    787   height      %Length;       #IMPLIED
    788   width       %Length;       #IMPLIED
    789   usemap      %URI;          #IMPLIED
    790   name        NMTOKEN        #IMPLIED
    791   tabindex    %Number;       #IMPLIED
    792   align       %ImgAlign;     #IMPLIED
    793   border      %Pixels;       #IMPLIED
    794   hspace      %Pixels;       #IMPLIED
    795   vspace      %Pixels;       #IMPLIED
    796   >
    797 
    798 <!--
    799   param is used to supply a named property value.
    800   In XML it would seem natural to follow RDF and support an
    801   abbreviated syntax where the param elements are replaced
    802   by attribute value pairs on the object start tag.
    803 -->
    804 <!ELEMENT param EMPTY>
    805 <!ATTLIST param
    806   id          ID             #IMPLIED
    807   name        CDATA          #REQUIRED
    808   value       CDATA          #IMPLIED
    809   valuetype   (data|ref|object) "data"
    810   type        %ContentType;  #IMPLIED
    811   >
    812 
    813 <!--=================== Java applet ==================================-->
    814 <!--
    815   One of code or object attributes must be present.
    816   Place param elements before other content.
    817 -->
    818 <!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
    819 <!ATTLIST applet
    820   %coreattrs;
    821   codebase    %URI;          #IMPLIED
    822   archive     CDATA          #IMPLIED
    823   code        CDATA          #IMPLIED
    824   object      CDATA          #IMPLIED
    825   alt         %Text;         #IMPLIED
    826   name        NMTOKEN        #IMPLIED
    827   width       %Length;       #REQUIRED
    828   height      %Length;       #REQUIRED
    829   align       %ImgAlign;     #IMPLIED
    830   hspace      %Pixels;       #IMPLIED
    831   vspace      %Pixels;       #IMPLIED
    832   >
    833 
    834 <!--=================== Images ===========================================-->
    835 
    836 <!--
    837    To avoid accessibility problems for people who aren't
    838    able to see the image, you should provide a text
    839    description using the alt and longdesc attributes.
    840    In addition, avoid the use of server-side image maps.
    841 -->
    842 
    843 <!ELEMENT img EMPTY>
    844 <!ATTLIST img
    845   %attrs;
    846   src         %URI;          #REQUIRED
    847   alt         %Text;         #REQUIRED
    848   name        NMTOKEN        #IMPLIED
    849   longdesc    %URI;          #IMPLIED
    850   height      %Length;       #IMPLIED
    851   width       %Length;       #IMPLIED
    852   usemap      %URI;          #IMPLIED
    853   ismap       (ismap)        #IMPLIED
    854   align       %ImgAlign;     #IMPLIED
    855   border      %Pixels;       #IMPLIED
    856   hspace      %Pixels;       #IMPLIED
    857   vspace      %Pixels;       #IMPLIED
    858   >
    859 
    860 <!-- usemap points to a map element which may be in this document
    861   or an external document, although the latter is not widely supported -->
    862 
    863 <!--================== Client-side image maps ============================-->
    864 
    865 <!-- These can be placed in the same document or grouped in a
    866      separate document although this isn't yet widely supported -->
    867 
    868 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
    869 <!ATTLIST map
    870   %i18n;
    871   %events;
    872   id          ID             #REQUIRED
    873   class       CDATA          #IMPLIED
    874   style       %StyleSheet;   #IMPLIED
    875   title       %Text;         #IMPLIED
    876   name        NMTOKEN        #IMPLIED
    877   >
    878 
    879 <!ELEMENT area EMPTY>
    880 <!ATTLIST area
    881   %attrs;
    882   shape       %Shape;        "rect"
    883   coords      %Coords;       #IMPLIED
    884   href        %URI;          #IMPLIED
    885   nohref      (nohref)       #IMPLIED
    886   alt         %Text;         #REQUIRED
    887   tabindex    %Number;       #IMPLIED
    888   accesskey   %Character;    #IMPLIED
    889   onfocus     %Script;       #IMPLIED
    890   onblur      %Script;       #IMPLIED
    891   target      %FrameTarget;  #IMPLIED
    892   >
    893 
    894 <!--================ Forms ===============================================-->
    895 
    896 <!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
    897 
    898 <!ATTLIST form
    899   %attrs;
    900   action      %URI;          #REQUIRED
    901   method      (get|post)     "get"
    902   name        NMTOKEN        #IMPLIED
    903   enctype     %ContentType;  "application/x-www-form-urlencoded"
    904   onsubmit    %Script;       #IMPLIED
    905   onreset     %Script;       #IMPLIED
    906   accept      %ContentTypes; #IMPLIED
    907   accept-charset %Charsets;  #IMPLIED
    908   target      %FrameTarget;  #IMPLIED
    909   >
    910 
    911 <!--
    912   Each label must not contain more than ONE field
    913   Label elements shouldn't be nested.
    914 -->
    915 <!ELEMENT label %Inline;>
    916 <!ATTLIST label
    917   %attrs;
    918   for         IDREF          #IMPLIED
    919   accesskey   %Character;    #IMPLIED
    920   onfocus     %Script;       #IMPLIED
    921   onblur      %Script;       #IMPLIED
    922   >
    923 
    924 <!ENTITY % InputType
    925   "(text | password | checkbox |
    926     radio | submit | reset |
    927     file | hidden | image | button)"
    928    >
    929 
    930 <!-- the name attribute is required for all but submit & reset -->
    931 
    932 <!ELEMENT input EMPTY>     <!-- form control -->
    933 <!ATTLIST input
    934   %attrs;
    935   type        %InputType;    "text"
    936   name        CDATA          #IMPLIED
    937   value       CDATA          #IMPLIED
    938   checked     (checked)      #IMPLIED
    939   disabled    (disabled)     #IMPLIED
    940   readonly    (readonly)     #IMPLIED
    941   size        CDATA          #IMPLIED
    942   maxlength   %Number;       #IMPLIED
    943   src         %URI;          #IMPLIED
    944   alt         CDATA          #IMPLIED
    945   usemap      %URI;          #IMPLIED
    946   tabindex    %Number;       #IMPLIED
    947   accesskey   %Character;    #IMPLIED
    948   onfocus     %Script;       #IMPLIED
    949   onblur      %Script;       #IMPLIED
    950   onselect    %Script;       #IMPLIED
    951   onchange    %Script;       #IMPLIED
    952   accept      %ContentTypes; #IMPLIED
    953   align       %ImgAlign;     #IMPLIED
    954   >
    955 
    956 <!ELEMENT select (optgroup|option)+>  <!-- option selector -->
    957 <!ATTLIST select
    958   %attrs;
    959   name        CDATA          #IMPLIED
    960   size        %Number;       #IMPLIED
    961   multiple    (multiple)     #IMPLIED
    962   disabled    (disabled)     #IMPLIED
    963   tabindex    %Number;       #IMPLIED
    964   onfocus     %Script;       #IMPLIED
    965   onblur      %Script;       #IMPLIED
    966   onchange    %Script;       #IMPLIED
    967   >
    968 
    969 <!ELEMENT optgroup (option)+>   <!-- option group -->
    970 <!ATTLIST optgroup
    971   %attrs;
    972   disabled    (disabled)     #IMPLIED
    973   label       %Text;         #REQUIRED
    974   >
    975 
    976 <!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
    977 <!ATTLIST option
    978   %attrs;
    979   selected    (selected)     #IMPLIED
    980   disabled    (disabled)     #IMPLIED
    981   label       %Text;         #IMPLIED
    982   value       CDATA          #IMPLIED
    983   >
    984 
    985 <!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
    986 <!ATTLIST textarea
    987   %attrs;
    988   name        CDATA          #IMPLIED
    989   rows        %Number;       #REQUIRED
    990   cols        %Number;       #REQUIRED
    991   disabled    (disabled)     #IMPLIED
    992   readonly    (readonly)     #IMPLIED
    993   tabindex    %Number;       #IMPLIED
    994   accesskey   %Character;    #IMPLIED
    995   onfocus     %Script;       #IMPLIED
    996   onblur      %Script;       #IMPLIED
    997   onselect    %Script;       #IMPLIED
    998   onchange    %Script;       #IMPLIED
    999   >
   1000 
   1001 <!--
   1002   The fieldset element is used to group form fields.
   1003   Only one legend element should occur in the content
   1004   and if present should only be preceded by whitespace.
   1005 -->
   1006 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
   1007 <!ATTLIST fieldset
   1008   %attrs;
   1009   >
   1010 
   1011 <!ENTITY % LAlign "(top|bottom|left|right)">
   1012 
   1013 <!ELEMENT legend %Inline;>     <!-- fieldset label -->
   1014 <!ATTLIST legend
   1015   %attrs;
   1016   accesskey   %Character;    #IMPLIED
   1017   align       %LAlign;       #IMPLIED
   1018   >
   1019 
   1020 <!--
   1021  Content is %Flow; excluding a, form, form controls, iframe
   1022 --> 
   1023 <!ELEMENT button %button.content;>  <!-- push button -->
   1024 <!ATTLIST button
   1025   %attrs;
   1026   name        CDATA          #IMPLIED
   1027   value       CDATA          #IMPLIED
   1028   type        (button|submit|reset) "submit"
   1029   disabled    (disabled)     #IMPLIED
   1030   tabindex    %Number;       #IMPLIED
   1031   accesskey   %Character;    #IMPLIED
   1032   onfocus     %Script;       #IMPLIED
   1033   onblur      %Script;       #IMPLIED
   1034   >
   1035 
   1036 <!-- single-line text input control (DEPRECATED) -->
   1037 <!ELEMENT isindex EMPTY>
   1038 <!ATTLIST isindex
   1039   %coreattrs;
   1040   %i18n;
   1041   prompt      %Text;         #IMPLIED
   1042   >
   1043 
   1044 <!--======================= Tables =======================================-->
   1045 
   1046 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
   1047 
   1048 <!--
   1049  The border attribute sets the thickness of the frame around the
   1050  table. The default units are screen pixels.
   1051 
   1052  The frame attribute specifies which parts of the frame around
   1053  the table should be rendered. The values are not the same as
   1054  CALS to avoid a name clash with the valign attribute.
   1055 -->
   1056 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
   1057 
   1058 <!--
   1059  The rules attribute defines which rules to draw between cells:
   1060 
   1061  If rules is absent then assume:
   1062      "none" if border is absent or border="0" otherwise "all"
   1063 -->
   1064 
   1065 <!ENTITY % TRules "(none | groups | rows | cols | all)">
   1066   
   1067 <!-- horizontal placement of table relative to document -->
   1068 <!ENTITY % TAlign "(left|center|right)">
   1069 
   1070 <!-- horizontal alignment attributes for cell contents
   1071 
   1072   char        alignment char, e.g. char=":"
   1073   charoff     offset for alignment char
   1074 -->
   1075 <!ENTITY % cellhalign
   1076   "align      (left|center|right|justify|char) #IMPLIED
   1077    char       %Character;    #IMPLIED
   1078    charoff    %Length;       #IMPLIED"
   1079   >
   1080 
   1081 <!-- vertical alignment attributes for cell contents -->
   1082 <!ENTITY % cellvalign
   1083   "valign     (top|middle|bottom|baseline) #IMPLIED"
   1084   >
   1085 
   1086 <!ELEMENT table
   1087      (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
   1088 <!ELEMENT caption  %Inline;>
   1089 <!ELEMENT thead    (tr)+>
   1090 <!ELEMENT tfoot    (tr)+>
   1091 <!ELEMENT tbody    (tr)+>
   1092 <!ELEMENT colgroup (col)*>
   1093 <!ELEMENT col      EMPTY>
   1094 <!ELEMENT tr       (th|td)+>
   1095 <!ELEMENT th       %Flow;>
   1096 <!ELEMENT td       %Flow;>
   1097 
   1098 <!ATTLIST table
   1099   %attrs;
   1100   summary     %Text;         #IMPLIED
   1101   width       %Length;       #IMPLIED
   1102   border      %Pixels;       #IMPLIED
   1103   frame       %TFrame;       #IMPLIED
   1104   rules       %TRules;       #IMPLIED
   1105   cellspacing %Length;       #IMPLIED
   1106   cellpadding %Length;       #IMPLIED
   1107   align       %TAlign;       #IMPLIED
   1108   bgcolor     %Color;        #IMPLIED
   1109   >
   1110 
   1111 <!ENTITY % CAlign "(top|bottom|left|right)">
   1112 
   1113 <!ATTLIST caption
   1114   %attrs;
   1115   align       %CAlign;       #IMPLIED
   1116   >
   1117 
   1118 <!--
   1119 colgroup groups a set of col elements. It allows you to group
   1120 several semantically related columns together.
   1121 -->
   1122 <!ATTLIST colgroup
   1123   %attrs;
   1124   span        %Number;       "1"
   1125   width       %MultiLength;  #IMPLIED
   1126   %cellhalign;
   1127   %cellvalign;
   1128   >
   1129 
   1130 <!--
   1131  col elements define the alignment properties for cells in
   1132  one or more columns.
   1133 
   1134  The width attribute specifies the width of the columns, e.g.
   1135 
   1136      width=64        width in screen pixels
   1137      width=0.5*      relative width of 0.5
   1138 
   1139  The span attribute causes the attributes of one
   1140  col element to apply to more than one column.
   1141 -->
   1142 <!ATTLIST col
   1143   %attrs;
   1144   span        %Number;       "1"
   1145   width       %MultiLength;  #IMPLIED
   1146   %cellhalign;
   1147   %cellvalign;
   1148   >
   1149 
   1150 <!--
   1151     Use thead to duplicate headers when breaking table
   1152     across page boundaries, or for static headers when
   1153     tbody sections are rendered in scrolling panel.
   1154 
   1155     Use tfoot to duplicate footers when breaking table
   1156     across page boundaries, or for static footers when
   1157     tbody sections are rendered in scrolling panel.
   1158 
   1159     Use multiple tbody sections when rules are needed
   1160     between groups of table rows.
   1161 -->
   1162 <!ATTLIST thead
   1163   %attrs;
   1164   %cellhalign;
   1165   %cellvalign;
   1166   >
   1167 
   1168 <!ATTLIST tfoot
   1169   %attrs;
   1170   %cellhalign;
   1171   %cellvalign;
   1172   >
   1173 
   1174 <!ATTLIST tbody
   1175   %attrs;
   1176   %cellhalign;
   1177   %cellvalign;
   1178   >
   1179 
   1180 <!ATTLIST tr
   1181   %attrs;
   1182   %cellhalign;
   1183   %cellvalign;
   1184   bgcolor     %Color;        #IMPLIED
   1185   >
   1186 
   1187 <!-- Scope is simpler than headers attribute for common tables -->
   1188 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
   1189 
   1190 <!-- th is for headers, td for data and for cells acting as both -->
   1191 
   1192 <!ATTLIST th
   1193   %attrs;
   1194   abbr        %Text;         #IMPLIED
   1195   axis        CDATA          #IMPLIED
   1196   headers     IDREFS         #IMPLIED
   1197   scope       %Scope;        #IMPLIED
   1198   rowspan     %Number;       "1"
   1199   colspan     %Number;       "1"
   1200   %cellhalign;
   1201   %cellvalign;
   1202   nowrap      (nowrap)       #IMPLIED
   1203   bgcolor     %Color;        #IMPLIED
   1204   width       %Pixels;       #IMPLIED
   1205   height      %Pixels;       #IMPLIED
   1206   >
   1207 
   1208 <!ATTLIST td
   1209   %attrs;
   1210   abbr        %Text;         #IMPLIED
   1211   axis        CDATA          #IMPLIED
   1212   headers     IDREFS         #IMPLIED
   1213   scope       %Scope;        #IMPLIED
   1214   rowspan     %Number;       "1"
   1215   colspan     %Number;       "1"
   1216   %cellhalign;
   1217   %cellvalign;
   1218   nowrap      (nowrap)       #IMPLIED
   1219   bgcolor     %Color;        #IMPLIED
   1220   width       %Pixels;       #IMPLIED
   1221   height      %Pixels;       #IMPLIED
   1222   >
   1223 
   1224