2 Extensible HTML version 1.0 Strict DTD
4 This is the same as HTML 4.0 Strict except for
5 changes due to the differences between XML and SGML.
7 Namespace = http://www.w3.org/1999/xhtml
9 For further information, see: http://www.w3.org/TR/xhtml1
11 Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
14 This DTD module is identified by the PUBLIC and SYSTEM identifiers:
16 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
17 SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
20 $Date: 2002-08-25 10:21:59 $
24 <!--================ Character mnemonic entities =========================-->
26 <!ENTITY % HTMLlat1 PUBLIC
27 "-//W3C//ENTITIES Latin 1 for XHTML//EN"
31 <!ENTITY % HTMLsymbol PUBLIC
32 "-//W3C//ENTITIES Symbols for XHTML//EN"
36 <!ENTITY % HTMLspecial PUBLIC
37 "-//W3C//ENTITIES Special for XHTML//EN"
41 <!--================== Imported Names ====================================-->
43 <!ENTITY % ContentType "CDATA">
44 <!-- media type, as per [RFC2045] -->
46 <!ENTITY % ContentTypes "CDATA">
47 <!-- comma-separated list of media types, as per [RFC2045] -->
49 <!ENTITY % Charset "CDATA">
50 <!-- a character encoding, as per [RFC2045] -->
52 <!ENTITY % Charsets "CDATA">
53 <!-- a space separated list of character encodings, as per [RFC2045] -->
55 <!ENTITY % LanguageCode "NMTOKEN">
56 <!-- a language code, as per [RFC1766] -->
58 <!ENTITY % Character "CDATA">
59 <!-- a single character from [ISO10646] -->
61 <!ENTITY % Number "CDATA">
62 <!-- one or more digits -->
64 <!ENTITY % LinkTypes "CDATA">
65 <!-- space-separated list of link types -->
67 <!ENTITY % MediaDesc "CDATA">
68 <!-- single or comma-separated list of media descriptors -->
70 <!ENTITY % URI "CDATA">
71 <!-- a Uniform Resource Identifier, see [RFC2396] -->
73 <!ENTITY % UriList "CDATA">
74 <!-- a space separated list of Uniform Resource Identifiers -->
76 <!ENTITY % Datetime "CDATA">
77 <!-- date and time information. ISO date format -->
79 <!ENTITY % Script "CDATA">
80 <!-- script expression -->
82 <!ENTITY % StyleSheet "CDATA">
83 <!-- style sheet data -->
85 <!ENTITY % Text "CDATA">
86 <!-- used for titles etc. -->
88 <!ENTITY % FrameTarget "NMTOKEN">
89 <!-- render in this frame -->
91 <!ENTITY % Length "CDATA">
92 <!-- nn for pixels or nn% for percentage length -->
94 <!ENTITY % MultiLength "CDATA">
95 <!-- pixel, percentage, or relative -->
97 <!ENTITY % MultiLengths "CDATA">
98 <!-- comma-separated list of MultiLength -->
100 <!ENTITY % Pixels "CDATA">
101 <!-- integer representing length in pixels -->
103 <!-- these are used for image maps -->
105 <!ENTITY % Shape "(rect|circle|poly|default)">
107 <!ENTITY % Coords "CDATA">
108 <!-- comma separated list of lengths -->
110 <!--=================== Generic Attributes ===============================-->
112 <!-- core attributes common to most elements
113 id document-wide unique id
114 class space separated list of classes
115 style associated style info
116 title advisory title/amplification
121 style %StyleSheet; #IMPLIED
122 title %Text; #IMPLIED"
125 <!-- internationalization attributes
126 lang language code (backwards compatible)
127 xml:lang language code (as per XML 1.0 spec)
128 dir direction for weak/neutral text
131 "lang %LanguageCode; #IMPLIED
132 xml:lang %LanguageCode; #IMPLIED
133 dir (ltr|rtl) #IMPLIED"
136 <!-- attributes for common UI events
137 onclick a pointer button was clicked
138 ondblclick a pointer button was double clicked
139 onmousedown a pointer button was pressed down
140 onmouseup a pointer button was released
141 onmousemove a pointer was moved onto the element
142 onmouseout a pointer was moved away from the element
143 onkeypress a key was pressed and released
144 onkeydown a key was pressed down
145 onkeyup a key was released
148 "onclick %Script; #IMPLIED
149 ondblclick %Script; #IMPLIED
150 onmousedown %Script; #IMPLIED
151 onmouseup %Script; #IMPLIED
152 onmouseover %Script; #IMPLIED
153 onmousemove %Script; #IMPLIED
154 onmouseout %Script; #IMPLIED
155 onkeypress %Script; #IMPLIED
156 onkeydown %Script; #IMPLIED
157 onkeyup %Script; #IMPLIED"
160 <!-- attributes for elements that can get the focus
161 accesskey accessibility key character
162 tabindex position in tabbing order
163 onfocus the element got the focus
164 onblur the element lost the focus
167 "accesskey %Character; #IMPLIED
168 tabindex %Number; #IMPLIED
169 onfocus %Script; #IMPLIED
170 onblur %Script; #IMPLIED"
173 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
175 <!--=================== Text Elements ====================================-->
178 "br | span | bdo | object | img | map">
180 <!ENTITY % fontstyle "tt | i | b | big | small">
182 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
183 samp | kbd | var | cite | abbr | acronym">
185 <!ENTITY % inline.forms "input | select | textarea | label | button">
187 <!-- these can occur at block or inline level -->
188 <!ENTITY % misc "ins | del | script | noscript">
190 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
192 <!-- %Inline; covers inline or "text-level" elements -->
193 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
195 <!--================== Block level elements ==============================-->
197 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
198 <!ENTITY % lists "ul | ol | dl">
199 <!ENTITY % blocktext "pre | hr | blockquote | address">
202 "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
204 <!ENTITY % Block "(%block; | form | %misc;)*">
206 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
207 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
209 <!--================== Content models for exclusions =====================-->
211 <!-- a elements use %Inline; excluding a -->
214 "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
216 <!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
218 <!ENTITY % pre.content
219 "(#PCDATA | a | br | span | bdo | map | tt | i | b |
220 %phrase; | %inline.forms;)*">
222 <!-- form uses %Block; excluding form -->
224 <!ENTITY % form.content "(%block; | %misc;)*">
226 <!-- button uses %Flow; but excludes a, form and form controls -->
228 <!ENTITY % button.content
229 "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
230 table | %special; | %fontstyle; | %phrase; | %misc;)*">
232 <!--================ Document Structure ==================================-->
234 <!-- the namespace URI designates the document profile -->
236 <!ELEMENT html (head, body)>
239 xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
242 <!--================ Document Head =======================================-->
244 <!ENTITY % head.misc "(script|style|meta|link|object)*">
246 <!-- content model is %head.misc; combined with a single
247 title and an optional base element in any order -->
249 <!ELEMENT head (%head.misc;,
250 ((title, %head.misc;, (base, %head.misc;)?) |
251 (base, %head.misc;, (title, %head.misc;))))>
255 profile %URI; #IMPLIED
258 <!-- The title element is not considered part of the flow of text.
259 It should be displayed, for example as the page header or
260 window title. Exactly one title is required per document.
262 <!ELEMENT title (#PCDATA)>
263 <!ATTLIST title %i18n;>
265 <!-- document base URI -->
267 <!ELEMENT base EMPTY>
272 <!-- generic metainformation -->
273 <!ELEMENT meta EMPTY>
276 http-equiv CDATA #IMPLIED
278 content CDATA #REQUIRED
279 scheme CDATA #IMPLIED
283 Relationship values can be used in principle:
285 a) for document specific toolbars/menus when used
286 with the link element in document head e.g.
287 start, contents, previous, next, index, end, help
288 b) to link to a separate style sheet (rel="stylesheet")
289 c) to make a link to a script (rel="script")
290 d) by stylesheets to control how collections of
291 html nodes are rendered into printed documents
292 e) to make a link to a printable version of this document
293 e.g. a PostScript or PDF version (rel="alternate" media="print")
296 <!ELEMENT link EMPTY>
299 charset %Charset; #IMPLIED
301 hreflang %LanguageCode; #IMPLIED
302 type %ContentType; #IMPLIED
303 rel %LinkTypes; #IMPLIED
304 rev %LinkTypes; #IMPLIED
305 media %MediaDesc; #IMPLIED
308 <!-- style info, which may include CDATA sections -->
309 <!ELEMENT style (#PCDATA)>
312 type %ContentType; #REQUIRED
313 media %MediaDesc; #IMPLIED
314 title %Text; #IMPLIED
315 xml:space (preserve) #FIXED 'preserve'
318 <!-- script statements, which may include CDATA sections -->
319 <!ELEMENT script (#PCDATA)>
321 charset %Charset; #IMPLIED
322 type %ContentType; #REQUIRED
324 defer (defer) #IMPLIED
325 xml:space (preserve) #FIXED 'preserve'
328 <!-- alternate content container for non script-based rendering -->
330 <!ELEMENT noscript %Block;>
335 <!--=================== Document Body ====================================-->
337 <!ELEMENT body %Block;>
340 onload %Script; #IMPLIED
341 onunload %Script; #IMPLIED
344 <!ELEMENT div %Flow;> <!-- generic language/style container -->
349 <!--=================== Paragraphs =======================================-->
351 <!ELEMENT p %Inline;>
356 <!--=================== Headings =========================================-->
359 There are six levels of headings from h1 (the most important)
360 to h6 (the least important).
363 <!ELEMENT h1 %Inline;>
368 <!ELEMENT h2 %Inline;>
373 <!ELEMENT h3 %Inline;>
378 <!ELEMENT h4 %Inline;>
383 <!ELEMENT h5 %Inline;>
388 <!ELEMENT h6 %Inline;>
393 <!--=================== Lists ============================================-->
395 <!-- Unordered list -->
402 <!-- Ordered (numbered) list -->
416 <!-- definition lists - dt for term, dd for its definition -->
418 <!ELEMENT dl (dt|dd)+>
423 <!ELEMENT dt %Inline;>
433 <!--=================== Address ==========================================-->
435 <!-- information on author -->
437 <!ELEMENT address %Inline;>
442 <!--=================== Horizontal Rule ==================================-->
449 <!--=================== Preformatted Text ================================-->
451 <!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
453 <!ELEMENT pre %pre.content;>
456 xml:space (preserve) #FIXED 'preserve'
459 <!--=================== Block-like Quotes ================================-->
461 <!ELEMENT blockquote %Block;>
467 <!--=================== Inserted/Deleted Text ============================-->
470 ins/del are allowed in block and inline content, but its
471 inappropriate to include block content within an ins element
472 occurring in inline content.
474 <!ELEMENT ins %Flow;>
478 datetime %Datetime; #IMPLIED
481 <!ELEMENT del %Flow;>
485 datetime %Datetime; #IMPLIED
488 <!--================== The Anchor Element ================================-->
490 <!-- content is %Inline; except that anchors shouldn't be nested -->
492 <!ELEMENT a %a.content;>
495 charset %Charset; #IMPLIED
496 type %ContentType; #IMPLIED
497 name NMTOKEN #IMPLIED
499 hreflang %LanguageCode; #IMPLIED
500 rel %LinkTypes; #IMPLIED
501 rev %LinkTypes; #IMPLIED
502 accesskey %Character; #IMPLIED
504 coords %Coords; #IMPLIED
505 tabindex %Number; #IMPLIED
506 onfocus %Script; #IMPLIED
507 onblur %Script; #IMPLIED
510 <!--===================== Inline Elements ================================-->
512 <!ELEMENT span %Inline;> <!-- generic language/style container -->
517 <!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
521 lang %LanguageCode; #IMPLIED
522 xml:lang %LanguageCode; #IMPLIED
523 dir (ltr|rtl) #REQUIRED
526 <!ELEMENT br EMPTY> <!-- forced line break -->
531 <!ELEMENT em %Inline;> <!-- emphasis -->
532 <!ATTLIST em %attrs;>
534 <!ELEMENT strong %Inline;> <!-- strong emphasis -->
535 <!ATTLIST strong %attrs;>
537 <!ELEMENT dfn %Inline;> <!-- definitional -->
538 <!ATTLIST dfn %attrs;>
540 <!ELEMENT code %Inline;> <!-- program code -->
541 <!ATTLIST code %attrs;>
543 <!ELEMENT samp %Inline;> <!-- sample -->
544 <!ATTLIST samp %attrs;>
546 <!ELEMENT kbd %Inline;> <!-- something user would type -->
547 <!ATTLIST kbd %attrs;>
549 <!ELEMENT var %Inline;> <!-- variable -->
550 <!ATTLIST var %attrs;>
552 <!ELEMENT cite %Inline;> <!-- citation -->
553 <!ATTLIST cite %attrs;>
555 <!ELEMENT abbr %Inline;> <!-- abbreviation -->
556 <!ATTLIST abbr %attrs;>
558 <!ELEMENT acronym %Inline;> <!-- acronym -->
559 <!ATTLIST acronym %attrs;>
561 <!ELEMENT q %Inline;> <!-- inlined quote -->
567 <!ELEMENT sub %Inline;> <!-- subscript -->
568 <!ATTLIST sub %attrs;>
570 <!ELEMENT sup %Inline;> <!-- superscript -->
571 <!ATTLIST sup %attrs;>
573 <!ELEMENT tt %Inline;> <!-- fixed pitch font -->
574 <!ATTLIST tt %attrs;>
576 <!ELEMENT i %Inline;> <!-- italic font -->
579 <!ELEMENT b %Inline;> <!-- bold font -->
582 <!ELEMENT big %Inline;> <!-- bigger font -->
583 <!ATTLIST big %attrs;>
585 <!ELEMENT small %Inline;> <!-- smaller font -->
586 <!ATTLIST small %attrs;>
588 <!--==================== Object ======================================-->
590 object is used to embed objects as part of HTML pages.
591 param elements should precede other content. Parameters
592 can also be expressed as attribute/value pairs on the
593 object element itself when brevity is desired.
596 <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
599 declare (declare) #IMPLIED
600 classid %URI; #IMPLIED
601 codebase %URI; #IMPLIED
603 type %ContentType; #IMPLIED
604 codetype %ContentType; #IMPLIED
605 archive %UriList; #IMPLIED
606 standby %Text; #IMPLIED
607 height %Length; #IMPLIED
608 width %Length; #IMPLIED
609 usemap %URI; #IMPLIED
610 name NMTOKEN #IMPLIED
611 tabindex %Number; #IMPLIED
615 param is used to supply a named property value.
616 In XML it would seem natural to follow RDF and support an
617 abbreviated syntax where the param elements are replaced
618 by attribute value pairs on the object start tag.
620 <!ELEMENT param EMPTY>
625 valuetype (data|ref|object) "data"
626 type %ContentType; #IMPLIED
629 <!--=================== Images ===========================================-->
632 To avoid accessibility problems for people who aren't
633 able to see the image, you should provide a text
634 description using the alt and longdesc attributes.
635 In addition, avoid the use of server-side image maps.
636 Note that in this DTD there is no name attribute. That
637 is only available in the transitional and frameset DTD.
645 longdesc %URI; #IMPLIED
646 height %Length; #IMPLIED
647 width %Length; #IMPLIED
648 usemap %URI; #IMPLIED
649 ismap (ismap) #IMPLIED
652 <!-- usemap points to a map element which may be in this document
653 or an external document, although the latter is not widely supported -->
655 <!--================== Client-side image maps ============================-->
657 <!-- These can be placed in the same document or grouped in a
658 separate document although this isn't yet widely supported -->
660 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
666 style %StyleSheet; #IMPLIED
667 title %Text; #IMPLIED
668 name NMTOKEN #IMPLIED
671 <!ELEMENT area EMPTY>
675 coords %Coords; #IMPLIED
677 nohref (nohref) #IMPLIED
679 tabindex %Number; #IMPLIED
680 accesskey %Character; #IMPLIED
681 onfocus %Script; #IMPLIED
682 onblur %Script; #IMPLIED
685 <!--================ Forms ===============================================-->
686 <!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
690 action %URI; #REQUIRED
691 method (get|post) "get"
692 enctype %ContentType; "application/x-www-form-urlencoded"
693 onsubmit %Script; #IMPLIED
694 onreset %Script; #IMPLIED
695 accept %ContentTypes; #IMPLIED
696 accept-charset %Charsets; #IMPLIED
700 Each label must not contain more than ONE field
701 Label elements shouldn't be nested.
703 <!ELEMENT label %Inline;>
707 accesskey %Character; #IMPLIED
708 onfocus %Script; #IMPLIED
709 onblur %Script; #IMPLIED
713 "(text | password | checkbox |
714 radio | submit | reset |
715 file | hidden | image | button)"
718 <!-- the name attribute is required for all but submit & reset -->
720 <!ELEMENT input EMPTY> <!-- form control -->
723 type %InputType; "text"
726 checked (checked) #IMPLIED
727 disabled (disabled) #IMPLIED
728 readonly (readonly) #IMPLIED
730 maxlength %Number; #IMPLIED
733 usemap %URI; #IMPLIED
734 tabindex %Number; #IMPLIED
735 accesskey %Character; #IMPLIED
736 onfocus %Script; #IMPLIED
737 onblur %Script; #IMPLIED
738 onselect %Script; #IMPLIED
739 onchange %Script; #IMPLIED
740 accept %ContentTypes; #IMPLIED
743 <!ELEMENT select (optgroup|option)+> <!-- option selector -->
747 size %Number; #IMPLIED
748 multiple (multiple) #IMPLIED
749 disabled (disabled) #IMPLIED
750 tabindex %Number; #IMPLIED
751 onfocus %Script; #IMPLIED
752 onblur %Script; #IMPLIED
753 onchange %Script; #IMPLIED
756 <!ELEMENT optgroup (option)+> <!-- option group -->
759 disabled (disabled) #IMPLIED
760 label %Text; #REQUIRED
763 <!ELEMENT option (#PCDATA)> <!-- selectable choice -->
766 selected (selected) #IMPLIED
767 disabled (disabled) #IMPLIED
768 label %Text; #IMPLIED
772 <!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
776 rows %Number; #REQUIRED
777 cols %Number; #REQUIRED
778 disabled (disabled) #IMPLIED
779 readonly (readonly) #IMPLIED
780 tabindex %Number; #IMPLIED
781 accesskey %Character; #IMPLIED
782 onfocus %Script; #IMPLIED
783 onblur %Script; #IMPLIED
784 onselect %Script; #IMPLIED
785 onchange %Script; #IMPLIED
789 The fieldset element is used to group form fields.
790 Only one legend element should occur in the content
791 and if present should only be preceded by whitespace.
793 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
798 <!ELEMENT legend %Inline;> <!-- fieldset label -->
801 accesskey %Character; #IMPLIED
805 Content is %Flow; excluding a, form and form controls
807 <!ELEMENT button %button.content;> <!-- push button -->
812 type (button|submit|reset) "submit"
813 disabled (disabled) #IMPLIED
814 tabindex %Number; #IMPLIED
815 accesskey %Character; #IMPLIED
816 onfocus %Script; #IMPLIED
817 onblur %Script; #IMPLIED
820 <!--======================= Tables =======================================-->
822 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
825 The border attribute sets the thickness of the frame around the
826 table. The default units are screen pixels.
828 The frame attribute specifies which parts of the frame around
829 the table should be rendered. The values are not the same as
830 CALS to avoid a name clash with the valign attribute.
832 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
835 The rules attribute defines which rules to draw between cells:
837 If rules is absent then assume:
838 "none" if border is absent or border="0" otherwise "all"
841 <!ENTITY % TRules "(none | groups | rows | cols | all)">
843 <!-- horizontal placement of table relative to document -->
844 <!ENTITY % TAlign "(left|center|right)">
846 <!-- horizontal alignment attributes for cell contents
848 char alignment char, e.g. char=':'
849 charoff offset for alignment char
851 <!ENTITY % cellhalign
852 "align (left|center|right|justify|char) #IMPLIED
853 char %Character; #IMPLIED
854 charoff %Length; #IMPLIED"
857 <!-- vertical alignment attributes for cell contents -->
858 <!ENTITY % cellvalign
859 "valign (top|middle|bottom|baseline) #IMPLIED"
863 (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
864 <!ELEMENT caption %Inline;>
865 <!ELEMENT thead (tr)+>
866 <!ELEMENT tfoot (tr)+>
867 <!ELEMENT tbody (tr)+>
868 <!ELEMENT colgroup (col)*>
870 <!ELEMENT tr (th|td)+>
876 summary %Text; #IMPLIED
877 width %Length; #IMPLIED
878 border %Pixels; #IMPLIED
879 frame %TFrame; #IMPLIED
880 rules %TRules; #IMPLIED
881 cellspacing %Length; #IMPLIED
882 cellpadding %Length; #IMPLIED
885 <!ENTITY % CAlign "(top|bottom|left|right)">
892 colgroup groups a set of col elements. It allows you to group
893 several semantically related columns together.
898 width %MultiLength; #IMPLIED
904 col elements define the alignment properties for cells in
907 The width attribute specifies the width of the columns, e.g.
909 width=64 width in screen pixels
910 width=0.5* relative width of 0.5
912 The span attribute causes the attributes of one
913 col element to apply to more than one column.
918 width %MultiLength; #IMPLIED
924 Use thead to duplicate headers when breaking table
925 across page boundaries, or for static headers when
926 tbody sections are rendered in scrolling panel.
928 Use tfoot to duplicate footers when breaking table
929 across page boundaries, or for static footers when
930 tbody sections are rendered in scrolling panel.
932 Use multiple tbody sections when rules are needed
933 between groups of table rows.
960 <!-- Scope is simpler than headers attribute for common tables -->
961 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
963 <!-- th is for headers, td for data and for cells acting as both -->
969 headers IDREFS #IMPLIED
970 scope %Scope; #IMPLIED
981 headers IDREFS #IMPLIED
982 scope %Scope; #IMPLIED