2
Extensible HTML version 1.0 Strict DTD
4
This is the same as HTML 4 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-2002 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/01 13:56:03 $
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 [RFC3066] -->
58
<!ENTITY % Character "CDATA">
59
<!-- a single character, as per section 2.2 of [XML] -->
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 % Length "CDATA">
89
<!-- nn for pixels or nn% for percentage length -->
91
<!ENTITY % MultiLength "CDATA">
92
<!-- pixel, percentage, or relative -->
94
<!ENTITY % Pixels "CDATA">
95
<!-- integer representing length in pixels -->
97
<!-- these are used for image maps -->
99
<!ENTITY % Shape "(rect|circle|poly|default)">
101
<!ENTITY % Coords "CDATA">
102
<!-- comma separated list of lengths -->
104
<!--=================== Generic Attributes ===============================-->
106
<!-- core attributes common to most elements
107
id document-wide unique id
108
class space separated list of classes
109
style associated style info
110
title advisory title/amplification
115
style %StyleSheet; #IMPLIED
116
title %Text; #IMPLIED"
119
<!-- internationalization attributes
120
lang language code (backwards compatible)
121
xml:lang language code (as per XML 1.0 spec)
122
dir direction for weak/neutral text
125
"lang %LanguageCode; #IMPLIED
126
xml:lang %LanguageCode; #IMPLIED
127
dir (ltr|rtl) #IMPLIED"
130
<!-- attributes for common UI events
131
onclick a pointer button was clicked
132
ondblclick a pointer button was double clicked
133
onmousedown a pointer button was pressed down
134
onmouseup a pointer button was released
135
onmousemove a pointer was moved onto the element
136
onmouseout a pointer was moved away from the element
137
onkeypress a key was pressed and released
138
onkeydown a key was pressed down
139
onkeyup a key was released
142
"onclick %Script; #IMPLIED
143
ondblclick %Script; #IMPLIED
144
onmousedown %Script; #IMPLIED
145
onmouseup %Script; #IMPLIED
146
onmouseover %Script; #IMPLIED
147
onmousemove %Script; #IMPLIED
148
onmouseout %Script; #IMPLIED
149
onkeypress %Script; #IMPLIED
150
onkeydown %Script; #IMPLIED
151
onkeyup %Script; #IMPLIED"
154
<!-- attributes for elements that can get the focus
155
accesskey accessibility key character
156
tabindex position in tabbing order
157
onfocus the element got the focus
158
onblur the element lost the focus
161
"accesskey %Character; #IMPLIED
162
tabindex %Number; #IMPLIED
163
onfocus %Script; #IMPLIED
164
onblur %Script; #IMPLIED"
167
<!ENTITY % attrs "%coreattrs; %i18n; %events;">
169
<!--=================== Text Elements ====================================-->
171
<!ENTITY % special.pre
172
"br | span | bdo | map">
176
"%special.pre; | object | img ">
178
<!ENTITY % fontstyle "tt | i | b | big | small ">
180
<!ENTITY % phrase "em | strong | dfn | code | q |
181
samp | kbd | var | cite | abbr | acronym | sub | sup ">
183
<!ENTITY % inline.forms "input | select | textarea | label | button">
185
<!-- these can occur at block or inline level -->
186
<!ENTITY % misc.inline "ins | del | script">
188
<!-- these can only occur at block level -->
189
<!ENTITY % misc "noscript | %misc.inline;">
191
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
193
<!-- %Inline; covers inline or "text-level" elements -->
194
<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
196
<!--================== Block level elements ==============================-->
198
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
199
<!ENTITY % lists "ul | ol | dl">
200
<!ENTITY % blocktext "pre | hr | blockquote | address">
203
"p | %heading; | div | %lists; | %blocktext; | fieldset | table">
205
<!ENTITY % Block "(%block; | form | %misc;)*">
207
<!-- %Flow; mixes block and inline and is used for list items etc. -->
208
<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
210
<!--================== Content models for exclusions =====================-->
212
<!-- a elements use %Inline; excluding a -->
215
"(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
217
<!-- pre uses %Inline excluding big, small, sup or sup -->
219
<!ENTITY % pre.content
220
"(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
223
<!-- form uses %Block; excluding form -->
225
<!ENTITY % form.content "(%block; | %misc;)*">
227
<!-- button uses %Flow; but excludes a, form and form controls -->
229
<!ENTITY % button.content
230
"(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
231
table | %special; | %fontstyle; | %phrase; | %misc;)*">
233
<!--================ Document Structure ==================================-->
235
<!-- the namespace URI designates the document profile -->
237
<!ELEMENT html (head, body)>
241
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
244
<!--================ Document Head =======================================-->
246
<!ENTITY % head.misc "(script|style|meta|link|object)*">
248
<!-- content model is %head.misc; combined with a single
249
title and an optional base element in any order -->
251
<!ELEMENT head (%head.misc;,
252
((title, %head.misc;, (base, %head.misc;)?) |
253
(base, %head.misc;, (title, %head.misc;))))>
258
profile %URI; #IMPLIED
261
<!-- The title element is not considered part of the flow of text.
262
It should be displayed, for example as the page header or
263
window title. Exactly one title is required per document.
265
<!ELEMENT title (#PCDATA)>
271
<!-- document base URI -->
273
<!ELEMENT base EMPTY>
279
<!-- generic metainformation -->
280
<!ELEMENT meta EMPTY>
284
http-equiv CDATA #IMPLIED
286
content CDATA #REQUIRED
287
scheme CDATA #IMPLIED
291
Relationship values can be used in principle:
293
a) for document specific toolbars/menus when used
294
with the link element in document head e.g.
295
start, contents, previous, next, index, end, help
296
b) to link to a separate style sheet (rel="stylesheet")
297
c) to make a link to a script (rel="script")
298
d) by stylesheets to control how collections of
299
html nodes are rendered into printed documents
300
e) to make a link to a printable version of this document
301
e.g. a PostScript or PDF version (rel="alternate" media="print")
304
<!ELEMENT link EMPTY>
307
charset %Charset; #IMPLIED
309
hreflang %LanguageCode; #IMPLIED
310
type %ContentType; #IMPLIED
311
rel %LinkTypes; #IMPLIED
312
rev %LinkTypes; #IMPLIED
313
media %MediaDesc; #IMPLIED
316
<!-- style info, which may include CDATA sections -->
317
<!ELEMENT style (#PCDATA)>
321
type %ContentType; #REQUIRED
322
media %MediaDesc; #IMPLIED
323
title %Text; #IMPLIED
324
xml:space (preserve) #FIXED 'preserve'
327
<!-- script statements, which may include CDATA sections -->
328
<!ELEMENT script (#PCDATA)>
331
charset %Charset; #IMPLIED
332
type %ContentType; #REQUIRED
334
defer (defer) #IMPLIED
335
xml:space (preserve) #FIXED 'preserve'
338
<!-- alternate content container for non script-based rendering -->
340
<!ELEMENT noscript %Block;>
345
<!--=================== Document Body ====================================-->
347
<!ELEMENT body %Block;>
350
onload %Script; #IMPLIED
351
onunload %Script; #IMPLIED
354
<!ELEMENT div %Flow;> <!-- generic language/style container -->
359
<!--=================== Paragraphs =======================================-->
361
<!ELEMENT p %Inline;>
366
<!--=================== Headings =========================================-->
369
There are six levels of headings from h1 (the most important)
370
to h6 (the least important).
373
<!ELEMENT h1 %Inline;>
378
<!ELEMENT h2 %Inline;>
383
<!ELEMENT h3 %Inline;>
388
<!ELEMENT h4 %Inline;>
393
<!ELEMENT h5 %Inline;>
398
<!ELEMENT h6 %Inline;>
403
<!--=================== Lists ============================================-->
405
<!-- Unordered list -->
412
<!-- Ordered (numbered) list -->
426
<!-- definition lists - dt for term, dd for its definition -->
428
<!ELEMENT dl (dt|dd)+>
433
<!ELEMENT dt %Inline;>
443
<!--=================== Address ==========================================-->
445
<!-- information on author -->
447
<!ELEMENT address %Inline;>
452
<!--=================== Horizontal Rule ==================================-->
459
<!--=================== Preformatted Text ================================-->
461
<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
463
<!ELEMENT pre %pre.content;>
466
xml:space (preserve) #FIXED 'preserve'
469
<!--=================== Block-like Quotes ================================-->
471
<!ELEMENT blockquote %Block;>
477
<!--=================== Inserted/Deleted Text ============================-->
480
ins/del are allowed in block and inline content, but its
481
inappropriate to include block content within an ins element
482
occurring in inline content.
484
<!ELEMENT ins %Flow;>
488
datetime %Datetime; #IMPLIED
491
<!ELEMENT del %Flow;>
495
datetime %Datetime; #IMPLIED
498
<!--================== The Anchor Element ================================-->
500
<!-- content is %Inline; except that anchors shouldn't be nested -->
502
<!ELEMENT a %a.content;>
506
charset %Charset; #IMPLIED
507
type %ContentType; #IMPLIED
508
name NMTOKEN #IMPLIED
510
hreflang %LanguageCode; #IMPLIED
511
rel %LinkTypes; #IMPLIED
512
rev %LinkTypes; #IMPLIED
514
coords %Coords; #IMPLIED
517
<!--===================== Inline Elements ================================-->
519
<!ELEMENT span %Inline;> <!-- generic language/style container -->
524
<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
528
lang %LanguageCode; #IMPLIED
529
xml:lang %LanguageCode; #IMPLIED
530
dir (ltr|rtl) #REQUIRED
533
<!ELEMENT br EMPTY> <!-- forced line break -->
538
<!ELEMENT em %Inline;> <!-- emphasis -->
539
<!ATTLIST em %attrs;>
541
<!ELEMENT strong %Inline;> <!-- strong emphasis -->
542
<!ATTLIST strong %attrs;>
544
<!ELEMENT dfn %Inline;> <!-- definitional -->
545
<!ATTLIST dfn %attrs;>
547
<!ELEMENT code %Inline;> <!-- program code -->
548
<!ATTLIST code %attrs;>
550
<!ELEMENT samp %Inline;> <!-- sample -->
551
<!ATTLIST samp %attrs;>
553
<!ELEMENT kbd %Inline;> <!-- something user would type -->
554
<!ATTLIST kbd %attrs;>
556
<!ELEMENT var %Inline;> <!-- variable -->
557
<!ATTLIST var %attrs;>
559
<!ELEMENT cite %Inline;> <!-- citation -->
560
<!ATTLIST cite %attrs;>
562
<!ELEMENT abbr %Inline;> <!-- abbreviation -->
563
<!ATTLIST abbr %attrs;>
565
<!ELEMENT acronym %Inline;> <!-- acronym -->
566
<!ATTLIST acronym %attrs;>
568
<!ELEMENT q %Inline;> <!-- inlined quote -->
574
<!ELEMENT sub %Inline;> <!-- subscript -->
575
<!ATTLIST sub %attrs;>
577
<!ELEMENT sup %Inline;> <!-- superscript -->
578
<!ATTLIST sup %attrs;>
580
<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
581
<!ATTLIST tt %attrs;>
583
<!ELEMENT i %Inline;> <!-- italic font -->
586
<!ELEMENT b %Inline;> <!-- bold font -->
589
<!ELEMENT big %Inline;> <!-- bigger font -->
590
<!ATTLIST big %attrs;>
592
<!ELEMENT small %Inline;> <!-- smaller font -->
593
<!ATTLIST small %attrs;>
595
<!--==================== Object ======================================-->
597
object is used to embed objects as part of HTML pages.
598
param elements should precede other content. Parameters
599
can also be expressed as attribute/value pairs on the
600
object element itself when brevity is desired.
603
<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
606
declare (declare) #IMPLIED
607
classid %URI; #IMPLIED
608
codebase %URI; #IMPLIED
610
type %ContentType; #IMPLIED
611
codetype %ContentType; #IMPLIED
612
archive %UriList; #IMPLIED
613
standby %Text; #IMPLIED
614
height %Length; #IMPLIED
615
width %Length; #IMPLIED
616
usemap %URI; #IMPLIED
617
name NMTOKEN #IMPLIED
618
tabindex %Number; #IMPLIED
622
param is used to supply a named property value.
623
In XML it would seem natural to follow RDF and support an
624
abbreviated syntax where the param elements are replaced
625
by attribute value pairs on the object start tag.
627
<!ELEMENT param EMPTY>
632
valuetype (data|ref|object) "data"
633
type %ContentType; #IMPLIED
636
<!--=================== Images ===========================================-->
639
To avoid accessibility problems for people who aren't
640
able to see the image, you should provide a text
641
description using the alt and longdesc attributes.
642
In addition, avoid the use of server-side image maps.
643
Note that in this DTD there is no name attribute. That
644
is only available in the transitional and frameset DTD.
652
longdesc %URI; #IMPLIED
653
height %Length; #IMPLIED
654
width %Length; #IMPLIED
655
usemap %URI; #IMPLIED
656
ismap (ismap) #IMPLIED
659
<!-- usemap points to a map element which may be in this document
660
or an external document, although the latter is not widely supported -->
662
<!--================== Client-side image maps ============================-->
664
<!-- These can be placed in the same document or grouped in a
665
separate document although this isn't yet widely supported -->
667
<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
673
style %StyleSheet; #IMPLIED
674
title %Text; #IMPLIED
675
name NMTOKEN #IMPLIED
678
<!ELEMENT area EMPTY>
683
coords %Coords; #IMPLIED
685
nohref (nohref) #IMPLIED
689
<!--================ Forms ===============================================-->
690
<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
694
action %URI; #REQUIRED
695
method (get|post) "get"
696
enctype %ContentType; "application/x-www-form-urlencoded"
697
onsubmit %Script; #IMPLIED
698
onreset %Script; #IMPLIED
699
accept %ContentTypes; #IMPLIED
700
accept-charset %Charsets; #IMPLIED
704
Each label must not contain more than ONE field
705
Label elements shouldn't be nested.
707
<!ELEMENT label %Inline;>
711
accesskey %Character; #IMPLIED
712
onfocus %Script; #IMPLIED
713
onblur %Script; #IMPLIED
717
"(text | password | checkbox |
718
radio | submit | reset |
719
file | hidden | image | button)"
722
<!-- the name attribute is required for all but submit & reset -->
724
<!ELEMENT input EMPTY> <!-- form control -->
728
type %InputType; "text"
731
checked (checked) #IMPLIED
732
disabled (disabled) #IMPLIED
733
readonly (readonly) #IMPLIED
735
maxlength %Number; #IMPLIED
738
usemap %URI; #IMPLIED
739
onselect %Script; #IMPLIED
740
onchange %Script; #IMPLIED
741
accept %ContentTypes; #IMPLIED
744
<!ELEMENT select (optgroup|option)+> <!-- option selector -->
748
size %Number; #IMPLIED
749
multiple (multiple) #IMPLIED
750
disabled (disabled) #IMPLIED
751
tabindex %Number; #IMPLIED
752
onfocus %Script; #IMPLIED
753
onblur %Script; #IMPLIED
754
onchange %Script; #IMPLIED
757
<!ELEMENT optgroup (option)+> <!-- option group -->
760
disabled (disabled) #IMPLIED
761
label %Text; #REQUIRED
764
<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
767
selected (selected) #IMPLIED
768
disabled (disabled) #IMPLIED
769
label %Text; #IMPLIED
773
<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
778
rows %Number; #REQUIRED
779
cols %Number; #REQUIRED
780
disabled (disabled) #IMPLIED
781
readonly (readonly) #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 -->
811
type (button|submit|reset) "submit"
812
disabled (disabled) #IMPLIED
815
<!--======================= Tables =======================================-->
817
<!-- Derived from IETF HTML table standard, see [RFC1942] -->
820
The border attribute sets the thickness of the frame around the
821
table. The default units are screen pixels.
823
The frame attribute specifies which parts of the frame around
824
the table should be rendered. The values are not the same as
825
CALS to avoid a name clash with the valign attribute.
827
<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
830
The rules attribute defines which rules to draw between cells:
832
If rules is absent then assume:
833
"none" if border is absent or border="0" otherwise "all"
836
<!ENTITY % TRules "(none | groups | rows | cols | all)">
838
<!-- horizontal alignment attributes for cell contents
840
char alignment char, e.g. char=':'
841
charoff offset for alignment char
843
<!ENTITY % cellhalign
844
"align (left|center|right|justify|char) #IMPLIED
845
char %Character; #IMPLIED
846
charoff %Length; #IMPLIED"
849
<!-- vertical alignment attributes for cell contents -->
850
<!ENTITY % cellvalign
851
"valign (top|middle|bottom|baseline) #IMPLIED"
855
(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
856
<!ELEMENT caption %Inline;>
857
<!ELEMENT thead (tr)+>
858
<!ELEMENT tfoot (tr)+>
859
<!ELEMENT tbody (tr)+>
860
<!ELEMENT colgroup (col)*>
862
<!ELEMENT tr (th|td)+>
868
summary %Text; #IMPLIED
869
width %Length; #IMPLIED
870
border %Pixels; #IMPLIED
871
frame %TFrame; #IMPLIED
872
rules %TRules; #IMPLIED
873
cellspacing %Length; #IMPLIED
874
cellpadding %Length; #IMPLIED
882
colgroup groups a set of col elements. It allows you to group
883
several semantically related columns together.
888
width %MultiLength; #IMPLIED
894
col elements define the alignment properties for cells in
897
The width attribute specifies the width of the columns, e.g.
899
width=64 width in screen pixels
900
width=0.5* relative width of 0.5
902
The span attribute causes the attributes of one
903
col element to apply to more than one column.
908
width %MultiLength; #IMPLIED
914
Use thead to duplicate headers when breaking table
915
across page boundaries, or for static headers when
916
tbody sections are rendered in scrolling panel.
918
Use tfoot to duplicate footers when breaking table
919
across page boundaries, or for static footers when
920
tbody sections are rendered in scrolling panel.
922
Use multiple tbody sections when rules are needed
923
between groups of table rows.
950
<!-- Scope is simpler than headers attribute for common tables -->
951
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
953
<!-- th is for headers, td for data and for cells acting as both -->
959
headers IDREFS #IMPLIED
960
scope %Scope; #IMPLIED
971
headers IDREFS #IMPLIED
972
scope %Scope; #IMPLIED