Home | History | Annotate | Download | only in dtds
      1 <!--
      2    Extensible HTML version 1.0 Strict DTD
      3 
      4    This is the same as HTML 4.0 Strict 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 Strict//EN"
     17    SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
     18 
     19 
     20 -->
     21 
     22 <!--================ Character mnemonic entities =========================-->
     23 
     24 <!ENTITY % HTMLlat1 PUBLIC
     25    "-//W3C//ENTITIES Latin 1 for XHTML//EN"
     26    "xhtml-lat1.ent">
     27 %HTMLlat1;
     28 
     29 <!ENTITY % HTMLsymbol PUBLIC
     30    "-//W3C//ENTITIES Symbols for XHTML//EN"
     31    "xhtml-symbol.ent">
     32 %HTMLsymbol;
     33 
     34 <!ENTITY % HTMLspecial PUBLIC
     35    "-//W3C//ENTITIES Special for XHTML//EN"
     36    "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 <!--=================== Generic Attributes ===============================-->
    109 
    110 <!-- core attributes common to most elements
    111   id       document-wide unique id
    112   class    space separated list of classes
    113   style    associated style info
    114   title    advisory title/amplification
    115 -->
    116 <!ENTITY % coreattrs
    117  "id          ID             #IMPLIED
    118   class       CDATA          #IMPLIED
    119   style       %StyleSheet;   #IMPLIED
    120   title       %Text;         #IMPLIED"
    121   >
    122 
    123 <!-- internationalization attributes
    124   lang        language code (backwards compatible)
    125   xml:lang    language code (as per XML 1.0 spec)
    126   dir         direction for weak/neutral text
    127 -->
    128 <!ENTITY % i18n
    129  "lang        %LanguageCode; #IMPLIED
    130   xml:lang    %LanguageCode; #IMPLIED
    131   dir         (ltr|rtl)      #IMPLIED"
    132   >
    133 
    134 <!-- attributes for common UI events
    135   onclick     a pointer button was clicked
    136   ondblclick  a pointer button was double clicked
    137   onmousedown a pointer button was pressed down
    138   onmouseup   a pointer button was released
    139   onmousemove a pointer was moved onto the element
    140   onmouseout  a pointer was moved away from the element
    141   onkeypress  a key was pressed and released
    142   onkeydown   a key was pressed down
    143   onkeyup     a key was released
    144 -->
    145 <!ENTITY % events
    146  "onclick     %Script;       #IMPLIED
    147   ondblclick  %Script;       #IMPLIED
    148   onmousedown %Script;       #IMPLIED
    149   onmouseup   %Script;       #IMPLIED
    150   onmouseover %Script;       #IMPLIED
    151   onmousemove %Script;       #IMPLIED
    152   onmouseout  %Script;       #IMPLIED
    153   onkeypress  %Script;       #IMPLIED
    154   onkeydown   %Script;       #IMPLIED
    155   onkeyup     %Script;       #IMPLIED"
    156   >
    157 
    158 <!-- attributes for elements that can get the focus
    159   accesskey   accessibility key character
    160   tabindex    position in tabbing order
    161   onfocus     the element got the focus
    162   onblur      the element lost the focus
    163 -->
    164 <!ENTITY % focus
    165  "accesskey   %Character;    #IMPLIED
    166   tabindex    %Number;       #IMPLIED
    167   onfocus     %Script;       #IMPLIED
    168   onblur      %Script;       #IMPLIED"
    169   >
    170 
    171 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
    172 
    173 <!--=================== Text Elements ====================================-->
    174 
    175 <!ENTITY % special
    176    "br | span | bdo | object | img | map">
    177 
    178 <!ENTITY % fontstyle "tt | i | b | big | small">
    179 
    180 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
    181                    samp | kbd | var | cite | abbr | acronym">
    182 
    183 <!ENTITY % inline.forms "input | select | textarea | label | button">
    184 
    185 <!-- these can occur at block or inline level -->
    186 <!ENTITY % misc "ins | del | script | noscript">
    187 
    188 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
    189 
    190 <!-- %Inline; covers inline or "text-level" elements -->
    191 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
    192 
    193 <!--================== Block level elements ==============================-->
    194 
    195 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
    196 <!ENTITY % lists "ul | ol | dl">
    197 <!ENTITY % blocktext "pre | hr | blockquote | address">
    198 
    199 <!ENTITY % block
    200      "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
    201 
    202 <!ENTITY % Block "(%block; | form | %misc;)*">
    203 
    204 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
    205 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
    206 
    207 <!--================== Content models for exclusions =====================-->
    208 
    209 <!-- a elements use %Inline; excluding a -->
    210 
    211 <!ENTITY % a.content
    212    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
    213 
    214 <!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
    215 
    216 <!ENTITY % pre.content
    217    "(#PCDATA | a | br | span | bdo | map | tt | i | b |
    218       %phrase; | %inline.forms;)*">
    219 
    220 <!-- form uses %Block; excluding form -->
    221 
    222 <!ENTITY % form.content "(%block; | %misc;)*">
    223 
    224 <!-- button uses %Flow; but excludes a, form and form controls -->
    225 
    226 <!ENTITY % button.content
    227    "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
    228     table | %special; | %fontstyle; | %phrase; | %misc;)*">
    229 
    230 <!--================ Document Structure ==================================-->
    231 
    232 <!-- the namespace URI designates the document profile -->
    233 
    234 <!ELEMENT html (head, body)>
    235 <!ATTLIST html
    236   %i18n;
    237   xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
    238   >
    239 
    240 <!--================ Document Head =======================================-->
    241 
    242 <!ENTITY % head.misc "(script|style|meta|link|object)*">
    243 
    244 <!-- content model is %head.misc; combined with a single
    245      title and an optional base element in any order -->
    246 
    247 <!ELEMENT head (%head.misc;,
    248      ((title, %head.misc;, (base, %head.misc;)?) |
    249       (base, %head.misc;, (title, %head.misc;))))>
    250 
    251 <!ATTLIST head
    252   %i18n;
    253   profile     %URI;          #IMPLIED
    254   >
    255 
    256 <!-- The title element is not considered part of the flow of text.
    257        It should be displayed, for example as the page header or
    258        window title. Exactly one title is required per document.
    259     -->
    260 <!ELEMENT title (#PCDATA)>
    261 <!ATTLIST title %i18n;>
    262 
    263 <!-- document base URI -->
    264 
    265 <!ELEMENT base EMPTY>
    266 <!ATTLIST base
    267   href        %URI;          #IMPLIED
    268   >
    269 
    270 <!-- generic metainformation -->
    271 <!ELEMENT meta EMPTY>
    272 <!ATTLIST meta
    273   %i18n;
    274   http-equiv  CDATA          #IMPLIED
    275   name        CDATA          #IMPLIED
    276   content     CDATA          #REQUIRED
    277   scheme      CDATA          #IMPLIED
    278   >
    279 
    280 <!--
    281   Relationship values can be used in principle:
    282 
    283    a) for document specific toolbars/menus when used
    284       with the link element in document head e.g.
    285         start, contents, previous, next, index, end, help
    286    b) to link to a separate style sheet (rel="stylesheet")
    287    c) to make a link to a script (rel="script")
    288    d) by stylesheets to control how collections of
    289       html nodes are rendered into printed documents
    290    e) to make a link to a printable version of this document
    291       e.g. a PostScript or PDF version (rel="alternate" media="print")
    292 -->
    293 
    294 <!ELEMENT link EMPTY>
    295 <!ATTLIST link
    296   %attrs;
    297   charset     %Charset;      #IMPLIED
    298   href        %URI;          #IMPLIED
    299   hreflang    %LanguageCode; #IMPLIED
    300   type        %ContentType;  #IMPLIED
    301   rel         %LinkTypes;    #IMPLIED
    302   rev         %LinkTypes;    #IMPLIED
    303   media       %MediaDesc;    #IMPLIED
    304   >
    305 
    306 <!-- style info, which may include CDATA sections -->
    307 <!ELEMENT style (#PCDATA)>
    308 <!ATTLIST style
    309   %i18n;
    310   type        %ContentType;  #REQUIRED
    311   media       %MediaDesc;    #IMPLIED
    312   title       %Text;         #IMPLIED
    313   xml:space   (preserve)     #FIXED 'preserve'
    314   >
    315 
    316 <!-- script statements, which may include CDATA sections -->
    317 <!ELEMENT script (#PCDATA)>
    318 <!ATTLIST script
    319   charset     %Charset;      #IMPLIED
    320   type        %ContentType;  #REQUIRED
    321   src         %URI;          #IMPLIED
    322   defer       (defer)        #IMPLIED
    323   xml:space   (preserve)     #FIXED 'preserve'
    324   >
    325 
    326 <!-- alternate content container for non script-based rendering -->
    327 
    328 <!ELEMENT noscript %Block;>
    329 <!ATTLIST noscript
    330   %attrs;
    331   >
    332 
    333 <!--=================== Document Body ====================================-->
    334 
    335 <!ELEMENT body %Block;>
    336 <!ATTLIST body
    337   %attrs;
    338   onload          %Script;   #IMPLIED
    339   onunload        %Script;   #IMPLIED
    340   >
    341 
    342 <!ELEMENT div %Flow;>  <!-- generic language/style container -->
    343 <!ATTLIST div
    344   %attrs;
    345   >
    346 
    347 <!--=================== Paragraphs =======================================-->
    348 
    349 <!ELEMENT p %Inline;>
    350 <!ATTLIST p
    351   %attrs;
    352   >
    353 
    354 <!--=================== Headings =========================================-->
    355 
    356 <!--
    357   There are six levels of headings from h1 (the most important)
    358   to h6 (the least important).
    359 -->
    360 
    361 <!ELEMENT h1  %Inline;>
    362 <!ATTLIST h1
    363    %attrs;
    364    >
    365 
    366 <!ELEMENT h2 %Inline;>
    367 <!ATTLIST h2
    368    %attrs;
    369    >
    370 
    371 <!ELEMENT h3 %Inline;>
    372 <!ATTLIST h3
    373    %attrs;
    374    >
    375 
    376 <!ELEMENT h4 %Inline;>
    377 <!ATTLIST h4
    378    %attrs;
    379    >
    380 
    381 <!ELEMENT h5 %Inline;>
    382 <!ATTLIST h5
    383    %attrs;
    384    >
    385 
    386 <!ELEMENT h6 %Inline;>
    387 <!ATTLIST h6
    388    %attrs;
    389    >
    390 
    391 <!--=================== Lists ============================================-->
    392 
    393 <!-- Unordered list -->
    394 
    395 <!ELEMENT ul (li)+>
    396 <!ATTLIST ul
    397   %attrs;
    398   >
    399 
    400 <!-- Ordered (numbered) list -->
    401 
    402 <!ELEMENT ol (li)+>
    403 <!ATTLIST ol
    404   %attrs;
    405   >
    406 
    407 <!-- list item -->
    408 
    409 <!ELEMENT li %Flow;>
    410 <!ATTLIST li
    411   %attrs;
    412   >
    413 
    414 <!-- definition lists - dt for term, dd for its definition -->
    415 
    416 <!ELEMENT dl (dt|dd)+>
    417 <!ATTLIST dl
    418   %attrs;
    419   >
    420 
    421 <!ELEMENT dt %Inline;>
    422 <!ATTLIST dt
    423   %attrs;
    424   >
    425 
    426 <!ELEMENT dd %Flow;>
    427 <!ATTLIST dd
    428   %attrs;
    429   >
    430 
    431 <!--=================== Address ==========================================-->
    432 
    433 <!-- information on author -->
    434 
    435 <!ELEMENT address %Inline;>
    436 <!ATTLIST address
    437   %attrs;
    438   >
    439 
    440 <!--=================== Horizontal Rule ==================================-->
    441 
    442 <!ELEMENT hr EMPTY>
    443 <!ATTLIST hr
    444   %attrs;
    445   >
    446 
    447 <!--=================== Preformatted Text ================================-->
    448 
    449 <!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
    450 
    451 <!ELEMENT pre %pre.content;>
    452 <!ATTLIST pre
    453   %attrs;
    454   xml:space (preserve) #FIXED 'preserve'
    455   >
    456 
    457 <!--=================== Block-like Quotes ================================-->
    458 
    459 <!ELEMENT blockquote %Block;>
    460 <!ATTLIST blockquote
    461   %attrs;
    462   cite        %URI;          #IMPLIED
    463   >
    464 
    465 <!--=================== Inserted/Deleted Text ============================-->
    466 
    467 <!--
    468   ins/del are allowed in block and inline content, but its
    469   inappropriate to include block content within an ins element
    470   occurring in inline content.
    471 -->
    472 <!ELEMENT ins %Flow;>
    473 <!ATTLIST ins
    474   %attrs;
    475   cite        %URI;          #IMPLIED
    476   datetime    %Datetime;     #IMPLIED
    477   >
    478 
    479 <!ELEMENT del %Flow;>
    480 <!ATTLIST del
    481   %attrs;
    482   cite        %URI;          #IMPLIED
    483   datetime    %Datetime;     #IMPLIED
    484   >
    485 
    486 <!--================== The Anchor Element ================================-->
    487 
    488 <!-- content is %Inline; except that anchors shouldn't be nested -->
    489 
    490 <!ELEMENT a %a.content;>
    491 <!ATTLIST a
    492   %attrs;
    493   charset     %Charset;      #IMPLIED
    494   type        %ContentType;  #IMPLIED
    495   name        NMTOKEN        #IMPLIED
    496   href        %URI;          #IMPLIED
    497   hreflang    %LanguageCode; #IMPLIED
    498   rel         %LinkTypes;    #IMPLIED
    499   rev         %LinkTypes;    #IMPLIED
    500   accesskey   %Character;    #IMPLIED
    501   shape       %Shape;        "rect"
    502   coords      %Coords;       #IMPLIED
    503   tabindex    %Number;       #IMPLIED
    504   onfocus     %Script;       #IMPLIED
    505   onblur      %Script;       #IMPLIED
    506   >
    507 
    508 <!--===================== Inline Elements ================================-->
    509 
    510 <!ELEMENT span %Inline;> <!-- generic language/style container -->
    511 <!ATTLIST span
    512   %attrs;
    513   >
    514 
    515 <!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
    516 <!ATTLIST bdo
    517   %coreattrs;
    518   %events;
    519   lang        %LanguageCode; #IMPLIED
    520   xml:lang    %LanguageCode; #IMPLIED
    521   dir         (ltr|rtl)      #REQUIRED
    522   >
    523 
    524 <!ELEMENT br EMPTY>   <!-- forced line break -->
    525 <!ATTLIST br
    526   %coreattrs;
    527   >
    528 
    529 <!ELEMENT em %Inline;>   <!-- emphasis -->
    530 <!ATTLIST em %attrs;>
    531 
    532 <!ELEMENT strong %Inline;>   <!-- strong emphasis -->
    533 <!ATTLIST strong %attrs;>
    534 
    535 <!ELEMENT dfn %Inline;>   <!-- definitional -->
    536 <!ATTLIST dfn %attrs;>
    537 
    538 <!ELEMENT code %Inline;>   <!-- program code -->
    539 <!ATTLIST code %attrs;>
    540 
    541 <!ELEMENT samp %Inline;>   <!-- sample -->
    542 <!ATTLIST samp %attrs;>
    543 
    544 <!ELEMENT kbd %Inline;>  <!-- something user would type -->
    545 <!ATTLIST kbd %attrs;>
    546 
    547 <!ELEMENT var %Inline;>   <!-- variable -->
    548 <!ATTLIST var %attrs;>
    549 
    550 <!ELEMENT cite %Inline;>   <!-- citation -->
    551 <!ATTLIST cite %attrs;>
    552 
    553 <!ELEMENT abbr %Inline;>   <!-- abbreviation -->
    554 <!ATTLIST abbr %attrs;>
    555 
    556 <!ELEMENT acronym %Inline;>   <!-- acronym -->
    557 <!ATTLIST acronym %attrs;>
    558 
    559 <!ELEMENT q %Inline;>   <!-- inlined quote -->
    560 <!ATTLIST q
    561   %attrs;
    562   cite        %URI;          #IMPLIED
    563   >
    564 
    565 <!ELEMENT sub %Inline;> <!-- subscript -->
    566 <!ATTLIST sub %attrs;>
    567 
    568 <!ELEMENT sup %Inline;> <!-- superscript -->
    569 <!ATTLIST sup %attrs;>
    570 
    571 <!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
    572 <!ATTLIST tt %attrs;>
    573 
    574 <!ELEMENT i %Inline;>   <!-- italic font -->
    575 <!ATTLIST i %attrs;>
    576 
    577 <!ELEMENT b %Inline;>   <!-- bold font -->
    578 <!ATTLIST b %attrs;>
    579 
    580 <!ELEMENT big %Inline;>   <!-- bigger font -->
    581 <!ATTLIST big %attrs;>
    582 
    583 <!ELEMENT small %Inline;>   <!-- smaller font -->
    584 <!ATTLIST small %attrs;>
    585 
    586 <!--==================== Object ======================================-->
    587 <!--
    588   object is used to embed objects as part of HTML pages.
    589   param elements should precede other content. Parameters
    590   can also be expressed as attribute/value pairs on the
    591   object element itself when brevity is desired.
    592 -->
    593 
    594 <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
    595 <!ATTLIST object
    596   %attrs;
    597   declare     (declare)      #IMPLIED
    598   classid     %URI;          #IMPLIED
    599   codebase    %URI;          #IMPLIED
    600   data        %URI;          #IMPLIED
    601   type        %ContentType;  #IMPLIED
    602   codetype    %ContentType;  #IMPLIED
    603   archive     %UriList;      #IMPLIED
    604   standby     %Text;         #IMPLIED
    605   height      %Length;       #IMPLIED
    606   width       %Length;       #IMPLIED
    607   usemap      %URI;          #IMPLIED
    608   name        NMTOKEN        #IMPLIED
    609   tabindex    %Number;       #IMPLIED
    610   >
    611 
    612 <!--
    613   param is used to supply a named property value.
    614   In XML it would seem natural to follow RDF and support an
    615   abbreviated syntax where the param elements are replaced
    616   by attribute value pairs on the object start tag.
    617 -->
    618 <!ELEMENT param EMPTY>
    619 <!ATTLIST param
    620   id          ID             #IMPLIED
    621   name        CDATA          #IMPLIED
    622   value       CDATA          #IMPLIED
    623   valuetype   (data|ref|object) "data"
    624   type        %ContentType;  #IMPLIED
    625   >
    626 
    627 <!--=================== Images ===========================================-->
    628 
    629 <!--
    630    To avoid accessibility problems for people who aren't
    631    able to see the image, you should provide a text
    632    description using the alt and longdesc attributes.
    633    In addition, avoid the use of server-side image maps.
    634    Note that in this DTD there is no name attribute. That
    635    is only available in the transitional and frameset DTD.
    636 -->
    637 
    638 <!ELEMENT img EMPTY>
    639 <!ATTLIST img
    640   %attrs;
    641   src         %URI;          #REQUIRED
    642   alt         %Text;         #REQUIRED
    643   longdesc    %URI;          #IMPLIED
    644   height      %Length;       #IMPLIED
    645   width       %Length;       #IMPLIED
    646   usemap      %URI;          #IMPLIED
    647   ismap       (ismap)        #IMPLIED
    648   >
    649 
    650 <!-- usemap points to a map element which may be in this document
    651   or an external document, although the latter is not widely supported -->
    652 
    653 <!--================== Client-side image maps ============================-->
    654 
    655 <!-- These can be placed in the same document or grouped in a
    656      separate document although this isn't yet widely supported -->
    657 
    658 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
    659 <!ATTLIST map
    660   %i18n;
    661   %events;
    662   id          ID             #REQUIRED
    663   class       CDATA          #IMPLIED
    664   style       %StyleSheet;   #IMPLIED
    665   title       %Text;         #IMPLIED
    666   name        NMTOKEN        #IMPLIED
    667   >
    668 
    669 <!ELEMENT area EMPTY>
    670 <!ATTLIST area
    671   %attrs;
    672   shape       %Shape;        "rect"
    673   coords      %Coords;       #IMPLIED
    674   href        %URI;          #IMPLIED
    675   nohref      (nohref)       #IMPLIED
    676   alt         %Text;         #REQUIRED
    677   tabindex    %Number;       #IMPLIED
    678   accesskey   %Character;    #IMPLIED
    679   onfocus     %Script;       #IMPLIED
    680   onblur      %Script;       #IMPLIED
    681   >
    682 
    683 <!--================ Forms ===============================================-->
    684 <!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
    685 
    686 <!ATTLIST form
    687   %attrs;
    688   action      %URI;          #REQUIRED
    689   method      (get|post)     "get"
    690   enctype     %ContentType;  "application/x-www-form-urlencoded"
    691   onsubmit    %Script;       #IMPLIED
    692   onreset     %Script;       #IMPLIED
    693   accept      %ContentTypes; #IMPLIED
    694   accept-charset %Charsets;  #IMPLIED
    695   >
    696 
    697 <!--
    698   Each label must not contain more than ONE field
    699   Label elements shouldn't be nested.
    700 -->
    701 <!ELEMENT label %Inline;>
    702 <!ATTLIST label
    703   %attrs;
    704   for         IDREF          #IMPLIED
    705   accesskey   %Character;    #IMPLIED
    706   onfocus     %Script;       #IMPLIED
    707   onblur      %Script;       #IMPLIED
    708   >
    709 
    710 <!ENTITY % InputType
    711   "(text | password | checkbox |
    712     radio | submit | reset |
    713     file | hidden | image | button)"
    714    >
    715 
    716 <!-- the name attribute is required for all but submit & reset -->
    717 
    718 <!ELEMENT input EMPTY>     <!-- form control -->
    719 <!ATTLIST input
    720   %attrs;
    721   type        %InputType;    "text"
    722   name        CDATA          #IMPLIED
    723   value       CDATA          #IMPLIED
    724   checked     (checked)      #IMPLIED
    725   disabled    (disabled)     #IMPLIED
    726   readonly    (readonly)     #IMPLIED
    727   size        CDATA          #IMPLIED
    728   maxlength   %Number;       #IMPLIED
    729   src         %URI;          #IMPLIED
    730   alt         CDATA          #IMPLIED
    731   usemap      %URI;          #IMPLIED
    732   tabindex    %Number;       #IMPLIED
    733   accesskey   %Character;    #IMPLIED
    734   onfocus     %Script;       #IMPLIED
    735   onblur      %Script;       #IMPLIED
    736   onselect    %Script;       #IMPLIED
    737   onchange    %Script;       #IMPLIED
    738   accept      %ContentTypes; #IMPLIED
    739   >
    740 
    741 <!ELEMENT select (optgroup|option)+>  <!-- option selector -->
    742 <!ATTLIST select
    743   %attrs;
    744   name        CDATA          #IMPLIED
    745   size        %Number;       #IMPLIED
    746   multiple    (multiple)     #IMPLIED
    747   disabled    (disabled)     #IMPLIED
    748   tabindex    %Number;       #IMPLIED
    749   onfocus     %Script;       #IMPLIED
    750   onblur      %Script;       #IMPLIED
    751   onchange    %Script;       #IMPLIED
    752   >
    753 
    754 <!ELEMENT optgroup (option)+>   <!-- option group -->
    755 <!ATTLIST optgroup
    756   %attrs;
    757   disabled    (disabled)     #IMPLIED
    758   label       %Text;         #REQUIRED
    759   >
    760 
    761 <!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
    762 <!ATTLIST option
    763   %attrs;
    764   selected    (selected)     #IMPLIED
    765   disabled    (disabled)     #IMPLIED
    766   label       %Text;         #IMPLIED
    767   value       CDATA          #IMPLIED
    768   >
    769 
    770 <!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
    771 <!ATTLIST textarea
    772   %attrs;
    773   name        CDATA          #IMPLIED
    774   rows        %Number;       #REQUIRED
    775   cols        %Number;       #REQUIRED
    776   disabled    (disabled)     #IMPLIED
    777   readonly    (readonly)     #IMPLIED
    778   tabindex    %Number;       #IMPLIED
    779   accesskey   %Character;    #IMPLIED
    780   onfocus     %Script;       #IMPLIED
    781   onblur      %Script;       #IMPLIED
    782   onselect    %Script;       #IMPLIED
    783   onchange    %Script;       #IMPLIED
    784   >
    785 
    786 <!--
    787   The fieldset element is used to group form fields.
    788   Only one legend element should occur in the content
    789   and if present should only be preceded by whitespace.
    790 -->
    791 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
    792 <!ATTLIST fieldset
    793   %attrs;
    794   >
    795 
    796 <!ELEMENT legend %Inline;>     <!-- fieldset label -->
    797 <!ATTLIST legend
    798   %attrs;
    799   accesskey   %Character;    #IMPLIED
    800   >
    801 
    802 <!--
    803  Content is %Flow; excluding a, form and form controls
    804 --> 
    805 <!ELEMENT button %button.content;>  <!-- push button -->
    806 <!ATTLIST button
    807   %attrs;
    808   name        CDATA          #IMPLIED
    809   value       CDATA          #IMPLIED
    810   type        (button|submit|reset) "submit"
    811   disabled    (disabled)     #IMPLIED
    812   tabindex    %Number;       #IMPLIED
    813   accesskey   %Character;    #IMPLIED
    814   onfocus     %Script;       #IMPLIED
    815   onblur      %Script;       #IMPLIED
    816   >
    817 
    818 <!--======================= Tables =======================================-->
    819 
    820 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
    821 
    822 <!--
    823  The border attribute sets the thickness of the frame around the
    824  table. The default units are screen pixels.
    825 
    826  The frame attribute specifies which parts of the frame around
    827  the table should be rendered. The values are not the same as
    828  CALS to avoid a name clash with the valign attribute.
    829 -->
    830 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
    831 
    832 <!--
    833  The rules attribute defines which rules to draw between cells:
    834 
    835  If rules is absent then assume:
    836      "none" if border is absent or border="0" otherwise "all"
    837 -->
    838 
    839 <!ENTITY % TRules "(none | groups | rows | cols | all)">
    840   
    841 <!-- horizontal placement of table relative to document -->
    842 <!ENTITY % TAlign "(left|center|right)">
    843 
    844 <!-- horizontal alignment attributes for cell contents
    845 
    846   char        alignment char, e.g. char=':'
    847   charoff     offset for alignment char
    848 -->
    849 <!ENTITY % cellhalign
    850   "align      (left|center|right|justify|char) #IMPLIED
    851    char       %Character;    #IMPLIED
    852    charoff    %Length;       #IMPLIED"
    853   >
    854 
    855 <!-- vertical alignment attributes for cell contents -->
    856 <!ENTITY % cellvalign
    857   "valign     (top|middle|bottom|baseline) #IMPLIED"
    858   >
    859 
    860 <!ELEMENT table
    861      (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
    862 <!ELEMENT caption  %Inline;>
    863 <!ELEMENT thead    (tr)+>
    864 <!ELEMENT tfoot    (tr)+>
    865 <!ELEMENT tbody    (tr)+>
    866 <!ELEMENT colgroup (col)*>
    867 <!ELEMENT col      EMPTY>
    868 <!ELEMENT tr       (th|td)+>
    869 <!ELEMENT th       %Flow;>
    870 <!ELEMENT td       %Flow;>
    871 
    872 <!ATTLIST table
    873   %attrs;
    874   summary     %Text;         #IMPLIED
    875   width       %Length;       #IMPLIED
    876   border      %Pixels;       #IMPLIED
    877   frame       %TFrame;       #IMPLIED
    878   rules       %TRules;       #IMPLIED
    879   cellspacing %Length;       #IMPLIED
    880   cellpadding %Length;       #IMPLIED
    881   >
    882 
    883 <!ENTITY % CAlign "(top|bottom|left|right)">
    884 
    885 <!ATTLIST caption
    886   %attrs;
    887   >
    888 
    889 <!--
    890 colgroup groups a set of col elements. It allows you to group
    891 several semantically related columns together.
    892 -->
    893 <!ATTLIST colgroup
    894   %attrs;
    895   span        %Number;       "1"
    896   width       %MultiLength;  #IMPLIED
    897   %cellhalign;
    898   %cellvalign;
    899   >
    900 
    901 <!--
    902  col elements define the alignment properties for cells in
    903  one or more columns.
    904 
    905  The width attribute specifies the width of the columns, e.g.
    906 
    907      width=64        width in screen pixels
    908      width=0.5*      relative width of 0.5
    909 
    910  The span attribute causes the attributes of one
    911  col element to apply to more than one column.
    912 -->
    913 <!ATTLIST col
    914   %attrs;
    915   span        %Number;       "1"
    916   width       %MultiLength;  #IMPLIED
    917   %cellhalign;
    918   %cellvalign;
    919   >
    920 
    921 <!--
    922     Use thead to duplicate headers when breaking table
    923     across page boundaries, or for static headers when
    924     tbody sections are rendered in scrolling panel.
    925 
    926     Use tfoot to duplicate footers when breaking table
    927     across page boundaries, or for static footers when
    928     tbody sections are rendered in scrolling panel.
    929 
    930     Use multiple tbody sections when rules are needed
    931     between groups of table rows.
    932 -->
    933 <!ATTLIST thead
    934   %attrs;
    935   %cellhalign;
    936   %cellvalign;
    937   >
    938 
    939 <!ATTLIST tfoot
    940   %attrs;
    941   %cellhalign;
    942   %cellvalign;
    943   >
    944 
    945 <!ATTLIST tbody
    946   %attrs;
    947   %cellhalign;
    948   %cellvalign;
    949   >
    950 
    951 <!ATTLIST tr
    952   %attrs;
    953   %cellhalign;
    954   %cellvalign;
    955   >
    956 
    957 
    958 <!-- Scope is simpler than headers attribute for common tables -->
    959 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
    960 
    961 <!-- th is for headers, td for data and for cells acting as both -->
    962 
    963 <!ATTLIST th
    964   %attrs;
    965   abbr        %Text;         #IMPLIED
    966   axis        CDATA          #IMPLIED
    967   headers     IDREFS         #IMPLIED
    968   scope       %Scope;        #IMPLIED
    969   rowspan     %Number;       "1"
    970   colspan     %Number;       "1"
    971   %cellhalign;
    972   %cellvalign;
    973   >
    974 
    975 <!ATTLIST td
    976   %attrs;
    977   abbr        %Text;         #IMPLIED
    978   axis        CDATA          #IMPLIED
    979   headers     IDREFS         #IMPLIED
    980   scope       %Scope;        #IMPLIED
    981   rowspan     %Number;       "1"
    982   colspan     %Number;       "1"
    983   %cellhalign;
    984   %cellvalign;
    985   >
    986 
    987