Initial Commit
[packages] / xemacs-packages / psgml-dtds / etc / xhtml1-transitional.dtd
1 <!--
2    Extensible HTML version 1.0 Transitional DTD
3
4    This is the same as HTML 4.0 Transitional 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 Transitional//EN"
17    SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
18
19    $Revision: 1.1 $
20    $Date: 2002-08-25 10:22:00 $
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 <!-- used for object, applet, img, input and iframe -->
111 <!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
112
113 <!-- a color using sRGB: #RRGGBB as Hex values -->
114 <!ENTITY % Color "CDATA">
115
116 <!-- There are also 16 widely known color names with their sRGB values:
117
118     Black  = #000000    Green  = #008000
119     Silver = #C0C0C0    Lime   = #00FF00
120     Gray   = #808080    Olive  = #808000
121     White  = #FFFFFF    Yellow = #FFFF00
122     Maroon = #800000    Navy   = #000080
123     Red    = #FF0000    Blue   = #0000FF
124     Purple = #800080    Teal   = #008080
125     Fuchsia= #FF00FF    Aqua   = #00FFFF
126 -->
127
128 <!--=================== Generic Attributes ===============================-->
129
130 <!-- core attributes common to most elements
131   id       document-wide unique id
132   class    space separated list of classes
133   style    associated style info
134   title    advisory title/amplification
135 -->
136 <!ENTITY % coreattrs
137  "id          ID             #IMPLIED
138   class       CDATA          #IMPLIED
139   style       %StyleSheet;   #IMPLIED
140   title       %Text;         #IMPLIED"
141   >
142
143 <!-- internationalization attributes
144   lang        language code (backwards compatible)
145   xml:lang    language code (as per XML 1.0 spec)
146   dir         direction for weak/neutral text
147 -->
148 <!ENTITY % i18n
149  "lang        %LanguageCode; #IMPLIED
150   xml:lang    %LanguageCode; #IMPLIED
151   dir         (ltr|rtl)      #IMPLIED"
152   >
153
154 <!-- attributes for common UI events
155   onclick     a pointer button was clicked
156   ondblclick  a pointer button was double clicked
157   onmousedown a pointer button was pressed down
158   onmouseup   a pointer button was released
159   onmousemove a pointer was moved onto the element
160   onmouseout  a pointer was moved away from the element
161   onkeypress  a key was pressed and released
162   onkeydown   a key was pressed down
163   onkeyup     a key was released
164 -->
165 <!ENTITY % events
166  "onclick     %Script;       #IMPLIED
167   ondblclick  %Script;       #IMPLIED
168   onmousedown %Script;       #IMPLIED
169   onmouseup   %Script;       #IMPLIED
170   onmouseover %Script;       #IMPLIED
171   onmousemove %Script;       #IMPLIED
172   onmouseout  %Script;       #IMPLIED
173   onkeypress  %Script;       #IMPLIED
174   onkeydown   %Script;       #IMPLIED
175   onkeyup     %Script;       #IMPLIED"
176   >
177
178 <!-- attributes for elements that can get the focus
179   accesskey   accessibility key character
180   tabindex    position in tabbing order
181   onfocus     the element got the focus
182   onblur      the element lost the focus
183 -->
184 <!ENTITY % focus
185  "accesskey   %Character;    #IMPLIED
186   tabindex    %Number;       #IMPLIED
187   onfocus     %Script;       #IMPLIED
188   onblur      %Script;       #IMPLIED"
189   >
190
191 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
192
193 <!-- text alignment for p, div, h1-h6. The default is
194      align="left" for ltr headings, "right" for rtl -->
195
196 <!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
197
198 <!--=================== Text Elements ====================================-->
199
200 <!ENTITY % special
201    "br | span | bdo | object | applet | img | map | iframe">
202
203 <!ENTITY % fontstyle "tt | i | b | big | small | u
204                       | s | strike |font | basefont">
205
206 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
207                    samp | kbd | var | cite | abbr | acronym">
208
209 <!ENTITY % inline.forms "input | select | textarea | label | button">
210
211 <!-- these can occur at block or inline level -->
212 <!ENTITY % misc "ins | del | script | noscript">
213
214 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
215
216 <!-- %Inline; covers inline or "text-level" elements -->
217 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
218
219 <!--================== Block level elements ==============================-->
220
221 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
222 <!ENTITY % lists "ul | ol | dl | menu | dir">
223 <!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
224
225 <!ENTITY % block
226     "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
227
228 <!ENTITY % Block "(%block; | form | %misc;)*">
229
230 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
231 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
232
233 <!--================== Content models for exclusions =====================-->
234
235 <!-- a elements use %Inline; excluding a -->
236
237 <!ENTITY % a.content
238    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
239
240 <!-- pre uses %Inline excluding img, object, applet, big, small,
241      sub, sup, font, or basefont -->
242
243 <!ENTITY % pre.content
244    "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
245       %phrase; | %inline.forms;)*">
246
247 <!-- form uses %Flow; excluding form -->
248
249 <!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
250
251 <!-- button uses %Flow; but excludes a, form, form controls, iframe -->
252
253 <!ENTITY % button.content
254    "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
255       table | br | span | bdo | object | applet | img | map |
256       %fontstyle; | %phrase; | %misc;)*">
257
258 <!--================ Document Structure ==================================-->
259
260 <!-- the namespace URI designates the document profile -->
261
262 <!ELEMENT html (head, body)>
263 <!ATTLIST html
264   %i18n;
265   xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
266   >
267
268 <!--================ Document Head =======================================-->
269
270 <!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
271
272 <!-- content model is %head.misc; combined with a single
273      title and an optional base element in any order -->
274
275 <!ELEMENT head (%head.misc;,
276      ((title, %head.misc;, (base, %head.misc;)?) |
277       (base, %head.misc;, (title, %head.misc;))))>
278
279 <!ATTLIST head
280   %i18n;
281   profile     %URI;          #IMPLIED
282   >
283
284 <!-- The title element is not considered part of the flow of text.
285        It should be displayed, for example as the page header or
286        window title. Exactly one title is required per document.
287     -->
288 <!ELEMENT title (#PCDATA)>
289 <!ATTLIST title %i18n;>
290
291 <!-- document base URI -->
292
293 <!ELEMENT base EMPTY>
294 <!ATTLIST base
295   href        %URI;          #IMPLIED
296   target      %FrameTarget;  #IMPLIED
297   >
298
299 <!-- generic metainformation -->
300 <!ELEMENT meta EMPTY>
301 <!ATTLIST meta
302   %i18n;
303   http-equiv  CDATA          #IMPLIED
304   name        CDATA          #IMPLIED
305   content     CDATA          #REQUIRED
306   scheme      CDATA          #IMPLIED
307   >
308
309 <!--
310   Relationship values can be used in principle:
311
312    a) for document specific toolbars/menus when used
313       with the link element in document head e.g.
314         start, contents, previous, next, index, end, help
315    b) to link to a separate style sheet (rel="stylesheet")
316    c) to make a link to a script (rel="script")
317    d) by stylesheets to control how collections of
318       html nodes are rendered into printed documents
319    e) to make a link to a printable version of this document
320       e.g. a PostScript or PDF version (rel="alternate" media="print")
321 -->
322
323 <!ELEMENT link EMPTY>
324 <!ATTLIST link
325   %attrs;
326   charset     %Charset;      #IMPLIED
327   href        %URI;          #IMPLIED
328   hreflang    %LanguageCode; #IMPLIED
329   type        %ContentType;  #IMPLIED
330   rel         %LinkTypes;    #IMPLIED
331   rev         %LinkTypes;    #IMPLIED
332   media       %MediaDesc;    #IMPLIED
333   target      %FrameTarget;  #IMPLIED
334   >
335
336 <!-- style info, which may include CDATA sections -->
337 <!ELEMENT style (#PCDATA)>
338 <!ATTLIST style
339   %i18n;
340   type        %ContentType;  #REQUIRED
341   media       %MediaDesc;    #IMPLIED
342   title       %Text;         #IMPLIED
343   xml:space   (preserve)     #FIXED 'preserve'
344   >
345
346 <!-- script statements, which may include CDATA sections -->
347 <!ELEMENT script (#PCDATA)>
348 <!ATTLIST script
349   charset     %Charset;      #IMPLIED
350   type        %ContentType;  #REQUIRED
351   language    CDATA          #IMPLIED
352   src         %URI;          #IMPLIED
353   defer       (defer)        #IMPLIED
354   xml:space   (preserve)     #FIXED 'preserve'
355   >
356
357 <!-- alternate content container for non script-based rendering -->
358
359 <!ELEMENT noscript %Flow;>
360 <!ATTLIST noscript
361   %attrs;
362   >
363
364 <!--======================= Frames =======================================-->
365
366 <!-- inline subwindow -->
367
368 <!ELEMENT iframe %Flow;>
369 <!ATTLIST iframe
370   %coreattrs;
371   longdesc    %URI;          #IMPLIED
372   name        NMTOKEN        #IMPLIED
373   src         %URI;          #IMPLIED
374   frameborder (1|0)          "1"
375   marginwidth %Pixels;       #IMPLIED
376   marginheight %Pixels;      #IMPLIED
377   scrolling   (yes|no|auto)  "auto"
378   align       %ImgAlign;     #IMPLIED
379   height      %Length;       #IMPLIED
380   width       %Length;       #IMPLIED
381   >
382
383 <!-- alternate content container for non frame-based rendering -->
384
385 <!ELEMENT noframes %Flow;>
386 <!ATTLIST noframes
387   %attrs;
388   >
389
390 <!--=================== Document Body ====================================-->
391
392 <!ELEMENT body %Flow;>
393 <!ATTLIST body
394   %attrs;
395   onload      %Script;       #IMPLIED
396   onunload    %Script;       #IMPLIED
397   background  %URI;          #IMPLIED
398   bgcolor     %Color;        #IMPLIED
399   text        %Color;        #IMPLIED
400   link        %Color;        #IMPLIED
401   vlink       %Color;        #IMPLIED
402   alink       %Color;        #IMPLIED
403   >
404
405 <!ELEMENT div %Flow;>  <!-- generic language/style container -->
406 <!ATTLIST div
407   %attrs;
408   %TextAlign;
409   >
410
411 <!--=================== Paragraphs =======================================-->
412
413 <!ELEMENT p %Inline;>
414 <!ATTLIST p
415   %attrs;
416   %TextAlign;
417   >
418
419 <!--=================== Headings =========================================-->
420
421 <!--
422   There are six levels of headings from h1 (the most important)
423   to h6 (the least important).
424 -->
425
426 <!ELEMENT h1  %Inline;>
427 <!ATTLIST h1
428   %attrs;
429   %TextAlign;
430   >
431
432 <!ELEMENT h2 %Inline;>
433 <!ATTLIST h2
434   %attrs;
435   %TextAlign;
436   >
437
438 <!ELEMENT h3 %Inline;>
439 <!ATTLIST h3
440   %attrs;
441   %TextAlign;
442   >
443
444 <!ELEMENT h4 %Inline;>
445 <!ATTLIST h4
446   %attrs;
447   %TextAlign;
448   >
449
450 <!ELEMENT h5 %Inline;>
451 <!ATTLIST h5
452   %attrs;
453   %TextAlign;
454   >
455
456 <!ELEMENT h6 %Inline;>
457 <!ATTLIST h6
458   %attrs;
459   %TextAlign;
460   >
461
462 <!--=================== Lists ============================================-->
463
464 <!-- Unordered list bullet styles -->
465
466 <!ENTITY % ULStyle "(disc|square|circle)">
467
468 <!-- Unordered list -->
469
470 <!ELEMENT ul (li)+>
471 <!ATTLIST ul
472   %attrs;
473   type        %ULStyle;     #IMPLIED
474   compact     (compact)     #IMPLIED
475   >
476
477 <!-- Ordered list numbering style
478
479     1   arabic numbers      1, 2, 3, ...
480     a   lower alpha         a, b, c, ...
481     A   upper alpha         A, B, C, ...
482     i   lower roman         i, ii, iii, ...
483     I   upper roman         I, II, III, ...
484
485     The style is applied to the sequence number which by default
486     is reset to 1 for the first list item in an ordered list.
487 -->
488 <!ENTITY % OLStyle "CDATA">
489
490 <!-- Ordered (numbered) list -->
491
492 <!ELEMENT ol (li)+>
493 <!ATTLIST ol
494   %attrs;
495   type        %OLStyle;      #IMPLIED
496   compact     (compact)      #IMPLIED
497   start       %Number;       #IMPLIED
498   >
499
500 <!-- single column list (DEPRECATED) --> 
501 <!ELEMENT menu (li)+>
502 <!ATTLIST menu
503   %attrs;
504   compact     (compact)     #IMPLIED
505   >
506
507 <!-- multiple column list (DEPRECATED) --> 
508 <!ELEMENT dir (li)+>
509 <!ATTLIST dir
510   %attrs;
511   compact     (compact)     #IMPLIED
512   >
513
514 <!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
515 <!ENTITY % LIStyle "CDATA">
516
517 <!-- list item -->
518
519 <!ELEMENT li %Flow;>
520 <!ATTLIST li
521   %attrs;
522   type        %LIStyle;      #IMPLIED
523   value       %Number;       #IMPLIED
524   >
525
526 <!-- definition lists - dt for term, dd for its definition -->
527
528 <!ELEMENT dl (dt|dd)+>
529 <!ATTLIST dl
530   %attrs;
531   compact     (compact)      #IMPLIED
532   >
533
534 <!ELEMENT dt %Inline;>
535 <!ATTLIST dt
536   %attrs;
537   >
538
539 <!ELEMENT dd %Flow;>
540 <!ATTLIST dd
541   %attrs;
542   >
543
544 <!--=================== Address ==========================================-->
545
546 <!-- information on author -->
547
548 <!ELEMENT address %Inline;>
549 <!ATTLIST address
550   %attrs;
551   >
552
553 <!--=================== Horizontal Rule ==================================-->
554
555 <!ELEMENT hr EMPTY>
556 <!ATTLIST hr
557   %attrs;
558   align       (left|center|right) #IMPLIED
559   noshade     (noshade)      #IMPLIED
560   size        %Pixels;       #IMPLIED
561   width       %Length;       #IMPLIED
562   >
563
564 <!--=================== Preformatted Text ================================-->
565
566 <!-- content is %Inline; excluding 
567         "img|object|applet|big|small|sub|sup|font|basefont" -->
568
569 <!ELEMENT pre %pre.content;>
570 <!ATTLIST pre
571   %attrs;
572   width       %Number;      #IMPLIED
573   xml:space   (preserve)    #FIXED 'preserve'
574   >
575
576 <!--=================== Block-like Quotes ================================-->
577
578 <!ELEMENT blockquote %Flow;>
579 <!ATTLIST blockquote
580   %attrs;
581   cite        %URI;          #IMPLIED
582   >
583
584 <!--=================== Text alignment ===================================-->
585
586 <!-- center content -->
587 <!ELEMENT center %Flow;>
588 <!ATTLIST center
589   %attrs;
590   >
591
592 <!--=================== Inserted/Deleted Text ============================-->
593
594 <!--
595   ins/del are allowed in block and inline content, but its
596   inappropriate to include block content within an ins element
597   occurring in inline content.
598 -->
599 <!ELEMENT ins %Flow;>
600 <!ATTLIST ins
601   %attrs;
602   cite        %URI;          #IMPLIED
603   datetime    %Datetime;     #IMPLIED
604   >
605
606 <!ELEMENT del %Flow;>
607 <!ATTLIST del
608   %attrs;
609   cite        %URI;          #IMPLIED
610   datetime    %Datetime;     #IMPLIED
611   >
612
613 <!--================== The Anchor Element ================================-->
614
615 <!-- content is %Inline; except that anchors shouldn't be nested -->
616
617 <!ELEMENT a %a.content;>
618 <!ATTLIST a
619   %attrs;
620   charset     %Charset;      #IMPLIED
621   type        %ContentType;  #IMPLIED
622   name        NMTOKEN        #IMPLIED
623   href        %URI;          #IMPLIED
624   hreflang    %LanguageCode; #IMPLIED
625   rel         %LinkTypes;    #IMPLIED
626   rev         %LinkTypes;    #IMPLIED
627   accesskey   %Character;    #IMPLIED
628   shape       %Shape;        "rect"
629   coords      %Coords;       #IMPLIED
630   tabindex    %Number;       #IMPLIED
631   onfocus     %Script;       #IMPLIED
632   onblur      %Script;       #IMPLIED
633   target      %FrameTarget;  #IMPLIED
634   >
635
636 <!--===================== Inline Elements ================================-->
637
638 <!ELEMENT span %Inline;> <!-- generic language/style container -->
639 <!ATTLIST span
640   %attrs;
641   >
642
643 <!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
644 <!ATTLIST bdo
645   %coreattrs;
646   %events;
647   lang        %LanguageCode; #IMPLIED
648   xml:lang    %LanguageCode; #IMPLIED
649   dir         (ltr|rtl)      #REQUIRED
650   >
651
652 <!ELEMENT br EMPTY>   <!-- forced line break -->
653 <!ATTLIST br
654   %coreattrs;
655   clear       (left|all|right|none) "none"
656   >
657
658 <!ELEMENT em %Inline;>   <!-- emphasis -->
659 <!ATTLIST em %attrs;>
660
661 <!ELEMENT strong %Inline;>   <!-- strong emphasis -->
662 <!ATTLIST strong %attrs;>
663
664 <!ELEMENT dfn %Inline;>   <!-- definitional -->
665 <!ATTLIST dfn %attrs;>
666
667 <!ELEMENT code %Inline;>   <!-- program code -->
668 <!ATTLIST code %attrs;>
669
670 <!ELEMENT samp %Inline;>   <!-- sample -->
671 <!ATTLIST samp %attrs;>
672
673 <!ELEMENT kbd %Inline;>  <!-- something user would type -->
674 <!ATTLIST kbd %attrs;>
675
676 <!ELEMENT var %Inline;>   <!-- variable -->
677 <!ATTLIST var %attrs;>
678
679 <!ELEMENT cite %Inline;>   <!-- citation -->
680 <!ATTLIST cite %attrs;>
681
682 <!ELEMENT abbr %Inline;>   <!-- abbreviation -->
683 <!ATTLIST abbr %attrs;>
684
685 <!ELEMENT acronym %Inline;>   <!-- acronym -->
686 <!ATTLIST acronym %attrs;>
687
688 <!ELEMENT q %Inline;>   <!-- inlined quote -->
689 <!ATTLIST q
690   %attrs;
691   cite        %URI;          #IMPLIED
692   >
693
694 <!ELEMENT sub %Inline;> <!-- subscript -->
695 <!ATTLIST sub %attrs;>
696
697 <!ELEMENT sup %Inline;> <!-- superscript -->
698 <!ATTLIST sup %attrs;>
699
700 <!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
701 <!ATTLIST tt %attrs;>
702
703 <!ELEMENT i %Inline;>   <!-- italic font -->
704 <!ATTLIST i %attrs;>
705
706 <!ELEMENT b %Inline;>   <!-- bold font -->
707 <!ATTLIST b %attrs;>
708
709 <!ELEMENT big %Inline;>   <!-- bigger font -->
710 <!ATTLIST big %attrs;>
711
712 <!ELEMENT small %Inline;>   <!-- smaller font -->
713 <!ATTLIST small %attrs;>
714
715 <!ELEMENT u %Inline;>   <!-- underline -->
716 <!ATTLIST u %attrs;>
717
718 <!ELEMENT s %Inline;>   <!-- strike-through -->
719 <!ATTLIST s %attrs;>
720
721 <!ELEMENT strike %Inline;>   <!-- strike-through -->
722 <!ATTLIST strike %attrs;>
723
724 <!ELEMENT basefont EMPTY>  <!-- base font size -->
725 <!ATTLIST basefont
726   id          ID             #IMPLIED
727   size        CDATA          #REQUIRED
728   color       %Color;        #IMPLIED
729   face        CDATA          #IMPLIED
730   >
731
732 <!ELEMENT font %Inline;> <!-- local change to font -->
733 <!ATTLIST font
734   %coreattrs;
735   %i18n;
736   size        CDATA          #IMPLIED
737   color       %Color;        #IMPLIED
738   face        CDATA          #IMPLIED
739   >
740
741 <!--==================== Object ======================================-->
742 <!--
743   object is used to embed objects as part of HTML pages.
744   param elements should precede other content. Parameters
745   can also be expressed as attribute/value pairs on the
746   object element itself when brevity is desired.
747 -->
748
749 <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
750 <!ATTLIST object
751   %attrs;
752   declare     (declare)      #IMPLIED
753   classid     %URI;          #IMPLIED
754   codebase    %URI;          #IMPLIED
755   data        %URI;          #IMPLIED
756   type        %ContentType;  #IMPLIED
757   codetype    %ContentType;  #IMPLIED
758   archive     %UriList;      #IMPLIED
759   standby     %Text;         #IMPLIED
760   height      %Length;       #IMPLIED
761   width       %Length;       #IMPLIED
762   usemap      %URI;          #IMPLIED
763   name        NMTOKEN        #IMPLIED
764   tabindex    %Number;       #IMPLIED
765   align       %ImgAlign;     #IMPLIED
766   border      %Pixels;       #IMPLIED
767   hspace      %Pixels;       #IMPLIED
768   vspace      %Pixels;       #IMPLIED
769   >
770
771 <!--
772   param is used to supply a named property value.
773   In XML it would seem natural to follow RDF and support an
774   abbreviated syntax where the param elements are replaced
775   by attribute value pairs on the object start tag.
776 -->
777 <!ELEMENT param EMPTY>
778 <!ATTLIST param
779   id          ID             #IMPLIED
780   name        CDATA          #REQUIRED
781   value       CDATA          #IMPLIED
782   valuetype   (data|ref|object) "data"
783   type        %ContentType;  #IMPLIED
784   >
785
786 <!--=================== Java applet ==================================-->
787 <!--
788   One of code or object attributes must be present.
789   Place param elements before other content.
790 -->
791 <!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
792 <!ATTLIST applet
793   %coreattrs;
794   codebase    %URI;          #IMPLIED
795   archive     CDATA          #IMPLIED
796   code        CDATA          #IMPLIED
797   object      CDATA          #IMPLIED
798   alt         %Text;         #IMPLIED
799   name        NMTOKEN        #IMPLIED
800   width       %Length;       #REQUIRED
801   height      %Length;       #REQUIRED
802   align       %ImgAlign;     #IMPLIED
803   hspace      %Pixels;       #IMPLIED
804   vspace      %Pixels;       #IMPLIED
805   >
806
807 <!--=================== Images ===========================================-->
808
809 <!--
810    To avoid accessibility problems for people who aren't
811    able to see the image, you should provide a text
812    description using the alt and longdesc attributes.
813    In addition, avoid the use of server-side image maps.
814 -->
815
816 <!ELEMENT img EMPTY>
817 <!ATTLIST img
818   %attrs;
819   src         %URI;          #REQUIRED
820   alt         %Text;         #REQUIRED
821   name        NMTOKEN        #IMPLIED
822   longdesc    %URI;          #IMPLIED
823   height      %Length;       #IMPLIED
824   width       %Length;       #IMPLIED
825   usemap      %URI;          #IMPLIED
826   ismap       (ismap)        #IMPLIED
827   align       %ImgAlign;     #IMPLIED
828   border      %Length;       #IMPLIED
829   hspace      %Pixels;       #IMPLIED
830   vspace      %Pixels;       #IMPLIED
831   >
832
833 <!-- usemap points to a map element which may be in this document
834   or an external document, although the latter is not widely supported -->
835
836 <!--================== Client-side image maps ============================-->
837
838 <!-- These can be placed in the same document or grouped in a
839      separate document although this isn't yet widely supported -->
840
841 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
842 <!ATTLIST map
843   %i18n;
844   %events;
845   id          ID             #REQUIRED
846   class       CDATA          #IMPLIED
847   style       %StyleSheet;   #IMPLIED
848   title       %Text;         #IMPLIED
849   name        CDATA          #IMPLIED
850   >
851
852 <!ELEMENT area EMPTY>
853 <!ATTLIST area
854   %attrs;
855   shape       %Shape;        "rect"
856   coords      %Coords;       #IMPLIED
857   href        %URI;          #IMPLIED
858   nohref      (nohref)       #IMPLIED
859   alt         %Text;         #REQUIRED
860   tabindex    %Number;       #IMPLIED
861   accesskey   %Character;    #IMPLIED
862   onfocus     %Script;       #IMPLIED
863   onblur      %Script;       #IMPLIED
864   target      %FrameTarget;  #IMPLIED
865   >
866
867 <!--================ Forms ===============================================-->
868
869 <!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
870
871 <!ATTLIST form
872   %attrs;
873   action      %URI;          #REQUIRED
874   method      (get|post)     "get"
875   name        NMTOKEN        #IMPLIED
876   enctype     %ContentType;  "application/x-www-form-urlencoded"
877   onsubmit    %Script;       #IMPLIED
878   onreset     %Script;       #IMPLIED
879   accept      %ContentTypes; #IMPLIED
880   accept-charset %Charsets;  #IMPLIED
881   target      %FrameTarget;  #IMPLIED
882   >
883
884 <!--
885   Each label must not contain more than ONE field
886   Label elements shouldn't be nested.
887 -->
888 <!ELEMENT label %Inline;>
889 <!ATTLIST label
890   %attrs;
891   for         IDREF          #IMPLIED
892   accesskey   %Character;    #IMPLIED
893   onfocus     %Script;       #IMPLIED
894   onblur      %Script;       #IMPLIED
895   >
896
897 <!ENTITY % InputType
898   "(text | password | checkbox |
899     radio | submit | reset |
900     file | hidden | image | button)"
901    >
902
903 <!-- the name attribute is required for all but submit & reset -->
904
905 <!ELEMENT input EMPTY>     <!-- form control -->
906 <!ATTLIST input
907   %attrs;
908   type        %InputType;    "text"
909   name        CDATA          #IMPLIED
910   value       CDATA          #IMPLIED
911   checked     (checked)      #IMPLIED
912   disabled    (disabled)     #IMPLIED
913   readonly    (readonly)     #IMPLIED
914   size        CDATA          #IMPLIED
915   maxlength   %Number;       #IMPLIED
916   src         %URI;          #IMPLIED
917   alt         CDATA          #IMPLIED
918   usemap      %URI;          #IMPLIED
919   tabindex    %Number;       #IMPLIED
920   accesskey   %Character;    #IMPLIED
921   onfocus     %Script;       #IMPLIED
922   onblur      %Script;       #IMPLIED
923   onselect    %Script;       #IMPLIED
924   onchange    %Script;       #IMPLIED
925   accept      %ContentTypes; #IMPLIED
926   align       %ImgAlign;     #IMPLIED
927   >
928
929 <!ELEMENT select (optgroup|option)+>  <!-- option selector -->
930 <!ATTLIST select
931   %attrs;
932   name        CDATA          #IMPLIED
933   size        %Number;       #IMPLIED
934   multiple    (multiple)     #IMPLIED
935   disabled    (disabled)     #IMPLIED
936   tabindex    %Number;       #IMPLIED
937   onfocus     %Script;       #IMPLIED
938   onblur      %Script;       #IMPLIED
939   onchange    %Script;       #IMPLIED
940   >
941
942 <!ELEMENT optgroup (option)+>   <!-- option group -->
943 <!ATTLIST optgroup
944   %attrs;
945   disabled    (disabled)     #IMPLIED
946   label       %Text;         #REQUIRED
947   >
948
949 <!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
950 <!ATTLIST option
951   %attrs;
952   selected    (selected)     #IMPLIED
953   disabled    (disabled)     #IMPLIED
954   label       %Text;         #IMPLIED
955   value       CDATA          #IMPLIED
956   >
957
958 <!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
959 <!ATTLIST textarea
960   %attrs;
961   name        CDATA          #IMPLIED
962   rows        %Number;       #REQUIRED
963   cols        %Number;       #REQUIRED
964   disabled    (disabled)     #IMPLIED
965   readonly    (readonly)     #IMPLIED
966   tabindex    %Number;       #IMPLIED
967   accesskey   %Character;    #IMPLIED
968   onfocus     %Script;       #IMPLIED
969   onblur      %Script;       #IMPLIED
970   onselect    %Script;       #IMPLIED
971   onchange    %Script;       #IMPLIED
972   >
973
974 <!--
975   The fieldset element is used to group form fields.
976   Only one legend element should occur in the content
977   and if present should only be preceded by whitespace.
978 -->
979 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
980 <!ATTLIST fieldset
981   %attrs;
982   >
983
984 <!ENTITY % LAlign "(top|bottom|left|right)">
985
986 <!ELEMENT legend %Inline;>     <!-- fieldset label -->
987 <!ATTLIST legend
988   %attrs;
989   accesskey   %Character;    #IMPLIED
990   align       %LAlign;       #IMPLIED
991   >
992
993 <!--
994  Content is %Flow; excluding a, form, form controls, iframe
995 --> 
996 <!ELEMENT button %button.content;>  <!-- push button -->
997 <!ATTLIST button
998   %attrs;
999   name        CDATA          #IMPLIED
1000   value       CDATA          #IMPLIED
1001   type        (button|submit|reset) "submit"
1002   disabled    (disabled)     #IMPLIED
1003   tabindex    %Number;       #IMPLIED
1004   accesskey   %Character;    #IMPLIED
1005   onfocus     %Script;       #IMPLIED
1006   onblur      %Script;       #IMPLIED
1007   >
1008
1009 <!-- single-line text input control (DEPRECATED) -->
1010 <!ELEMENT isindex EMPTY>
1011 <!ATTLIST isindex
1012   %coreattrs;
1013   %i18n;
1014   prompt      %Text;         #IMPLIED
1015   >
1016
1017 <!--======================= Tables =======================================-->
1018
1019 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
1020
1021 <!--
1022  The border attribute sets the thickness of the frame around the
1023  table. The default units are screen pixels.
1024
1025  The frame attribute specifies which parts of the frame around
1026  the table should be rendered. The values are not the same as
1027  CALS to avoid a name clash with the valign attribute.
1028 -->
1029 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
1030
1031 <!--
1032  The rules attribute defines which rules to draw between cells:
1033
1034  If rules is absent then assume:
1035      "none" if border is absent or border="0" otherwise "all"
1036 -->
1037
1038 <!ENTITY % TRules "(none | groups | rows | cols | all)">
1039   
1040 <!-- horizontal placement of table relative to document -->
1041 <!ENTITY % TAlign "(left|center|right)">
1042
1043 <!-- horizontal alignment attributes for cell contents
1044
1045   char        alignment char, e.g. char=':'
1046   charoff     offset for alignment char
1047 -->
1048 <!ENTITY % cellhalign
1049   "align      (left|center|right|justify|char) #IMPLIED
1050    char       %Character;    #IMPLIED
1051    charoff    %Length;       #IMPLIED"
1052   >
1053
1054 <!-- vertical alignment attributes for cell contents -->
1055 <!ENTITY % cellvalign
1056   "valign     (top|middle|bottom|baseline) #IMPLIED"
1057   >
1058
1059 <!ELEMENT table
1060      (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
1061 <!ELEMENT caption  %Inline;>
1062 <!ELEMENT thead    (tr)+>
1063 <!ELEMENT tfoot    (tr)+>
1064 <!ELEMENT tbody    (tr)+>
1065 <!ELEMENT colgroup (col)*>
1066 <!ELEMENT col      EMPTY>
1067 <!ELEMENT tr       (th|td)+>
1068 <!ELEMENT th       %Flow;>
1069 <!ELEMENT td       %Flow;>
1070
1071 <!ATTLIST table
1072   %attrs;
1073   summary     %Text;         #IMPLIED
1074   width       %Length;       #IMPLIED
1075   border      %Pixels;       #IMPLIED
1076   frame       %TFrame;       #IMPLIED
1077   rules       %TRules;       #IMPLIED
1078   cellspacing %Length;       #IMPLIED
1079   cellpadding %Length;       #IMPLIED
1080   align       %TAlign;       #IMPLIED
1081   bgcolor     %Color;        #IMPLIED
1082   >
1083
1084 <!ENTITY % CAlign "(top|bottom|left|right)">
1085
1086 <!ATTLIST caption
1087   %attrs;
1088   align       %CAlign;       #IMPLIED
1089   >
1090
1091 <!--
1092 colgroup groups a set of col elements. It allows you to group
1093 several semantically related columns together.
1094 -->
1095 <!ATTLIST colgroup
1096   %attrs;
1097   span        %Number;       "1"
1098   width       %MultiLength;  #IMPLIED
1099   %cellhalign;
1100   %cellvalign;
1101   >
1102
1103 <!--
1104  col elements define the alignment properties for cells in
1105  one or more columns.
1106
1107  The width attribute specifies the width of the columns, e.g.
1108
1109      width=64        width in screen pixels
1110      width=0.5*      relative width of 0.5
1111
1112  The span attribute causes the attributes of one
1113  col element to apply to more than one column.
1114 -->
1115 <!ATTLIST col
1116   %attrs;
1117   span        %Number;       "1"
1118   width       %MultiLength;  #IMPLIED
1119   %cellhalign;
1120   %cellvalign;
1121   >
1122
1123 <!--
1124     Use thead to duplicate headers when breaking table
1125     across page boundaries, or for static headers when
1126     tbody sections are rendered in scrolling panel.
1127
1128     Use tfoot to duplicate footers when breaking table
1129     across page boundaries, or for static footers when
1130     tbody sections are rendered in scrolling panel.
1131
1132     Use multiple tbody sections when rules are needed
1133     between groups of table rows.
1134 -->
1135 <!ATTLIST thead
1136   %attrs;
1137   %cellhalign;
1138   %cellvalign;
1139   >
1140
1141 <!ATTLIST tfoot
1142   %attrs;
1143   %cellhalign;
1144   %cellvalign;
1145   >
1146
1147 <!ATTLIST tbody
1148   %attrs;
1149   %cellhalign;
1150   %cellvalign;
1151   >
1152
1153 <!ATTLIST tr
1154   %attrs;
1155   %cellhalign;
1156   %cellvalign;
1157   bgcolor     %Color;        #IMPLIED
1158   >
1159
1160 <!-- Scope is simpler than headers attribute for common tables -->
1161 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
1162
1163 <!-- th is for headers, td for data and for cells acting as both -->
1164
1165 <!ATTLIST th
1166   %attrs;
1167   abbr        %Text;         #IMPLIED
1168   axis        CDATA          #IMPLIED
1169   headers     IDREFS         #IMPLIED
1170   scope       %Scope;        #IMPLIED
1171   rowspan     %Number;       "1"
1172   colspan     %Number;       "1"
1173   %cellhalign;
1174   %cellvalign;
1175   nowrap      (nowrap)       #IMPLIED
1176   bgcolor     %Color;        #IMPLIED
1177   width       %Pixels;       #IMPLIED
1178   height      %Pixels;       #IMPLIED
1179   >
1180
1181 <!ATTLIST td
1182   %attrs;
1183   abbr        %Text;         #IMPLIED
1184   axis        CDATA          #IMPLIED
1185   headers     IDREFS         #IMPLIED
1186   scope       %Scope;        #IMPLIED
1187   rowspan     %Number;       "1"
1188   colspan     %Number;       "1"
1189   %cellhalign;
1190   %cellvalign;
1191   nowrap      (nowrap)       #IMPLIED
1192   bgcolor     %Color;        #IMPLIED
1193   width       %Pixels;       #IMPLIED
1194   height      %Pixels;       #IMPLIED
1195   >
1196