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: 2000/01/26 14:08:56 $
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