Initial Commit
[packages] / xemacs-packages / psgml-dtds / etc / html-4s.dtd
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.
12
13           Draft: $Date: 2002-08-25 10:21:57 $
14
15           Authors:
16               Dave Raggett <dsr@w3.org>
17               Arnaud Le Hors <lehors@w3.org>
18               Ian Jacobs <ij@w3.org>
19
20     Further information about HTML 4.0 is available at:
21
22         http://www.w3.org/TR/REC-html40
23 -->
24 <!--
25     Typical usage:
26
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>
37
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.
40
41     The FPI for the Transitional HTML 4.0 DTD is:
42
43         "-//W3C//DTD HTML 4.0 Transitional//EN"
44
45     and its URI is:
46
47         http://www.w3.org/TR/REC-html40/loose.dtd
48
49     If you are writing a document that includes frames, use 
50     the following FPI:
51
52         "-//W3C//DTD HTML 4.0 Frameset//EN"
53
54     with the URI:
55
56         http://www.w3.org/TR/REC-html40/frameset.dtd
57
58     The following URIs are supported in relation to HTML 4.0
59
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)
66
67     These URIs point to the latest version of each file. To reference
68     this specific revision use the following URIs:
69
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"
76
77 -->
78
79 <!--================== Imported Names ====================================-->
80
81 <!ENTITY % ContentType "CDATA"
82     -- media type, as per [RFC2045]
83     -->
84
85 <!ENTITY % ContentTypes "CDATA"
86     -- comma-separated list of media types, as per [RFC2045]
87     -->
88
89 <!ENTITY % Charset "CDATA"
90     -- a character encoding, as per [RFC2045]
91     -->
92
93 <!ENTITY % Charsets "CDATA"
94     -- a space separated list of character encodings, as per [RFC2045]
95     -->
96
97 <!ENTITY % LanguageCode "NAME"
98     -- a language code, as per [RFC1766]
99     -->
100
101 <!ENTITY % Character "CDATA"
102     -- a single character from [ISO10646] 
103     -->
104
105 <!ENTITY % LinkTypes "CDATA"
106     -- space-separated list of link types
107     -->
108
109 <!ENTITY % MediaDesc "CDATA"
110     -- single or comma-separated list of media descriptors
111     -->
112
113 <!ENTITY % URI "CDATA"
114     -- a Uniform Resource Identifier,
115        see [URI]
116     -->
117
118 <!ENTITY % Datetime "CDATA" -- date and time information. ISO date format -->
119
120
121 <!ENTITY % Script "CDATA" -- script expression -->
122
123 <!ENTITY % StyleSheet "CDATA" -- style sheet data -->
124
125
126
127 <!ENTITY % Text "CDATA">
128
129
130 <!-- Parameter Entities -->
131
132 <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->
133
134 <!ENTITY % heading "H1|H2|H3|H4|H5|H6">
135
136 <!ENTITY % list "UL | OL">
137
138 <!ENTITY % preformatted "PRE">
139
140
141 <!--================ Character mnemonic entities =========================-->
142
143 <!ENTITY % HTMLlat1 PUBLIC
144    "-//W3C//ENTITIES Latin1//EN//HTML"
145    "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLlat1.ent">
146 %HTMLlat1;
147
148 <!ENTITY % HTMLsymbol PUBLIC
149    "-//W3C//ENTITIES Symbols//EN//HTML"
150    "http://www.w3.org/TR/1998/REC-html40-19980424/HTMLsymbol.ent">
151 %HTMLsymbol;
152
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 ===============================-->
158
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   >
165
166 <!ENTITY % i18n
167  "lang        %LanguageCode; #IMPLIED  -- language code --
168   dir         (ltr|rtl)      #IMPLIED  -- direction for weak/neutral text --"
169   >
170
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   >
183
184 <!-- Reserved Feature Switch -->
185 <!ENTITY % HTML.Reserved "IGNORE">
186
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   >
194 ]]>
195
196 <!ENTITY % reserved "">
197
198 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
199
200
201 <!--=================== Text Markup ======================================-->
202
203 <!ENTITY % fontstyle
204  "TT | I | B | BIG | SMALL">
205
206 <!ENTITY % phrase "EM | STRONG | DFN | CODE |
207                    SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
208
209 <!ENTITY % special
210    "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
211
212 <!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
213
214 <!-- %inline; covers inline or "text-level" elements -->
215 <!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
216
217 <!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
218 <!ATTLIST (%fontstyle;|%phrase;)
219   %attrs;                              -- %coreattrs, %i18n, %events --
220   >
221
222 <!ELEMENT (SUB|SUP) - - (%inline;)*    -- subscript, superscript -->
223 <!ATTLIST (SUB|SUP)
224   %attrs;                              -- %coreattrs, %i18n, %events --
225   >
226
227 <!ELEMENT SPAN - - (%inline;)*         -- generic language/style container -->
228 <!ATTLIST SPAN
229   %attrs;                              -- %coreattrs, %i18n, %events --
230   %reserved;                           -- reserved for possible future use --
231   >
232
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   >
239
240
241 <!ELEMENT BR - O EMPTY                 -- forced line break -->
242 <!ATTLIST BR
243   %coreattrs;                          -- id, class, style, title --
244   >
245
246 <!--================== HTML content models ===============================-->
247
248 <!--
249     HTML has two basic content models:
250
251         %inline;     character level elements and text strings
252         %block;      block-like elements e.g. paragraphs and lists
253 -->
254
255 <!ENTITY % block
256      "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
257       BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
258
259 <!ENTITY % flow "%block; | %inline;">
260
261 <!--=================== Document Body ====================================-->
262
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   >
269
270 <!ELEMENT ADDRESS - - (%inline;)* -- information on author -->
271 <!ATTLIST ADDRESS
272   %attrs;                              -- %coreattrs, %i18n, %events --
273   >
274
275 <!ELEMENT DIV - - (%flow;)*            -- generic language/style container -->
276 <!ATTLIST DIV
277   %attrs;                              -- %coreattrs, %i18n, %events --
278   %reserved;                           -- reserved for possible future use --
279   >
280
281
282 <!--================== The Anchor Element ================================-->
283
284 <!ENTITY % Shape "(rect|circle|poly|default)">
285 <!ENTITY % Coords "CDATA" -- comma separated list of lengths -->
286
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   >
304
305 <!--================== Client-side image maps ============================-->
306
307 <!-- These can be placed in the same document or grouped in a
308      separate document although this isn't yet widely supported -->
309
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   >
315
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   >
329
330 <!--================== The LINK Element ==================================-->
331
332 <!--
333   Relationship values can be used in principle:
334
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)
344 -->
345
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   >
357
358 <!--=================== Images ===========================================-->
359
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 -->
363
364 <!ENTITY % MultiLengths "CDATA" -- comma-separated list of MultiLength -->
365
366 <!ENTITY % Pixels "CDATA" -- integer representing length in pixels -->
367
368
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   >
385
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 -->
388
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 ...
394 -->
395
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   >
415
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   >
425
426
427 <!--=================== Horizontal Rule ==================================-->
428
429 <!ELEMENT HR - O EMPTY -- horizontal rule -->
430 <!ATTLIST HR
431   %coreattrs;                          -- id, class, style, title --
432   %events;
433   >
434
435 <!--=================== Paragraphs =======================================-->
436
437 <!ELEMENT P - O (%inline;)*            -- paragraph -->
438 <!ATTLIST P
439   %attrs;                              -- %coreattrs, %i18n, %events --
440   >
441
442 <!--=================== Headings =========================================-->
443
444 <!--
445   There are six levels of headings from H1 (the most important)
446   to H6 (the least important).
447 -->
448
449 <!ELEMENT (%heading;)  - - (%inline;)* -- heading -->
450 <!ATTLIST (%heading;)
451   %attrs;                              -- %coreattrs, %i18n, %events --
452   >
453
454 <!--=================== Preformatted Text ================================-->
455
456 <!-- excludes markup for images and changes in font size -->
457 <!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">
458
459 <!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- preformatted text -->
460 <!ATTLIST PRE
461   %attrs;                              -- %coreattrs, %i18n, %events --
462   >
463
464 <!--===================== Inline Quotes ==================================-->
465
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   >
471
472 <!--=================== Block-like Quotes ================================-->
473
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   >
479
480 <!--=================== Inserted/Deleted Text ============================-->
481
482
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   >
490
491 <!--=================== Lists ============================================-->
492
493 <!-- definition lists - DT for term, DD for its definition -->
494
495 <!ELEMENT DL - - (DT|DD)+              -- definition list -->
496 <!ATTLIST DL
497   %attrs;                              -- %coreattrs, %i18n, %events --
498   >
499
500 <!ELEMENT DT - O (%inline;)*           -- definition term -->
501 <!ELEMENT DD - O (%flow;)*             -- definition description -->
502 <!ATTLIST (DT|DD)
503   %attrs;                              -- %coreattrs, %i18n, %events --
504   >
505
506
507 <!ELEMENT OL - - (LI)+                 -- ordered list -->
508 <!ATTLIST OL
509   %attrs;                              -- %coreattrs, %i18n, %events --
510   >
511
512 <!-- Unordered Lists (UL) bullet styles -->
513 <!ELEMENT UL - - (LI)+                 -- unordered list -->
514 <!ATTLIST UL
515   %attrs;                              -- %coreattrs, %i18n, %events --
516   >
517
518
519
520 <!ELEMENT LI - O (%flow;)*             -- list item -->
521 <!ATTLIST LI
522   %attrs;                              -- %coreattrs, %i18n, %events --
523   >
524
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   >
536
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   >
546
547 <!ENTITY % InputType
548   "(TEXT | PASSWORD | CHECKBOX |
549     RADIO | SUBMIT | RESET |
550     FILE | HIDDEN | IMAGE | BUTTON)"
551    >
552
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   >
577
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   >
591
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   >
598
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   >
607
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   >
624
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   >
633
634 <!ELEMENT LEGEND - - (%inline;)*       -- fieldset legend -->
635 <!ENTITY % LAlign "(top|bottom|left|right)">
636
637 <!ATTLIST LEGEND
638   %attrs;                              -- %coreattrs, %i18n, %events --
639   accesskey   %Character;    #IMPLIED  -- accessibility key character --
640   >
641
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   >
657
658 <!--======================= Tables =======================================-->
659
660 <!-- IETF HTML table standard, see [RFC1942] -->
661
662 <!--
663  The BORDER attribute sets the thickness of the frame around the
664  table. The default units are screen pixels.
665
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.
669
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.
675 -->
676 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
677
678 <!--
679  The RULES attribute defines which rules to draw between cells:
680
681  If RULES is absent then assume:
682      "none" if BORDER is absent or BORDER=0 otherwise "all"
683 -->
684
685 <!ENTITY % TRules "(none | groups | rows | cols | all)">
686   
687 <!-- horizontal placement of table relative to document -->
688 <!ENTITY % TAlign "(left|center|right)">
689
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   >
696
697 <!-- vertical alignment attributes for cell contents -->
698 <!ENTITY % cellvalign
699   "valign     (top|middle|bottom|baseline) #IMPLIED"
700   >
701
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-->
712
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   >
725
726 <!ENTITY % CAlign "(top|bottom|left|right)">
727
728 <!ATTLIST CAPTION
729   %attrs;                              -- %coreattrs, %i18n, %events --
730   >
731
732 <!--
733 COLGROUP groups a set of COL elements. It allows you to group
734 several semantically related columns together.
735 -->
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   >
743
744 <!--
745  COL elements define the alignment properties for cells in
746  one or more columns.
747
748  The WIDTH attribute specifies the width of the columns, e.g.
749
750      width=64        width in screen pixels
751      width=0.5*      relative width of 0.5
752
753  The SPAN attribute causes the attributes of one
754  COL element to apply to more than one column.
755 -->
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   >
763
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.
768
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.
772
773     Use multiple TBODY sections when rules are needed
774     between groups of table rows.
775 -->
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   >
781
782 <!ATTLIST TR                           -- table row --
783   %attrs;                              -- %coreattrs, %i18n, %events --
784   %cellhalign;                         -- horizontal alignment in cells --
785   %cellvalign;                         -- vertical alignment in cells --
786   >
787
788
789 <!-- Scope is simpler than axes attribute for common tables -->
790 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
791
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   >
804
805
806 <!--================ Document Head =======================================-->
807 <!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
808 <!ENTITY % head.content "TITLE & BASE?">
809
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   >
815
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>
822
823
824 <!ELEMENT BASE - O EMPTY               -- document base URI -->
825 <!ATTLIST BASE
826   href        %URI;          #REQUIRED -- URI that acts as base URI --
827   >
828
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   >
837
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   >
845
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   >
855
856 <!ELEMENT NOSCRIPT - - (%block;)+
857   -- alternate content container for non script-based rendering -->
858 <!ATTLIST NOSCRIPT
859   %attrs;                              -- %coreattrs, %i18n, %events --
860   >
861
862 <!--================ Document Structure ==================================-->
863 <!ENTITY % html.content "HEAD, BODY">
864
865 <!ELEMENT HTML O O (%html.content;)    -- document root element -->
866 <!ATTLIST HTML
867   %i18n;                               -- lang, dir --
868   >