tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xhtml1-strict.dtd (25472B)


      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: 1.1 $
     20   $Date: 2008/03/29 19:06:30 $
     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  >