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