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