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