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