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-1999 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"
22 <!--================ Character mnemonic entities =========================-->
24 <!ENTITY % HTMLlat1 PUBLIC
25 "-//W3C//ENTITIES Latin 1 for XHTML//EN"
29 <!ENTITY % HTMLsymbol PUBLIC
30 "-//W3C//ENTITIES Symbols for XHTML//EN"
34 <!ENTITY % HTMLspecial PUBLIC
35 "-//W3C//ENTITIES Special for XHTML//EN"
39 <!--================== Imported Names ====================================-->
41 <!ENTITY % ContentType "CDATA">
42 <!-- media type, as per [RFC2045] -->
44 <!ENTITY % ContentTypes "CDATA">
45 <!-- comma-separated list of media types, as per [RFC2045] -->
47 <!ENTITY % Charset "CDATA">
48 <!-- a character encoding, as per [RFC2045] -->
50 <!ENTITY % Charsets "CDATA">
51 <!-- a space separated list of character encodings, as per [RFC2045] -->
53 <!ENTITY % LanguageCode "NMTOKEN">
54 <!-- a language code, as per [RFC1766] -->
56 <!ENTITY % Character "CDATA">
57 <!-- a single character from [ISO10646] -->
59 <!ENTITY % Number "CDATA">
60 <!-- one or more digits -->
62 <!ENTITY % LinkTypes "CDATA">
63 <!-- space-separated list of link types -->
65 <!ENTITY % MediaDesc "CDATA">
66 <!-- single or comma-separated list of media descriptors -->
68 <!ENTITY % URI "CDATA">
69 <!-- a Uniform Resource Identifier, see [RFC2396] -->
71 <!ENTITY % UriList "CDATA">
72 <!-- a space separated list of Uniform Resource Identifiers -->
74 <!ENTITY % Datetime "CDATA">
75 <!-- date and time information. ISO date format -->
77 <!ENTITY % Script "CDATA">
78 <!-- script expression -->
80 <!ENTITY % StyleSheet "CDATA">
81 <!-- style sheet data -->
83 <!ENTITY % Text "CDATA">
84 <!-- used for titles etc. -->
86 <!ENTITY % FrameTarget "NMTOKEN">
87 <!-- render in this frame -->
89 <!ENTITY % Length "CDATA">
90 <!-- nn for pixels or nn% for percentage length -->
92 <!ENTITY % MultiLength "CDATA">
93 <!-- pixel, percentage, or relative -->
95 <!ENTITY % MultiLengths "CDATA">
96 <!-- comma-separated list of MultiLength -->
98 <!ENTITY % Pixels "CDATA">
99 <!-- integer representing length in pixels -->
101 <!-- these are used for image maps -->
103 <!ENTITY % Shape "(rect|circle|poly|default)">
105 <!ENTITY % Coords "CDATA">
106 <!-- comma separated list of lengths -->
108 <!--=================== Generic Attributes ===============================-->
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
119 style %StyleSheet; #IMPLIED
120 title %Text; #IMPLIED"
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
129 "lang %LanguageCode; #IMPLIED
130 xml:lang %LanguageCode; #IMPLIED
131 dir (ltr|rtl) #IMPLIED"
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
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"
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
165 "accesskey %Character; #IMPLIED
166 tabindex %Number; #IMPLIED
167 onfocus %Script; #IMPLIED
168 onblur %Script; #IMPLIED"
171 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
173 <!--=================== Text Elements ====================================-->
176 "br | span | bdo | object | img | map">
178 <!ENTITY % fontstyle "tt | i | b | big | small">
180 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
181 samp | kbd | var | cite | abbr | acronym">
183 <!ENTITY % inline.forms "input | select | textarea | label | button">
185 <!-- these can occur at block or inline level -->
186 <!ENTITY % misc "ins | del | script | noscript">
188 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
190 <!-- %Inline; covers inline or "text-level" elements -->
191 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
193 <!--================== Block level elements ==============================-->
195 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
196 <!ENTITY % lists "ul | ol | dl">
197 <!ENTITY % blocktext "pre | hr | blockquote | address">
200 "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
202 <!ENTITY % Block "(%block; | form | %misc;)*">
204 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
205 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
207 <!--================== Content models for exclusions =====================-->
209 <!-- a elements use %Inline; excluding a -->
212 "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
214 <!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
216 <!ENTITY % pre.content
217 "(#PCDATA | a | br | span | bdo | map | tt | i | b |
218 %phrase; | %inline.forms;)*">
220 <!-- form uses %Block; excluding form -->
222 <!ENTITY % form.content "(%block; | %misc;)*">
224 <!-- button uses %Flow; but excludes a, form and form controls -->
226 <!ENTITY % button.content
227 "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
228 table | %special; | %fontstyle; | %phrase; | %misc;)*">
230 <!--================ Document Structure ==================================-->
232 <!-- the namespace URI designates the document profile -->
234 <!ELEMENT html (head, body)>
237 xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
240 <!--================ Document Head =======================================-->
242 <!ENTITY % head.misc "(script|style|meta|link|object)*">
244 <!-- content model is %head.misc; combined with a single
245 title and an optional base element in any order -->
247 <!ELEMENT head (%head.misc;,
248 ((title, %head.misc;, (base, %head.misc;)?) |
249 (base, %head.misc;, (title, %head.misc;))))>
253 profile %URI; #IMPLIED
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.
260 <!ELEMENT title (#PCDATA)>
261 <!ATTLIST title %i18n;>
263 <!-- document base URI -->
265 <!ELEMENT base EMPTY>
270 <!-- generic metainformation -->
271 <!ELEMENT meta EMPTY>
274 http-equiv CDATA #IMPLIED
276 content CDATA #REQUIRED
277 scheme CDATA #IMPLIED
281 Relationship values can be used in principle:
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")
294 <!ELEMENT link EMPTY>
297 charset %Charset; #IMPLIED
299 hreflang %LanguageCode; #IMPLIED
300 type %ContentType; #IMPLIED
301 rel %LinkTypes; #IMPLIED
302 rev %LinkTypes; #IMPLIED
303 media %MediaDesc; #IMPLIED
306 <!-- style info, which may include CDATA sections -->
307 <!ELEMENT style (#PCDATA)>
310 type %ContentType; #REQUIRED
311 media %MediaDesc; #IMPLIED
312 title %Text; #IMPLIED
313 xml:space (preserve) #FIXED 'preserve'
316 <!-- script statements, which may include CDATA sections -->
317 <!ELEMENT script (#PCDATA)>
319 charset %Charset; #IMPLIED
320 type %ContentType; #REQUIRED
322 defer (defer) #IMPLIED
323 xml:space (preserve) #FIXED 'preserve'
326 <!-- alternate content container for non script-based rendering -->
328 <!ELEMENT noscript %Block;>
333 <!--=================== Document Body ====================================-->
335 <!ELEMENT body %Block;>
338 onload %Script; #IMPLIED
339 onunload %Script; #IMPLIED
342 <!ELEMENT div %Flow;> <!-- generic language/style container -->
347 <!--=================== Paragraphs =======================================-->
349 <!ELEMENT p %Inline;>
354 <!--=================== Headings =========================================-->
357 There are six levels of headings from h1 (the most important)
358 to h6 (the least important).
361 <!ELEMENT h1 %Inline;>
366 <!ELEMENT h2 %Inline;>
371 <!ELEMENT h3 %Inline;>
376 <!ELEMENT h4 %Inline;>
381 <!ELEMENT h5 %Inline;>
386 <!ELEMENT h6 %Inline;>
391 <!--=================== Lists ============================================-->
393 <!-- Unordered list -->
400 <!-- Ordered (numbered) list -->
414 <!-- definition lists - dt for term, dd for its definition -->
416 <!ELEMENT dl (dt|dd)+>
421 <!ELEMENT dt %Inline;>
431 <!--=================== Address ==========================================-->
433 <!-- information on author -->
435 <!ELEMENT address %Inline;>
440 <!--=================== Horizontal Rule ==================================-->
447 <!--=================== Preformatted Text ================================-->
449 <!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
451 <!ELEMENT pre %pre.content;>
454 xml:space (preserve) #FIXED 'preserve'
457 <!--=================== Block-like Quotes ================================-->
459 <!ELEMENT blockquote %Block;>
465 <!--=================== Inserted/Deleted Text ============================-->
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.
472 <!ELEMENT ins %Flow;>
476 datetime %Datetime; #IMPLIED
479 <!ELEMENT del %Flow;>
483 datetime %Datetime; #IMPLIED
486 <!--================== The Anchor Element ================================-->
488 <!-- content is %Inline; except that anchors shouldn't be nested -->
490 <!ELEMENT a %a.content;>
493 charset %Charset; #IMPLIED
494 type %ContentType; #IMPLIED
495 name NMTOKEN #IMPLIED
497 hreflang %LanguageCode; #IMPLIED
498 rel %LinkTypes; #IMPLIED
499 rev %LinkTypes; #IMPLIED
500 accesskey %Character; #IMPLIED
502 coords %Coords; #IMPLIED
503 tabindex %Number; #IMPLIED
504 onfocus %Script; #IMPLIED
505 onblur %Script; #IMPLIED
508 <!--===================== Inline Elements ================================-->
510 <!ELEMENT span %Inline;> <!-- generic language/style container -->
515 <!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
519 lang %LanguageCode; #IMPLIED
520 xml:lang %LanguageCode; #IMPLIED
521 dir (ltr|rtl) #REQUIRED
524 <!ELEMENT br EMPTY> <!-- forced line break -->
529 <!ELEMENT em %Inline;> <!-- emphasis -->
530 <!ATTLIST em %attrs;>
532 <!ELEMENT strong %Inline;> <!-- strong emphasis -->
533 <!ATTLIST strong %attrs;>
535 <!ELEMENT dfn %Inline;> <!-- definitional -->
536 <!ATTLIST dfn %attrs;>
538 <!ELEMENT code %Inline;> <!-- program code -->
539 <!ATTLIST code %attrs;>
541 <!ELEMENT samp %Inline;> <!-- sample -->
542 <!ATTLIST samp %attrs;>
544 <!ELEMENT kbd %Inline;> <!-- something user would type -->
545 <!ATTLIST kbd %attrs;>
547 <!ELEMENT var %Inline;> <!-- variable -->
548 <!ATTLIST var %attrs;>
550 <!ELEMENT cite %Inline;> <!-- citation -->
551 <!ATTLIST cite %attrs;>
553 <!ELEMENT abbr %Inline;> <!-- abbreviation -->
554 <!ATTLIST abbr %attrs;>
556 <!ELEMENT acronym %Inline;> <!-- acronym -->
557 <!ATTLIST acronym %attrs;>
559 <!ELEMENT q %Inline;> <!-- inlined quote -->
565 <!ELEMENT sub %Inline;> <!-- subscript -->
566 <!ATTLIST sub %attrs;>
568 <!ELEMENT sup %Inline;> <!-- superscript -->
569 <!ATTLIST sup %attrs;>
571 <!ELEMENT tt %Inline;> <!-- fixed pitch font -->
572 <!ATTLIST tt %attrs;>
574 <!ELEMENT i %Inline;> <!-- italic font -->
577 <!ELEMENT b %Inline;> <!-- bold font -->
580 <!ELEMENT big %Inline;> <!-- bigger font -->
581 <!ATTLIST big %attrs;>
583 <!ELEMENT small %Inline;> <!-- smaller font -->
584 <!ATTLIST small %attrs;>
586 <!--==================== Object ======================================-->
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.
594 <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
597 declare (declare) #IMPLIED
598 classid %URI; #IMPLIED
599 codebase %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
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.
618 <!ELEMENT param EMPTY>
623 valuetype (data|ref|object) "data"
624 type %ContentType; #IMPLIED
627 <!--=================== Images ===========================================-->
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.
643 longdesc %URI; #IMPLIED
644 height %Length; #IMPLIED
645 width %Length; #IMPLIED
646 usemap %URI; #IMPLIED
647 ismap (ismap) #IMPLIED
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 -->
653 <!--================== Client-side image maps ============================-->
655 <!-- These can be placed in the same document or grouped in a
656 separate document although this isn't yet widely supported -->
658 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
664 style %StyleSheet; #IMPLIED
665 title %Text; #IMPLIED
666 name NMTOKEN #IMPLIED
669 <!ELEMENT area EMPTY>
673 coords %Coords; #IMPLIED
675 nohref (nohref) #IMPLIED
677 tabindex %Number; #IMPLIED
678 accesskey %Character; #IMPLIED
679 onfocus %Script; #IMPLIED
680 onblur %Script; #IMPLIED
683 <!--================ Forms ===============================================-->
684 <!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
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
698 Each label must not contain more than ONE field
699 Label elements shouldn't be nested.
701 <!ELEMENT label %Inline;>
705 accesskey %Character; #IMPLIED
706 onfocus %Script; #IMPLIED
707 onblur %Script; #IMPLIED
711 "(text | password | checkbox |
712 radio | submit | reset |
713 file | hidden | image | button)"
716 <!-- the name attribute is required for all but submit & reset -->
718 <!ELEMENT input EMPTY> <!-- form control -->
721 type %InputType; "text"
724 checked (checked) #IMPLIED
725 disabled (disabled) #IMPLIED
726 readonly (readonly) #IMPLIED
728 maxlength %Number; #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
741 <!ELEMENT select (optgroup|option)+> <!-- option selector -->
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
754 <!ELEMENT optgroup (option)+> <!-- option group -->
757 disabled (disabled) #IMPLIED
758 label %Text; #REQUIRED
761 <!ELEMENT option (#PCDATA)> <!-- selectable choice -->
764 selected (selected) #IMPLIED
765 disabled (disabled) #IMPLIED
766 label %Text; #IMPLIED
770 <!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
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
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.
791 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
796 <!ELEMENT legend %Inline;> <!-- fieldset label -->
799 accesskey %Character; #IMPLIED
803 Content is %Flow; excluding a, form and form controls
805 <!ELEMENT button %button.content;> <!-- push button -->
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
818 <!--======================= Tables =======================================-->
820 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
823 The border attribute sets the thickness of the frame around the
824 table. The default units are screen pixels.
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.
830 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
833 The rules attribute defines which rules to draw between cells:
835 If rules is absent then assume:
836 "none" if border is absent or border="0" otherwise "all"
839 <!ENTITY % TRules "(none | groups | rows | cols | all)">
841 <!-- horizontal placement of table relative to document -->
842 <!ENTITY % TAlign "(left|center|right)">
844 <!-- horizontal alignment attributes for cell contents
846 char alignment char, e.g. char=':'
847 charoff offset for alignment char
849 <!ENTITY % cellhalign
850 "align (left|center|right|justify|char) #IMPLIED
851 char %Character; #IMPLIED
852 charoff %Length; #IMPLIED"
855 <!-- vertical alignment attributes for cell contents -->
856 <!ENTITY % cellvalign
857 "valign (top|middle|bottom|baseline) #IMPLIED"
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)*>
868 <!ELEMENT tr (th|td)+>
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
883 <!ENTITY % CAlign "(top|bottom|left|right)">
890 colgroup groups a set of col elements. It allows you to group
891 several semantically related columns together.
896 width %MultiLength; #IMPLIED
902 col elements define the alignment properties for cells in
905 The width attribute specifies the width of the columns, e.g.
907 width=64 width in screen pixels
908 width=0.5* relative width of 0.5
910 The span attribute causes the attributes of one
911 col element to apply to more than one column.
916 width %MultiLength; #IMPLIED
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.
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.
930 Use multiple tbody sections when rules are needed
931 between groups of table rows.
958 <!-- Scope is simpler than headers attribute for common tables -->
959 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
961 <!-- th is for headers, td for data and for cells acting as both -->
967 headers IDREFS #IMPLIED
968 scope %Scope; #IMPLIED
979 headers IDREFS #IMPLIED
980 scope %Scope; #IMPLIED