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