release
[closure-html.git] / resources / dtd / DTD-HTML-4.0
blobb12c2950010a20f5957e5d5c8e77da455ded0ca4
1 <!--
2     This is HTML 4.0 Strict DTD, which excludes the presentation 
3     attributes and elements that W3C expects to phase out as 
4     support for style sheets matures. Authors should use the Strict
5     DTD when possible, but may use the Transitional DTD when support
6     for presentation attribute and elements is required.
7     
8     HTML 4.0 includes mechanisms for style sheets, scripting,
9     embedding objects, improved support for right to left and mixed
10     direction text, and enhancements to forms for improved
11     accessibility for people with disabilities.
13           Draft: $Date: 2002-07-22 02:27:17 $
15           Authors:
16               Dave Raggett <dsr@w3.org>
17               Arnaud Le Hors <lehors@w3.org>
18               Ian Jacobs <ij@w3.org>
20     Further information about HTML 4.0 is available at:
22         http://www.w3.org/TR/REC-html40
23 -->
24 <!--
25     Typical usage:
27     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
28             "http://www.w3.org/TR/REC-html40/strict.dtd">
29     <html>
30     <head>
31     ...
32     </head>
33     <body>
34     ...
35     </body>
36     </html>
38     The URI used as a system identifier with the public identifier allows
39     the user agent to download the DTD and entity sets as needed.
41     The FPI for the Transitional HTML 4.0 DTD is:
43         "-//W3C//DTD HTML 4.0 Transitional//EN"
45     and its URI is:
47         http://www.w3.org/TR/REC-html40/loose.dtd
49     If you are writing a document that includes frames, use 
50     the following FPI:
52         "-//W3C//DTD HTML 4.0 Frameset//EN"
54     with the URI:
56         http://www.w3.org/TR/REC-html40/frameset.dtd
58     The following URIs are supported in relation to HTML 4.0
60     "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
61     "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD)
62     "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
63     "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Latin-1 entities)
64     "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Symbol entities)
65     "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Special entities)
67     These URIs point to the latest version of each file. To reference
68     this specific revision use the following URIs:
70     "http://www.w3.org/TR/1998/REC-html40-19980424/strict.dtd"
71     "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd"
72     "http://www.w3.org/TR/1998/REC-html40-19980424/frameset.dtd"
73     "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLlat1.ent"
74     "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLsymbol.ent"
75     "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLspecial.ent"
77 -->
79 <!--================== Imported Names ====================================-->
81 <!ENTITY % ContentType "CDATA"
82     -- media type, as per [RFC2045]
83     -->
85 <!ENTITY % ContentTypes "CDATA"
86     -- comma-separated list of media types, as per [RFC2045]
87     -->
89 <!ENTITY % Charset "CDATA"
90     -- a character encoding, as per [RFC2045]
91     -->
93 <!ENTITY % Charsets "CDATA"
94     -- a space separated list of character encodings, as per [RFC2045]
95     -->
97 <!ENTITY % LanguageCode "NAME"
98     -- a language code, as per [RFC1766]
99     -->
101 <!ENTITY % Character "CDATA"
102     -- a single character from [ISO10646] 
103     -->
105 <!ENTITY % LinkTypes "CDATA"
106     -- space-separated list of link types
107     -->
109 <!ENTITY % MediaDesc "CDATA"
110     -- single or comma-separated list of media descriptors
111     -->
113 <!ENTITY % URI "CDATA"
114     -- a Uniform Resource Identifier,
115        see [URI]
116     -->
118 <!ENTITY % Datetime "CDATA" -- date and time information. ISO date format -->
121 <!ENTITY % Script "CDATA" -- script expression -->
123 <!ENTITY % StyleSheet "CDATA" -- style sheet data -->
127 <!ENTITY % Text "CDATA">
130 <!-- Parameter Entities -->
132 <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->
134 <!ENTITY % heading "H1|H2|H3|H4|H5|H6">
136 <!ENTITY % list "UL | OL">
138 <!ENTITY % preformatted "PRE">
141 <!--================ Character mnemonic entities =========================-->
143 <!ENTITY % HTMLlat1 PUBLIC
144    "-//W3C//ENTITIES Latin1//EN//HTML"
145    "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLlat1.ent">
146 %HTMLlat1;
148 <!ENTITY % HTMLsymbol PUBLIC
149    "-//W3C//ENTITIES Symbols//EN//HTML"
150    "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLsymbol.ent">
151 %HTMLsymbol;
153 <!ENTITY % HTMLspecial PUBLIC
154    "-//W3C//ENTITIES Special//EN//HTML"
155    "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLspecial.ent">
156 %HTMLspecial;
157 <!--=================== Generic Attributes ===============================-->
159 <!ENTITY % coreattrs
160  "id          ID             #IMPLIED  -- document-wide unique id --
161   class       CDATA          #IMPLIED  -- space separated list of classes --
162   style       %StyleSheet;   #IMPLIED  -- associated style info --
163   title       %Text;         #IMPLIED  -- advisory title/amplification --"
164   >
166 <!ENTITY % i18n
167  "lang        %LanguageCode; #IMPLIED  -- language code --
168   dir         (ltr|rtl)      #IMPLIED  -- direction for weak/neutral text --"
169   >
171 <!ENTITY % events
172  "onclick     %Script;       #IMPLIED  -- a pointer button was clicked --
173   ondblclick  %Script;       #IMPLIED  -- a pointer button was double clicked--
174   onmousedown %Script;       #IMPLIED  -- a pointer button was pressed down --
175   onmouseup   %Script;       #IMPLIED  -- a pointer button was released --
176   onmouseover %Script;       #IMPLIED  -- a pointer was moved onto --
177   onmousemove %Script;       #IMPLIED  -- a pointer was moved within --
178   onmouseout  %Script;       #IMPLIED  -- a pointer was moved away --
179   onkeypress  %Script;       #IMPLIED  -- a key was pressed and released --
180   onkeydown   %Script;       #IMPLIED  -- a key was pressed down --
181   onkeyup     %Script;       #IMPLIED  -- a key was released --"
182   >
184 <!-- Reserved Feature Switch -->
185 <!ENTITY % HTML.Reserved "IGNORE">
187 <!-- The following attributes are reserved for possible future use -->
188 <![ %HTML.Reserved; [
189 <!ENTITY % reserved
190  "datasrc     %URI;          #IMPLIED  -- a single or tabular Data Source --
191   datafld     CDATA          #IMPLIED  -- the property or column name --
192   dataformatas (plaintext|html) plaintext -- text or html --"
193   >
196 <!ENTITY % reserved "">
198 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
201 <!--=================== Text Markup ======================================-->
203 <!ENTITY % fontstyle
204  "TT | I | B | BIG | SMALL">
206 <!ENTITY % phrase "EM | STRONG | DFN | CODE |
207                    SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
209 <!ENTITY % special
210    "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
212 <!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
214 <!-- %inline; covers inline or "text-level" elements -->
215 <!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
217 <!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
218 <!ATTLIST (%fontstyle;|%phrase;)
219   %attrs;                              -- %coreattrs, %i18n, %events --
220   >
222 <!ELEMENT (SUB|SUP) - - (%inline;)*    -- subscript, superscript -->
223 <!ATTLIST (SUB|SUP)
224   %attrs;                              -- %coreattrs, %i18n, %events --
225   >
227 <!ELEMENT SPAN - - (%inline;)*         -- generic language/style container -->
228 <!ATTLIST SPAN
229   %attrs;                              -- %coreattrs, %i18n, %events --
230   %reserved;                           -- reserved for possible future use --
231   >
233 <!ELEMENT BDO - - (%inline;)*          -- I18N BiDi over-ride -->
234 <!ATTLIST BDO
235   %coreattrs;                          -- id, class, style, title --
236   lang        %LanguageCode; #IMPLIED  -- language code --
237   dir         (ltr|rtl)      #REQUIRED -- directionality --
238   >
241 <!ELEMENT BR - O EMPTY                 -- forced line break -->
242 <!ATTLIST BR
243   %coreattrs;                          -- id, class, style, title --
244   >
246 <!--================== HTML content models ===============================-->
248 <!--
249     HTML has two basic content models:
251         %inline;     character level elements and text strings
252         %block;      block-like elements e.g. paragraphs and lists
255 <!ENTITY % block
256      "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
257       BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
259 <!ENTITY % flow "%block; | %inline;">
261 <!--=================== Document Body ====================================-->
263 <!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
264 <!ATTLIST BODY
265   %attrs;                              -- %coreattrs, %i18n, %events --
266   onload          %Script;   #IMPLIED  -- the document has been loaded --
267   onunload        %Script;   #IMPLIED  -- the document has been removed --
268   >
270 <!ELEMENT ADDRESS - - (%inline;)* -- information on author -->
271 <!ATTLIST ADDRESS
272   %attrs;                              -- %coreattrs, %i18n, %events --
273   >
275 <!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
276 <!ATTLIST DIV
277   %attrs;                              -- %coreattrs, %i18n, %events --
278   %reserved;                           -- reserved for possible future use --
279   >
282 <!--================== The Anchor Element ================================-->
284 <!ENTITY % Shape "(rect|circle|poly|default)">
285 <!ENTITY % Coords "CDATA" -- comma separated list of lengths -->
287 <!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
288 <!ATTLIST A
289   %attrs;                              -- %coreattrs, %i18n, %events --
290   charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
291   type        %ContentType;  #IMPLIED  -- advisory content type --
292   name        CDATA          #IMPLIED  -- named link end --
293   href        %URI;          #IMPLIED  -- URI for linked resource --
294   hreflang    %LanguageCode; #IMPLIED  -- language code --
295   rel         %LinkTypes;    #IMPLIED  -- forward link types --
296   rev         %LinkTypes;    #IMPLIED  -- reverse link types --
297   accesskey   %Character;    #IMPLIED  -- accessibility key character --
298   shape       %Shape;        rect      -- for use with client-side image maps --
299   coords      %Coords;       #IMPLIED  -- for use with client-side image maps --
300   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
301   onfocus     %Script;       #IMPLIED  -- the element got the focus --
302   onblur      %Script;       #IMPLIED  -- the element lost the focus --
303   >
305 <!--================== Client-side image maps ============================-->
307 <!-- These can be placed in the same document or grouped in a
308      separate document although this isn't yet widely supported -->
310 <!ELEMENT MAP - - ((%block;)+ | AREA+) -- client-side image map -->
311 <!ATTLIST MAP
312   %attrs;                              -- %coreattrs, %i18n, %events --
313   name        CDATA          #REQUIRED -- for reference by usemap --
314   >
316 <!ELEMENT AREA - O EMPTY               -- client-side image map area -->
317 <!ATTLIST AREA
318   %attrs;                              -- %coreattrs, %i18n, %events --
319   shape       %Shape;        rect      -- controls interpretation of coords --
320   coords      %Coords;       #IMPLIED  -- comma separated list of lengths --
321   href        %URI;          #IMPLIED  -- URI for linked resource --
322   nohref      (nohref)       #IMPLIED  -- this region has no action --
323   alt         %Text;         #REQUIRED -- short description --
324   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
325   accesskey   %Character;    #IMPLIED  -- accessibility key character --
326   onfocus     %Script;       #IMPLIED  -- the element got the focus --
327   onblur      %Script;       #IMPLIED  -- the element lost the focus --
328   >
330 <!--================== The LINK Element ==================================-->
332 <!--
333   Relationship values can be used in principle:
335    a) for document specific toolbars/menus when used
336       with the LINK element in document head e.g.
337         start, contents, previous, next, index, end, help
338    b) to link to a separate style sheet (rel=stylesheet)
339    c) to make a link to a script (rel=script)
340    d) by stylesheets to control how collections of
341       html nodes are rendered into printed documents
342    e) to make a link to a printable version of this document
343       e.g. a postscript or pdf version (rel=alternate media=print)
346 <!ELEMENT LINK - O EMPTY               -- a media-independent link -->
347 <!ATTLIST LINK
348   %attrs;                              -- %coreattrs, %i18n, %events --
349   charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
350   href        %URI;          #IMPLIED  -- URI for linked resource --
351   hreflang    %LanguageCode; #IMPLIED  -- language code --
352   type        %ContentType;  #IMPLIED  -- advisory content type --
353   rel         %LinkTypes;    #IMPLIED  -- forward link types --
354   rev         %LinkTypes;    #IMPLIED  -- reverse link types --
355   media       %MediaDesc;    #IMPLIED  -- for rendering on these media --
356   >
358 <!--=================== Images ===========================================-->
360 <!-- Length defined in strict DTD for cellpadding/cellspacing -->
361 <!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length -->
362 <!ENTITY % MultiLength "CDATA" -- pixel, percentage, or relative -->
364 <!ENTITY % MultiLengths "CDATA" -- comma-separated list of MultiLength -->
366 <!ENTITY % Pixels "CDATA" -- integer representing length in pixels -->
369 <!-- To avoid problems with text-only UAs as well as 
370    to make image content understandable and navigable 
371    to users of non-visual UAs, you need to provide
372    a description with ALT, and avoid server-side image maps -->
373 <!ELEMENT IMG - O EMPTY                -- Embedded image -->
374 <!ATTLIST IMG
375   %attrs;                              -- %coreattrs, %i18n, %events --
376   src         %URI;          #REQUIRED -- URI of image to embed --
377   alt         %Text;         #REQUIRED -- short description --
378   longdesc    %URI;          #IMPLIED  -- link to long description
379                                           (complements alt) --
380   height      %Length;       #IMPLIED  -- override height --
381   width       %Length;       #IMPLIED  -- override width --
382   usemap      %URI;          #IMPLIED  -- use client-side image map --
383   ismap       (ismap)        #IMPLIED  -- use server-side image map --
384   >
386 <!-- USEMAP points to a MAP element which may be in this document
387   or an external document, although the latter is not widely supported -->
389 <!--==================== OBJECT ======================================-->
390 <!--
391   OBJECT is used to embed objects as part of HTML pages 
392   PARAM elements should precede other content. SGML mixed content
393   model technicality precludes specifying this formally ...
396 <!ELEMENT OBJECT - - (PARAM | %flow;)*
397  -- generic embedded object -->
398 <!ATTLIST OBJECT
399   %attrs;                              -- %coreattrs, %i18n, %events --
400   declare     (declare)      #IMPLIED  -- declare but don't instantiate flag --
401   classid     %URI;          #IMPLIED  -- identifies an implementation --
402   codebase    %URI;          #IMPLIED  -- base URI for classid, data, archive--
403   data        %URI;          #IMPLIED  -- reference to object's data --
404   type        %ContentType;  #IMPLIED  -- content type for data --
405   codetype    %ContentType;  #IMPLIED  -- content type for code --
406   archive     %URI;          #IMPLIED  -- space separated archive list --
407   standby     %Text;         #IMPLIED  -- message to show while loading --
408   height      %Length;       #IMPLIED  -- override height --
409   width       %Length;       #IMPLIED  -- override width --
410   usemap      %URI;          #IMPLIED  -- use client-side image map --
411   name        CDATA          #IMPLIED  -- submit as part of form --
412   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
413   %reserved;                           -- reserved for possible future use --
414   >
416 <!ELEMENT PARAM - O EMPTY              -- named property value -->
417 <!ATTLIST PARAM
418   id          ID             #IMPLIED  -- document-wide unique id --
419   name        CDATA          #REQUIRED -- property name --
420   value       CDATA          #IMPLIED  -- property value --
421   valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
422   type        %ContentType;  #IMPLIED  -- content type for value
423                                           when valuetype=ref --
424   >
427 <!--=================== Horizontal Rule ==================================-->
429 <!ELEMENT HR - O EMPTY -- horizontal rule -->
430 <!ATTLIST HR
431   %coreattrs;                          -- id, class, style, title --
432   %events;
433   >
435 <!--=================== Paragraphs =======================================-->
437 <!ELEMENT P - O (%inline;)*            -- paragraph -->
438 <!ATTLIST P
439   %attrs;                              -- %coreattrs, %i18n, %events --
440   >
442 <!--=================== Headings =========================================-->
444 <!--
445   There are six levels of headings from H1 (the most important)
446   to H6 (the least important).
449 <!ELEMENT (%heading;)  - - (%inline;)* -- heading -->
450 <!ATTLIST (%heading;)
451   %attrs;                              -- %coreattrs, %i18n, %events --
452   >
454 <!--=================== Preformatted Text ================================-->
456 <!-- excludes markup for images and changes in font size -->
457 <!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">
459 <!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- preformatted text -->
460 <!ATTLIST PRE
461   %attrs;                              -- %coreattrs, %i18n, %events --
462   >
464 <!--===================== Inline Quotes ==================================-->
466 <!ELEMENT Q - - (%inline;)*            -- short inline quotation -->
467 <!ATTLIST Q
468   %attrs;                              -- %coreattrs, %i18n, %events --
469   cite        %URI;          #IMPLIED  -- URI for source document or msg --
470   >
472 <!--=================== Block-like Quotes ================================-->
474 <!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation -->
475 <!ATTLIST BLOCKQUOTE
476   %attrs;                              -- %coreattrs, %i18n, %events --
477   cite        %URI;          #IMPLIED  -- URI for source document or msg --
478   >
480 <!--=================== Inserted/Deleted Text ============================-->
483 <!-- INS/DEL are handled by inclusion on BODY -->
484 <!ELEMENT (INS|DEL) - - (%flow;)*      -- inserted text, deleted text -->
485 <!ATTLIST (INS|DEL)
486   %attrs;                              -- %coreattrs, %i18n, %events --
487   cite        %URI;          #IMPLIED  -- info on reason for change --
488   datetime    %Datetime;     #IMPLIED  -- date and time of change --
489   >
491 <!--=================== Lists ============================================-->
493 <!-- definition lists - DT for term, DD for its definition -->
495 <!ELEMENT DL - - (DT|DD)+              -- definition list -->
496 <!ATTLIST DL
497   %attrs;                              -- %coreattrs, %i18n, %events --
498   >
500 <!ELEMENT DT - O (%inline;)*           -- definition term -->
501 <!ELEMENT DD - O (%flow;)*             -- definition description -->
502 <!ATTLIST (DT|DD)
503   %attrs;                              -- %coreattrs, %i18n, %events --
504   >
507 <!ELEMENT OL - - (LI)+                 -- ordered list -->
508 <!ATTLIST OL
509   %attrs;                              -- %coreattrs, %i18n, %events --
510   >
512 <!-- Unordered Lists (UL) bullet styles -->
513 <!ELEMENT UL - - (LI)+                 -- unordered list -->
514 <!ATTLIST UL
515   %attrs;                              -- %coreattrs, %i18n, %events --
516   >
520 <!ELEMENT LI - O (%flow;)*             -- list item -->
521 <!ATTLIST LI
522   %attrs;                              -- %coreattrs, %i18n, %events --
523   >
525 <!--================ Forms ===============================================-->
526 <!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
527 <!ATTLIST FORM
528   %attrs;                              -- %coreattrs, %i18n, %events --
529   action      %URI;          #REQUIRED -- server-side form handler --
530   method      (GET|POST)     GET       -- HTTP method used to submit the form--
531   enctype     %ContentType;  "application/x-www-form-urlencoded"
532   onsubmit    %Script;       #IMPLIED  -- the form was submitted --
533   onreset     %Script;       #IMPLIED  -- the form was reset --
534   accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
535   >
537 <!-- Each label must not contain more than ONE field -->
538 <!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text -->
539 <!ATTLIST LABEL
540   %attrs;                              -- %coreattrs, %i18n, %events --
541   for         IDREF          #IMPLIED  -- matches field ID value --
542   accesskey   %Character;    #IMPLIED  -- accessibility key character --
543   onfocus     %Script;       #IMPLIED  -- the element got the focus --
544   onblur      %Script;       #IMPLIED  -- the element lost the focus --
545   >
547 <!ENTITY % InputType
548   "(TEXT | PASSWORD | CHECKBOX |
549     RADIO | SUBMIT | RESET |
550     FILE | HIDDEN | IMAGE | BUTTON)"
551    >
553 <!-- attribute name required for all but submit & reset -->
554 <!ELEMENT INPUT - O EMPTY              -- form control -->
555 <!ATTLIST INPUT
556   %attrs;                              -- %coreattrs, %i18n, %events --
557   type        %InputType;    TEXT      -- what kind of widget is needed --
558   name        CDATA          #IMPLIED  -- submit as part of form --
559   value       CDATA          #IMPLIED  -- required for radio and checkboxes --
560   checked     (checked)      #IMPLIED  -- for radio buttons and check boxes --
561   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
562   readonly    (readonly)     #IMPLIED  -- for text and passwd --
563   size        CDATA          #IMPLIED  -- specific to each type of field --
564   maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
565   src         %URI;          #IMPLIED  -- for fields with images --
566   alt         CDATA          #IMPLIED  -- short description --
567   usemap      %URI;          #IMPLIED  -- use client-side image map --
568   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
569   accesskey   %Character;    #IMPLIED  -- accessibility key character --
570   onfocus     %Script;       #IMPLIED  -- the element got the focus --
571   onblur      %Script;       #IMPLIED  -- the element lost the focus --
572   onselect    %Script;       #IMPLIED  -- some text was selected --
573   onchange    %Script;       #IMPLIED  -- the element value was changed --
574   accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
575   %reserved;                           -- reserved for possible future use --
576   >
578 <!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector -->
579 <!ATTLIST SELECT
580   %attrs;                              -- %coreattrs, %i18n, %events --
581   name        CDATA          #IMPLIED  -- field name --
582   size        NUMBER         #IMPLIED  -- rows visible --
583   multiple    (multiple)     #IMPLIED  -- default is single selection --
584   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
585   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
586   onfocus     %Script;       #IMPLIED  -- the element got the focus --
587   onblur      %Script;       #IMPLIED  -- the element lost the focus --
588   onchange    %Script;       #IMPLIED  -- the element value was changed --
589   %reserved;                           -- reserved for possible future use --
590   >
592 <!ELEMENT OPTGROUP - - (OPTION)+ -- option group -->
593 <!ATTLIST OPTGROUP
594   %attrs;                              -- %coreattrs, %i18n, %events --
595   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
596   label       %Text;         #REQUIRED -- for use in hierarchical menus --
597   >
599 <!ELEMENT OPTION - O (#PCDATA)         -- selectable choice -->
600 <!ATTLIST OPTION
601   %attrs;                              -- %coreattrs, %i18n, %events --
602   selected    (selected)     #IMPLIED
603   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
604   label       %Text;         #IMPLIED  -- for use in hierarchical menus --
605   value       CDATA          #IMPLIED  -- defaults to element content --
606   >
608 <!ELEMENT TEXTAREA - - (#PCDATA)       -- multi-line text field -->
609 <!ATTLIST TEXTAREA
610   %attrs;                              -- %coreattrs, %i18n, %events --
611   name        CDATA          #IMPLIED
612   rows        NUMBER         #REQUIRED
613   cols        NUMBER         #REQUIRED
614   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
615   readonly    (readonly)     #IMPLIED
616   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
617   accesskey   %Character;    #IMPLIED  -- accessibility key character --
618   onfocus     %Script;       #IMPLIED  -- the element got the focus --
619   onblur      %Script;       #IMPLIED  -- the element lost the focus --
620   onselect    %Script;       #IMPLIED  -- some text was selected --
621   onchange    %Script;       #IMPLIED  -- the element value was changed --
622   %reserved;                           -- reserved for possible future use --
623   >
625 <!--
626   #PCDATA is to solve the mixed content problem,
627   per specification only whitespace is allowed there!
628  -->
629 <!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- form control group -->
630 <!ATTLIST FIELDSET
631   %attrs;                              -- %coreattrs, %i18n, %events --
632   >
634 <!ELEMENT LEGEND - - (%inline;)*       -- fieldset legend -->
635 <!ENTITY % LAlign "(top|bottom|left|right)">
637 <!ATTLIST LEGEND
638   %attrs;                              -- %coreattrs, %i18n, %events --
639   accesskey   %Character;    #IMPLIED  -- accessibility key character --
640   >
642 <!ELEMENT BUTTON - -
643      (%flow;)* -(A|%formctrl;|FORM|FIELDSET)
644      -- push button -->
645 <!ATTLIST BUTTON
646   %attrs;                              -- %coreattrs, %i18n, %events --
647   name        CDATA          #IMPLIED
648   value       CDATA          #IMPLIED  -- sent to server when submitted --
649   type        (button|submit|reset) submit -- for use as form button --
650   disabled    (disabled)     #IMPLIED  -- unavailable in this context --
651   tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
652   accesskey   %Character;    #IMPLIED  -- accessibility key character --
653   onfocus     %Script;       #IMPLIED  -- the element got the focus --
654   onblur      %Script;       #IMPLIED  -- the element lost the focus --
655   %reserved;                           -- reserved for possible future use --
656   >
658 <!--======================= Tables =======================================-->
660 <!-- IETF HTML table standard, see [RFC1942] -->
662 <!--
663  The BORDER attribute sets the thickness of the frame around the
664  table. The default units are screen pixels.
666  The FRAME attribute specifies which parts of the frame around
667  the table should be rendered. The values are not the same as
668  CALS to avoid a name clash with the VALIGN attribute.
670  The value "border" is included for backwards compatibility with
671  <TABLE BORDER> which yields frame=border and border=implied
672  For <TABLE BORDER=1> you get border=1 and frame=implied. In this
673  case, it is appropriate to treat this as frame=border for backwards
674  compatibility with deployed browsers.
676 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
678 <!--
679  The RULES attribute defines which rules to draw between cells:
681  If RULES is absent then assume:
682      "none" if BORDER is absent or BORDER=0 otherwise "all"
685 <!ENTITY % TRules "(none | groups | rows | cols | all)">
686   
687 <!-- horizontal placement of table relative to document -->
688 <!ENTITY % TAlign "(left|center|right)">
690 <!-- horizontal alignment attributes for cell contents -->
691 <!ENTITY % cellhalign
692   "align      (left|center|right|justify|char) #IMPLIED
693    char       %Character;    #IMPLIED  -- alignment char, e.g. char=':' --
694    charoff    %Length;       #IMPLIED  -- offset for alignment char --"
695   >
697 <!-- vertical alignment attributes for cell contents -->
698 <!ENTITY % cellvalign
699   "valign     (top|middle|bottom|baseline) #IMPLIED"
700   >
702 <!ELEMENT TABLE - -
703      (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
704 <!ELEMENT CAPTION  - - (%inline;)*     -- table caption -->
705 <!ELEMENT THEAD    - O (TR)+           -- table header -->
706 <!ELEMENT TFOOT    - O (TR)+           -- table footer -->
707 <!ELEMENT TBODY    O O (TR)+           -- table body -->
708 <!ELEMENT COLGROUP - O (col)*          -- table column group -->
709 <!ELEMENT COL      - O EMPTY           -- table column -->
710 <!ELEMENT TR       - O (TH|TD)+        -- table row -->
711 <!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->
713 <!ATTLIST TABLE                        -- table element --
714   %attrs;                              -- %coreattrs, %i18n, %events --
715   summary     %Text;         #IMPLIED  -- purpose/structure for speech output--
716   width       %Length;       #IMPLIED  -- table width --
717   border      %Pixels;       #IMPLIED  -- controls frame width around table --
718   frame       %TFrame;       #IMPLIED  -- which parts of frame to render --
719   rules       %TRules;       #IMPLIED  -- rulings between rows and cols --
720   cellspacing %Length;       #IMPLIED  -- spacing between cells --
721   cellpadding %Length;       #IMPLIED  -- spacing within cells --
722   %reserved;                           -- reserved for possible future use --
723   datapagesize CDATA         #IMPLIED  -- reserved for possible future use --
724   >
726 <!ENTITY % CAlign "(top|bottom|left|right)">
728 <!ATTLIST CAPTION
729   %attrs;                              -- %coreattrs, %i18n, %events --
730   >
732 <!--
733 COLGROUP groups a set of COL elements. It allows you to group
734 several semantically related columns together.
736 <!ATTLIST COLGROUP
737   %attrs;                              -- %coreattrs, %i18n, %events --
738   span        NUMBER         1         -- default number of columns in group --
739   width       %MultiLength;  #IMPLIED  -- default width for enclosed COLs --
740   %cellhalign;                         -- horizontal alignment in cells --
741   %cellvalign;                         -- vertical alignment in cells --
742   >
744 <!--
745  COL elements define the alignment properties for cells in
746  one or more columns.
748  The WIDTH attribute specifies the width of the columns, e.g.
750      width=64        width in screen pixels
751      width=0.5*      relative width of 0.5
753  The SPAN attribute causes the attributes of one
754  COL element to apply to more than one column.
756 <!ATTLIST COL                          -- column groups and properties --
757   %attrs;                              -- %coreattrs, %i18n, %events --
758   span        NUMBER         1         -- COL attributes affect N columns --
759   width       %MultiLength;  #IMPLIED  -- column width specification --
760   %cellhalign;                         -- horizontal alignment in cells --
761   %cellvalign;                         -- vertical alignment in cells --
762   >
764 <!--
765     Use THEAD to duplicate headers when breaking table
766     across page boundaries, or for static headers when
767     TBODY sections are rendered in scrolling panel.
769     Use TFOOT to duplicate footers when breaking table
770     across page boundaries, or for static footers when
771     TBODY sections are rendered in scrolling panel.
773     Use multiple TBODY sections when rules are needed
774     between groups of table rows.
776 <!ATTLIST (THEAD|TBODY|TFOOT)          -- table section --
777   %attrs;                              -- %coreattrs, %i18n, %events --
778   %cellhalign;                         -- horizontal alignment in cells --
779   %cellvalign;                         -- vertical alignment in cells --
780   >
782 <!ATTLIST TR                           -- table row --
783   %attrs;                              -- %coreattrs, %i18n, %events --
784   %cellhalign;                         -- horizontal alignment in cells --
785   %cellvalign;                         -- vertical alignment in cells --
786   >
789 <!-- Scope is simpler than axes attribute for common tables -->
790 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
792 <!-- TH is for headers, TD for data, but for cells acting as both use TD -->
793 <!ATTLIST (TH|TD)                      -- header or data cell --
794   %attrs;                              -- %coreattrs, %i18n, %events --
795   abbr        %Text;         #IMPLIED  -- abbreviation for header cell --
796   axis        CDATA          #IMPLIED  -- names groups of related headers--
797   headers     IDREFS         #IMPLIED  -- list of id's for header cells --
798   scope       %Scope;        #IMPLIED  -- scope covered by header cells --
799   rowspan     NUMBER         1         -- number of rows spanned by cell --
800   colspan     NUMBER         1         -- number of cols spanned by cell --
801   %cellhalign;                         -- horizontal alignment in cells --
802   %cellvalign;                         -- vertical alignment in cells --
803   >
806 <!--================ Document Head =======================================-->
807 <!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
808 <!ENTITY % head.content "TITLE & BASE?">
810 <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
811 <!ATTLIST HEAD
812   %i18n;                               -- lang, dir --
813   profile     %URI;          #IMPLIED  -- named dictionary of meta info --
814   >
816 <!-- The TITLE element is not considered part of the flow of text.
817        It should be displayed, for example as the page header or
818        window title. Exactly one title is required per document.
819     -->
820 <!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- document title -->
821 <!ATTLIST TITLE %i18n>
824 <!ELEMENT BASE - O EMPTY               -- document base URI -->
825 <!ATTLIST BASE
826   href        %URI;          #REQUIRED -- URI that acts as base URI --
827   >
829 <!ELEMENT META - O EMPTY               -- generic metainformation -->
830 <!ATTLIST META
831   %i18n;                               -- lang, dir, for use with content --
832   http-equiv  NAME           #IMPLIED  -- HTTP response header name  --
833   name        NAME           #IMPLIED  -- metainformation name --
834   content     CDATA          #REQUIRED -- associated information --
835   scheme      CDATA          #IMPLIED  -- select form of content --
836   >
838 <!ELEMENT STYLE - - %StyleSheet        -- style info -->
839 <!ATTLIST STYLE
840   %i18n;                               -- lang, dir, for use with title --
841   type        %ContentType;  #REQUIRED -- content type of style language --
842   media       %MediaDesc;    #IMPLIED  -- designed for use with these media --
843   title       %Text;         #IMPLIED  -- advisory title --
844   >
846 <!ELEMENT SCRIPT - - %Script;          -- script statements -->
847 <!ATTLIST SCRIPT
848   charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
849   type        %ContentType;  #REQUIRED -- content type of script language --
850   src         %URI;          #IMPLIED  -- URI for an external script --
851   defer       (defer)        #IMPLIED  -- UA may defer execution of script --
852   event       CDATA          #IMPLIED  -- reserved for possible future use --
853   for         %URI;          #IMPLIED  -- reserved for possible future use --
854   >
856 <!ELEMENT NOSCRIPT - - (%block;)+
857   -- alternate content container for non script-based rendering -->
858 <!ATTLIST NOSCRIPT
859   %attrs;                              -- %coreattrs, %i18n, %events --
860   >
862 <!--================ Document Structure ==================================-->
863 <!ENTITY % html.content "HEAD, BODY">
865 <!ELEMENT HTML O O (%html.content;)    -- document root element -->
866 <!ATTLIST HTML
867   %i18n;                               -- lang, dir --
868   >