4 Document Type Definition for the HyperText Markup Language (HTML DTD)
6 Draft: Fri 24-Mar-95 09:46:33
8 Author: Dave Raggett <dsr@hplb.hpl.hp.com>
10 W3O is developing a testbed browser to provide practical
11 experience with HTML 3.0 before it becomes a standard.
12 See: http://www.w3.org/hypertext/WWW/Arena/
14 This is an open process and comments are welcomed on the
15 www-html mailing list.
17 Please use the following MIME content type:
19 Content-Type: text/html; version=3.0
21 This will allow clients to distinguish HTML 3.0 from current
22 HTML documents. This is most easily achieved by saving
23 files with the extension ".html3" or ".ht3" so that servers
24 can easily distinguish these files from HTML 2.0 files.
26 The entity HTML.Recommended can be used to give a more rigorous
27 version of the DTD suitable for use with SGML authoring tools.
28 The default version of the DTD offers a laxer interpretation,
29 e.g. allowing authors to omit leading <P> elements. You can
30 switch on the more rigorous version of the DTD by including
31 the following at the start of your HTML document.
33 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"
34 [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >
39 o Backwards compatibility with 2.0
41 o Tightening up HTML.Recommended and
42 moving more things to HTML.Deprecated
44 o Keep HTML - simple don't compete with CALS
46 o Make it practical for people to edit HTML 3.0
47 documents directly, i.e. avoid long names.
49 o Tables, figures and math from HTML+
50 with tweaks based on recent experience
52 o Client-side event handling for figures
53 and graphical form selection menus
55 o Add limited presentational controls with
56 a view to use of linked style sheets
57 (style overrides are supported)
59 o Compatibility with ICADD as per Yuri's suggestions
61 HTML 3.0 relies on linked style info to give authors
62 control over the appearence of documents. Such info is
63 placed in a linked style sheet, or as overrides in the
64 HTML document head, using the STYLE element. The generic
65 CLASS attribute can be used to subclass elements when
66 you want to use a different style from normal, e.g. you
67 might use <h2 class=bigcaps> for headers with enlarged
68 capital letters. Note that the class attribute has a
69 wider scope than just style changes, e.g. browsers could
70 provide the means for searching through documents,
71 restricting search according to element class values.
73 The DTD contains a small number of attributes for direct
74 control of basic alignment parameters; column widths for
75 tables; support for custom bullets, sequence numbering for
76 lists and headers; and text flow. These attributes offer
77 control over appearence which would be inconvenient to
78 express exclusively via associated style sheets.
80 The MD attribute for each hypertext or inline link specifies a
81 message digest such as MD5 for the linked object and is needed
82 to ensure someone hasn't tampered with a linked document.
88 Changed ROLE->CLASS for HTML element
89 Added dummy elements to fix problem with mixed
90 content models for BODY, BLOCKQUOTE/BQ and FIG
91 Dropped audio fields from FORMs
92 Reinstated MIN/MAX for range fields
93 Reinstated DISABLED and ERROR attributes for fields
97 Changed from em to en units. The latter
98 is a typographical unit = half point size
99 Merged NEEDS into CLEAR for control of textflow
103 Added REL=Banner to LINK element
104 Added BANNER element in place of <DIV CLASS=BANNER>
105 Added RANGE and SPOT elements
106 Added FN in place of <NOTE ROLE=FOOTNOTE>
107 Changed ROLE->CLASS for NOTE element
111 Fixed bug in PRE content model
112 Changed external references to omit trailling //
113 Dropped <!DOCTYPE HTML [ ... ]> wrapper to avoid problems
114 with "real" sgml parsers
115 Added NOFLOW attribute to FIG and TABLE
116 Fixed typo in IMG ALIGN attribute
117 Made SELECT match IMG for graphic attributes
118 Added decimal alignment for tabs and table cells
119 Added ALIGN attribute to TEXTAREA for parity
120 with IMG and INPUT, including ALIGN=LEFT etc.
124 Dropped MARK tag on advice from SGML Open
125 Allowed spaces in table colspec attribute
126 Changed ARRAY element
127 Added CHOOSE tag to BOX element
128 Cleaned up PRE content model
129 Obsoleted tags incompatible with SGML
133 Added several tags to MATH: %mathface, %mathvec
134 and improved ROOT, with new SQRT convience tag
138 Dropped align attribute from BR element
139 Added indent attribute to TAB
140 Added optional CREDIT to end of BQ
141 Changed FIG to %body.content to allow headers
145 Added align attribute, and dropped before, after, center and right
146 attributes to clean up TAB element
147 Added INS and DEL for legal documents
148 Added CREDIT to end of FIG element
149 Dropped FN in favor of <NOTE ROLE=FootNote>
153 Dropped base attribute mechanism for scoping relative URLs
154 Dropped nofold attribute for disabling whitespace folding
155 Dropped border width attributes for FIG (-> style sheet)
156 Dropped delims attribute from math BOX element
157 Dropped stylistic attributes from OL such as inherit (-> stylesheet)
158 Added baseline to list of valign attribute values for tables.
159 Added DIV element for generic container class and static banners
160 Added MARK element for marked range class
161 Added closed set of LINK REL values for toolbars
162 Added numbering attributes to headers
163 Added bullet attributes to headers
164 Added TERM element to math for style sheet control of term rendering
165 Changed to imagemap=URI for server-side event handling for FIG/OVERLAY
166 Changed delimiter attributes for math arrays
167 Changed ROOT element for maths to allow an arbitrary radix
168 Simplified numbering attributes for ordered lists
169 Simplified STYLE element to leave binding to style language
172 <!ENTITY % HTML.Version
173 "-//IETF//DTD HTML 3.0//EN"
177 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
184 <!--================== Flags for Marked Sections ==========================-->
186 <!ENTITY % HTML.Recommended "IGNORE"
187 -- Certain features of the language are necessary for compatibility
188 with widespread usage, but they may compromise the structural
189 integrity of a document. This feature test entity enables
190 a more prescriptive document type definition that eliminates
194 <![ %HTML.Recommended [
195 <!ENTITY % HTML.Deprecated "IGNORE">
198 <!ENTITY % HTML.Deprecated "INCLUDE"
199 -- Certain features of the language are necessary for compatibility
200 with earlier versions of the specification, but they tend
201 to be used an implemented inconsistently, and their use is
202 deprecated. This feature test entity enables a document type
203 definition that eliminates these features.
206 <!ENTITY % HTML.Obsoleted "IGNORE"
207 -- The XMP, LISTING and PLAINTEXT tags are incompatible with SGML
208 and derive from very early versions of HTML. They require non-
209 standard parsers and will cause problems for processing
210 documents with standard SGML tools.
213 <!--================== Imported Names =====================================-->
215 <!ENTITY % Content-Type "CDATA"
216 -- meaning a MIME content type, as per RFC1521
219 <!ENTITY % HTTP-Method "GET | POST"
220 -- as per HTTP specification
223 <!ENTITY % URI "CDATA"
224 -- The term URI means a CDATA attribute
225 whose value is a Uniform Resource Identifier,
227 "Uniform Resource Identifiers" by Tim Berners-Lee
228 aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
231 Note that CDATA attributes are limited by the LITLEN
232 capacity (1024 in the current version of html.decl),
233 so that URIs in HTML have a bounded length.
237 <!ENTITY % REAL "CDATA" -- real numbers (not in SGML) -->
239 <!ENTITY % SHAPE "CDATA"
240 -- Shape of hotzone in image.
242 All coordinates are assumed to be numbers in the range 0 to 1
243 and interpreted as fractional width/height and measured from
244 the top left corner of the associated image.
246 The attribute value is a string taking one of the following forms:
250 Used to define a default link for the figure background.
254 (x, y) define the center and r the radius.
258 (x, y) defines upper left, and w and h the width and height.
260 "polygon x1, y1, x2, y2, ..."
262 Given n pairs of x, y coordinates, the polygon is closed by a
263 line linking the n'th point to the first. Intersecting polygons
264 use the non-zero winding number rule to determine if a point lies
269 <!-- 3.0 Parameter Entities -->
271 <!ENTITY % heading "H1|H2|H3|H4|H5|H6">
273 <![ %HTML.Obsoleted [
274 <!ENTITY % preformatted "PRE | XMP | LISTING">
278 <![ %HTML.Deprecated [
279 <!ENTITY % list "UL | OL | DIR | MENU">
280 <!ENTITY % blockquote "BLOCKQUOTE | BQ">
283 <!ENTITY % list "UL | OL">
285 <!ENTITY % blockquote "BQ">
287 <!ENTITY % preformatted "PRE">
290 <!-- The CLASS attribute is used to subclass HTML elements for
291 rendering purposes, when used with style sheets, e.g. DSSSL lite -->
293 <!ENTITY % attrs -- common attributes for elements --
294 'id ID #IMPLIED -- as target for hrefs (link ends) --
295 lang CDATA "en.us" -- ISO language, country code --
296 class NAMES #IMPLIED -- for subclassing elements --'>
298 <!-- SGML standard forces different NAMES for all attribute values
299 in the same element, regardless of the attribute name! As a result
300 CDATA is used for CLEAR attribute to avoid clash with ALIGN attribute.-->
303 When text flows around a figure or table in the margin, you sometimes want
304 to start an element like a header, paragraph or list below the figure rather
305 than alongside it. The CLEAR attribute allows you to move down unconditionally:
307 clear=left move down until left margin is clear
308 clear=right move down until right margin is clear
309 clear=all move down until both margins are clear
311 Alternatively, you can decide to place the element alongside the figure just
312 so long as there is enough room. The minimum width needed is specified as:
314 clear="40 en" move down until there is at least 40 en units free
315 clear="100 pixels" move down until there is at least 100 pixels free
317 The style sheet (or browser defaults) may provide default minimum widths for
318 each class of block-like elements.
321 <!ENTITY % needs -- Attributes for controlling text flow. Used in headers
322 and other elements to guarantee sufficient room --
323 'clear CDATA #IMPLIED'>
326 The following attribute may be included where ever a URL can be given:
328 md message digest e.g. md="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ"
329 where the digest is base64 encoded and preceded by a prefix
330 denoting the algorithm (in this case MD5).
333 <!ENTITY % url.link -- Attributes associated with URL based links --
334 "md CDATA #IMPLIED -- message digest for linked object --">
336 <!--================ Character mnemonic entities ==========================-->
338 <!-- The HTML list of Latin-1 entities includes the full range
339 of characters in widely available Latin-1 fonts, and as such
340 is a mixture of ISOlat1 and other ISO publishing symbols -->
342 <!ENTITY % HTMLlat1 PUBLIC
343 "-//IETF//ENTITIES Added Latin 1 for HTML//EN">
346 <!--================ Entities for special symbols =========================-->
348 <!ENTITY emsp SDATA "[emsp ]" -- em space -->
349 <!ENTITY ensp SDATA "[ensp ]" -- en space (1/2-em) -->
350 <!ENTITY mdash SDATA "[ndash ]" -- em dash -->
351 <!ENTITY ndash SDATA "[ndash ]" -- en dash (1/2-em) -->
352 <!ENTITY nbsp SDATA "[nbsp ]" -- non breaking space -->
353 <!ENTITY shy SDATA "[shy ]" -- soft hyphen -->
354 <!ENTITY copy SDATA "[copy ]" -- copyright sign -->
355 <!ENTITY trade SDATA "[trade ]" -- trade mark sign -->
356 <!ENTITY reg SDATA "[reg ]" -- registered sign -->
358 <!--================ Entities for standard icons ==========================-->
360 <!-- a range of standard icons such as &folder; for use
361 in speeding up display of directory listings etc. -->
363 <!ENTITY % HTMLicons PUBLIC
364 "-//IETF//ENTITIES icons for HTML//EN">
367 <!--================ Entities for math symbols ============================-->
369 <!-- ISO subset chosen for use with the widely available Adobe math font -->
371 <!ENTITY % HTMLmath PUBLIC
372 "-//IETF//ENTITIES Math and Greek for HTML//EN">
375 <!--=================== Text Markup =======================================-->
377 <!ENTITY % font " U | S | TT | I | BIG | SMALL">
379 <!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE">
381 <!ENTITY % misc "Q | LANG | AU | DFN | PERSON | ACRONYM | ABBREV | INS | DEL">
383 <!ENTITY % special "TAB | MATH | A | IMG | BR">
385 <!ENTITY % notmath "%font | %phrase | %special | %misc">
387 <!ENTITY % text "#PCDATA | SUB | SUP | B | %notmath">
390 <!ENTITY % pre.exclusion "TAB|MATH|IMG|BIG|SMALL|SUB|SUP">
392 <!ELEMENT (%font|B|%phrase|%misc) - - (%text)+>
393 <!ATTLIST (%font|B|%phrase|%misc) %attrs;>
395 <!-- Subscripts and superscripts. The ALIGN attribute is only used for math -->
397 <!ELEMENT (SUB|SUP) - - (%text)+>
400 align (left|center|right) #IMPLIED
403 <!-- Forced line break -->
405 <!ELEMENT BR - O EMPTY>
408 %needs; -- for control of text flow --
411 <!-- Named left, center and right tab stops (independent of '\t' char) -->
413 <!ELEMENT TAB - O EMPTY>
415 id ID #IMPLIED -- defines named tab stop --
416 indent NUMBER 0 -- en units before new tab stop --
417 to IDREF #IMPLIED -- jump to named tab stop --
418 align (left|center|right|decimal) left
419 dp CDATA #IMPLIED -- decimal point e.g. dp="," --
422 <!--================== Link Markup ========================================-->
425 With HTML 3.0 you can use ID attributes on most elements for named
426 link ends. The use of the NAME attribute on anchors is deprecated.
428 Do we want to support arbitrary elements for link starts? This would
429 involve adding HREF and related attributes to most elements.
432 <![ %HTML.Deprecated [
433 <!ENTITY % linkName "name CDATA #IMPLIED -- named link end --">
436 <!ENTITY % linkName "">
439 <!ENTITY % ToolBar "home|toc|index|glossary|copyright|
440 up|previous|next|help|bookmark"
442 -- LINK RELationship values which are used to create toolbar
443 buttons or menu items for navigation, where toc stands
444 for table of contents and bookmark provides for an open
445 ended set of links, i.e. you can use multiple bookmarks
446 for key entry points. Use the optional TITLE attribute
447 to override default names.
450 <!ENTITY % linkType "NAME"
451 -- A definitive list will be specified at a later date.
455 a) by stylesheets to control how collections of
456 html nodes are rendered into printed documents
458 b) for document specific toolbars/menus when used
459 with the LINK element in document head:
461 "home|toc|index|glossary|copyright|
462 up|previous|next|help|bookmark"
464 where toc stands for table of contents and
465 bookmark provides for an open ended set of links,
466 i.e. you can use several bookmarks for key entry
467 points. Use the optional TITLE attribute to
468 override default names.
470 c) for hypertext paths or guided tours,
471 with REL=NODE and REL=PATH.
473 d) to make a link to a style sheet, e.g. rel=stylesheet
474 (used only with the LINK element).
476 e) to make a link to a separate banner, e.g. rel=banner
477 (used only with the LINK element).
481 <!ENTITY % linkExtraAttributes -- URN moved to %url.link --
482 "rel %linkType #IMPLIED -- forward relationship type --
483 rev %linkType #IMPLIED -- reversed relationship type
485 title CDATA #IMPLIED -- advisory only --
486 methods NAMES #IMPLIED -- supported public methods of the object:
487 TEXTSEARCH, GET, HEAD, ... --
490 <![ %HTML.Deprecated [
491 <!ENTITY % A.content "(%heading|%text)+">
494 <!ENTITY % A.content "(%text)+">
496 <!ELEMENT A - - %A.content -(A)>
501 %url.link; -- standard link attributes --
502 %linkName; -- name attribute is deprecated; use ID instead --
503 shape %SHAPE; #IMPLIED -- for shaped hotzones in FIGs --
504 %linkExtraAttributes;
507 <!--=================== Images ============================================-->
509 <!-- Desired widths are used for negotiating image size
510 with the module responsible for painting the image.
511 align=left or right cause image to float to margin
512 and for subsequent text to wrap around image -->
514 <!ELEMENT IMG - O EMPTY -- Embedded image -->
517 src %URI; #REQUIRED -- URI of image to embed --
518 %url.link; -- standard link attributes --
519 alt CDATA #IMPLIED -- for display in place of image --
520 align (top|middle|bottom|left|right) top -- relative to baseline
521 -- width NUMBER #IMPLIED -- desired width in en's or pixels --
522 height NUMBER #IMPLIED -- desired height in en's or pixels --
523 units (en|pixels) pixels -- units for width and height --
524 ismap (ismap) #IMPLIED -- pass clicks to server --
527 <!--=================== Paragraphs=========================================-->
529 <!ELEMENT P - O (%text)+>
532 align (left|center|right|justify) #IMPLIED
533 %needs; -- for control of text flow --
534 nowrap (nowrap) #IMPLIED -- disable wordwrap --
537 <!--=================== Headings, Titles, Sections ========================-->
539 <!ELEMENT HR - O EMPTY -- customizable horizontal rule -->
542 src %URI; #IMPLIED -- URI of custom rule graphic --
543 %url.link; -- standard link attributes --
544 %needs; -- for control of text flow --
548 Headers can be numbered, although this is a matter for style sheets.
549 The style sheet controls the numbering style:
551 a) whether the parent numbering is inherited, e.g. 5.i.c
552 where 5 is the current sequence number for H1 headers, and
553 1 is the number for H2 headers and 3 for H3 headers.
555 b) what style is used for current sequence number
556 e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman
557 or a numbering scheme appropriate for the current language
559 The skip attribute is used to skip over sequence numbers for items
560 which have been left out of the list, e.g. skip=3 advances the
561 sequence number past 3 omitted items. The seqnum sets the sequence
562 number to a specified value. Note that the style sheet may take
563 advantage of the sequence number for higher level headers.
565 The dingbat or src attributes may be used to specify a bullet like
566 image to be placed adjacent to the header. Defining this in the
567 header element simplifies the document markup and avoids the need
568 to use the clear or needs attribute in the following element to
569 prevent it flowing around this image.
572 <!ELEMENT ( %heading ) - - (%text;)+>
573 <!ATTLIST ( %heading )
575 align (left|center|right|justify) #IMPLIED
576 %needs; -- for control of text flow --
577 seqnum NUMBER #IMPLIED -- starting sequence number --
578 skip NUMBER 0 -- skip seq nums for missing items --
579 dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons --
580 src (%URI;) #IMPLIED -- bullet defined by graphic --
581 %url.link; -- standard link attributes --
582 nowrap (nowrap) #IMPLIED -- disable wordwrap --
585 <!ELEMENT TITLE - - (#PCDATA)
586 -- The TITLE element is not considered part of the flow of text.
587 It should be displayed, for example as the page header or
591 <!--=================== Text Flows ========================================-->
597 | FORM | ISINDEX | FN
598 | TABLE | FIG | NOTE">
601 ((%block)* | (%text)*) would be much nicer as it would avoid the need
602 for a <P> tag when all you want is a few words of text. The problem
603 is that it also prevents: "<LI> <P>some text" since it forbids PCDATA
604 and hence the white space between the <LI> and the <P>.
607 <![ %HTML.Recommended [
608 <!ENTITY % flow "(%block)*">
611 <!ENTITY % flow "(%text | %block)*">
613 <!ELEMENT PRE - - (%text)* -(%pre.exclusion)>
617 width NUMBER #implied
618 %needs; -- for control of text flow --
621 <![ %HTML.Obsoleted [
623 <!ENTITY % literal "CDATA"
624 -- special non-conforming parsing mode where
625 the only markup signal is the end tag
626 in full. This will cause problems for
630 <!ELEMENT XMP - - %literal>
631 <!ELEMENT LISTING - - %literal>
632 <!ELEMENT PLAINTEXT - O %literal>
636 <!--=================== Lists =============================================-->
638 <!ELEMENT DL - - (LH?, (DT|DD)+) -- this is perhaps too lax? -->
641 %needs; -- for control of text flow --
642 compact (compact) #IMPLIED -- more compact style --
645 <!ELEMENT DT - O (%text)+>
646 <!ELEMENT DD - O %flow;>
649 %needs; -- for control of text flow --
653 <!ELEMENT (OL|UL) - - (LH?, LI+) -- should we allow a list header ? -->
655 <!-- style sheet controls numbering style
656 a) whether the parent numbering is inherited, e.g. 5.1.c
657 b) what style is used for current sequence number
658 e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman
659 or a numbering scheme for the current language
663 %needs; -- for control of text flow --
664 continue (continue) #IMPLIED -- don't restart sequence number --
665 seqnum NUMBER #IMPLIED -- starting sequence number --
666 compact (compact) #IMPLIED -- reduced interitem spacing --
669 <!-- Unordered lists:
671 o single or multicolumn with
672 horizontal or vertical wrapping
674 o plain or bulletted list items
676 o bullets can be customised via:
677 - entities (dingbats in HTMLicons)
678 - external graphic via URL
679 - individual attributes on LI tags
683 %needs; -- for control of text flow --
684 wrap (vert|horiz|none) none -- multicolumn list style --
685 plain (plain) #IMPLIED -- suppress bullets --
686 dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons --
687 src (%URI;) #IMPLIED -- bullet defined by graphic --
688 %url.link; -- standard link attributes --
689 compact (compact) #IMPLIED -- reduced interitem spacing --
692 <!ELEMENT LH - O (%text;)+ -- list header -->
693 <!ATTLIST LH %attrs;>
696 For unordered lists, you can override the standard bullet with
697 a custom graphic specified via a URI e.g. src="splash.gif" or
698 a reference to one of the HTMLicons graphics e.g. dingbat=folder
700 The skip attribute is used with ordered lists to skip over sequence
701 numbers for items which have been left out of the list, e.g. skip=3
702 advances the sequence number past 3 omitted items.
705 <!ELEMENT LI - O %flow; -- list item -->
708 %needs; -- for control of text flow --
709 dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons --
710 src (%URI;) #IMPLIED -- custom bullet graphic --
711 %url.link; -- standard link attributes --
712 skip NUMBER 0 -- skip seq nums for missing items --
715 <!-- DIR and MENU are now subsumed by UL with type=plain. Use the
716 wrap attribute to control wrapping style for multicolumn lists -->
718 <![ %HTML.Deprecated [
719 <!ELEMENT (DIR|MENU) - - (LI)+ -(%block)>
721 compact (compact) #IMPLIED>
724 <!--=================== Document Body =====================================-->
726 <![ %HTML.Recommended [
727 <!ENTITY % body.content "(DIV|%heading|%block|HR|ADDRESS)*"
736 <!ENTITY % body.content "(DIV | %heading | %text | %block | HR | ADDRESS)*">
738 <!ELEMENT BODY O O (BANNER?, BODYTEXT) +(SPOT)>
741 background %URI; #IMPLIED -- texture tile for document background --
744 <!ELEMENT BODYTEXT O O %body.content -- dummy element -->
747 The BANNER element is used for a banner section which appears at
748 the top of the window and doesn't scroll with window contents.
749 This can be used for corporate logos, copyright statements and
750 disclaimers, as well as customized navigation/search controls.
752 <!ELEMENT BANNER - - %body.content>
753 <!ATTLIST BANNER %attrs; >
755 <!-- SPOT is used to insert IDs at arbitrary places
756 e.g. for end points of a marked range (see RANGE) -->
757 <!ELEMENT SPOT - O EMPTY>
758 <!ATTLIST SPOT id ID #REQUIRED>
760 <!ELEMENT (%blockquote) - - (BODYTEXT, CREDIT?)>
761 <!ATTLIST (%blockquote)
763 %needs; -- for control of text flow --
764 nowrap (nowrap) #IMPLIED -- disable wordwrap --
767 <!ENTITY % address.content "((%text;)* | P*)">
769 <!ELEMENT ADDRESS - - %address.content>
772 %needs; -- for control of text flow --
776 DIV can be used with the CLASS attribute to represent different
777 kinds of container, e.g. chapter, section, abstract, appendix.
780 <!ELEMENT DIV - - %body.content>
783 %needs; -- for control of text flow --
784 align (left|center|right) left -- alignment of following text --
785 nowrap (nowrap) #IMPLIED -- disable wordwrap --
788 <!--================ Forms ===============================================-->
791 As HTML 2.0 plus a few extensions:
793 a) A RANGE control which varies between pair of values
794 specified with the size attribute, e.g. SIZE="1, 10"
796 b) FILE widget for uploading one or more files to a server
798 c) SCRIBBLE on image widget that sends the "ink" to the server
800 d) SUBMIT/RESET buttons can now be customised with an image.
801 This subsumes the IMAGE type which is now deprecated.
803 e) Graphical SELECTion menus are now supported, using
804 the new SHAPE attribute on OPTION elements.
806 Further extensions are in the pipeline (e.g. table entry,
807 multiple data formats for textarea fields and client-side
808 scripts with custom widgets) but will have to wait until
809 the backlog of implementation work diminishes.
812 <!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>
814 action %URI #REQUIRED -- server-side form handler --
815 method (%HTTP-Method) GET -- see HTTP specification --
816 enctype %Content-Type; "application/x-www-form-urlencoded"
817 script %URI #IMPLIED -- link to client-side script --
820 <![ %HTML.Deprecated [
821 <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
822 | RESET | RANGE | FILE | SCRIBBLE | HIDDEN | IMAGE)">
825 <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
826 | RESET | RANGE | FILE | SCRIBBLE | HIDDEN)">
828 <!ELEMENT INPUT - O EMPTY>
832 name NAME #IMPLIED -- required for all but submit and reset --
833 value CDATA #IMPLIED -- required for radio buttons & checkboxes --
834 disabled (disabled) #IMPLIED -- read-only fields --
835 error CDATA #IMPLIED -- why field is in error --
836 checked (checked) #IMPLIED -- for radio buttons and check boxes --
837 size NUMBER #IMPLIED -- visible width of TEXT fields --
838 maxlength NUMBER #IMPLIED -- max number of chars for TEXT fields --
839 min %REAL #IMPLIED -- lower limit for RANGE fields --
840 max %REAL #IMPLIED -- upper limit for RANGE fields --
841 accept CDATA #IMPLIED -- list of MIME types for file fields --
842 src %URI #IMPLIED -- for fields with background images --
843 %url.link; -- standard link attributes --
844 align (top|middle|bottom|left|right) top
848 SRC attribute added for graphical selection menus
849 The WIDTH, HEIGHT and UNITS attributes apply to the
850 image specified by the SRC attribute.
853 <!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT)>
857 multiple (multiple) #IMPLIED
858 disabled (disabled) #IMPLIED -- read-only menu --
859 error CDATA #IMPLIED -- why selections are in error --
860 src %URI #IMPLIED -- for graphical selection menus --
861 %url.link; -- standard link attributes --
862 width NUMBER #IMPLIED -- desired width of in en's or pixels --
863 height NUMBER #IMPLIED -- desired height in en's or pixels --
864 units (en|pixels) pixels -- units for width and height --
865 align (top|middle|bottom|left|right) top
868 <!ELEMENT OPTION - O (#PCDATA)>
871 selected (selected) #IMPLIED
872 value CDATA #IMPLIED -- default to element content --
873 shape %SHAPE; #IMPLIED -- for graphical selection menus --
874 disabled (disabled) #IMPLIED -- unselectable option --
875 error CDATA #IMPLIED -- why this choice is in error --
879 Multi-line text input field. align=left or right
880 causes the field to float to margin and for
881 subsequent text to wrap around the field.
884 <!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT)>
888 rows NUMBER #REQUIRED
889 cols NUMBER #REQUIRED
890 disabled (disabled) #IMPLIED -- read-only field --
891 error CDATA #IMPLIED -- why field is in error --
892 align (top|middle|bottom|left|right) top
895 <!--======================= Captions ======================================-->
897 <!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
900 align (top|bottom|left|right) #IMPLIED
902 <!--======================= Tables ========================================-->
905 Tables and figures can be aligned in several ways:
907 bleedleft flush left with the left (window) border
908 left flush left with the left text margin
909 center centered (text flow is disabled for this mode)
910 right flush right with the right text margin
911 bleedright flush right with the right (window) border
912 justify when applicable the table/figure should stretch
913 to fill space between the text margins
915 Note: text will flow around the table or figure if the browser
916 judges there is enough room and the alignment is not centered
917 or justified. The table or figure may itself be part of the
918 text flow around some earlier figure. You can in this case use
919 the clear or needs attributes to move the new table or figure
920 down the page beyond the obstructing earlier figure. Similarly,
921 you can use the clear or needs attributes with other elements
922 such as headers and lists to move them further down the page.
925 <!ENTITY % block.align
926 "align (bleedleft|left|center|right|bleedright|justify) center">
929 The HTML 3.0 table model has been chosen for its simplicity
930 and the ease in writing filters from common DTP packages.
932 By default the table is automatically sized according to the
933 cell contents and the current window size. Specifying the columns
934 widths using the colspec attribute allows browsers to start
935 displaying the table without having to wait for last row.
937 The colspec attribute is a list of column widths and alignment
938 specifications. The columns are listed from left to right with
939 a capital letter followed by a number, e.g. COLSPEC="L20 C8 L40".
940 The letter is L for left, C for center, R for right alignment of
941 cell contents. J is for justification, when feasible, otherwise
942 this is treated in the same way as L for left alignment.
943 Column entries are delimited by one or more space characters.
945 The number specifies the width in en's, pixels or as a
946 fractional value of the table width, as according to the
947 associated units attribute. This approach is more compact
948 than used with most SGML table models and chosen to simplify
949 hand entry. The width attribute allows you to specify the
950 width of the table in pixels, en units or as a percentage
951 of the space between the current left and right margins.
953 To assist with rendering to speech, row and column headers
954 can be given short names using the AXIS attribute. The AXES
955 attribute is used to explicitly specify the row and column
956 names for use with each cell. Otherwise browsers can follow
957 up columns and left along rows (right for some languages)
958 to find the corresponding header cells.
960 Table content model: Braille limits the width of tables,
961 placing severe limits on column widths. User agents need
962 to render big cells by moving the content to a note placed
963 before the table. The cell is then rendered as a link to
964 the corresponding note.
966 To assist with formatting tables to paged media, authors
967 can differentiate leading and trailing rows that are to
968 be duplicated when splitting tables across page boundaries.
969 The recommended way is to subclass rows with the CLASS attribute
970 For example: <TR CLASS=Header>, <TR CLASS=Footer> are used for
971 header and footer rows. Paged browsers insert footer rows at
972 the bottom of the current page and header rows at the top of
973 the new page, followed by the remaining body rows.
976 <!ELEMENT TABLE - - (CAPTION?, TR*) -- mixed headers and data -->
979 %needs; -- for control of text flow --
980 border (border) #IMPLIED -- draw borders --
981 colspec CDATA #IMPLIED -- column widths and alignment --
982 units (en|pixels|relative) en -- units for column widths --
983 dp CDATA #IMPLIED -- decimal point e.g. dp="," --
984 width NUMBER #IMPLIED -- absolute or percentage width --
985 %block.align; -- horizontal alignment --
986 noflow (noflow) #IMPLIED -- noflow around table --
987 nowrap (nowrap) #IMPLIED -- don't wrap words --
990 <!ENTITY % cell "TH | TD">
991 <!ENTITY % horiz.align "left|center|right|justify">
992 <!ENTITY % vert.align "top|middle|bottom|baseline">
995 Browsers should tolerate an omission of the first <TR>
996 tag as it is implied by the context. Missing trailing
997 <TR>s implied by rowspans should be ignored.
999 The alignment attributes act as defaults for rows
1000 overriding the colspec attribute and being in turn
1001 overridden by alignment attributes on cell elements.
1002 Use valign=baseline when you want to ensure that text
1003 in different cells on the same row is aligned on the
1004 same baseline regardless of fonts. It only applies
1005 when the cells contain a single line of text.
1008 <!ELEMENT TR - O (%cell)* -- row container -->
1011 align (%horiz.align) #IMPLIED -- horizontal alignment --
1012 valign (%vert.align) top -- vertical alignment --
1013 dp CDATA #IMPLIED -- decimal point e.g. dp="," --
1014 nowrap (nowrap) #IMPLIED -- don't wrap words --
1018 Note that table cells can include nested tables.
1019 Missing cells are considered to be empty, while
1020 missing rows should be ignored, i.e. if a cell
1021 spans a row and there are no further TR elements
1022 then the implied row should be ignored.
1025 <!ELEMENT (%cell) - O %body.content>
1028 colspan NUMBER 1 -- columns spanned --
1029 rowspan NUMBER 1 -- rows spanned --
1030 align (%horiz.align) #IMPLIED -- horizontal alignment --
1031 valign (%vert.align) top -- vertical alignment --
1032 dp CDATA #IMPLIED -- decimal point e.g. dp="," --
1033 nowrap (nowrap) #IMPLIED -- don't wrap words --
1034 axis CDATA #IMPLIED -- axis name, defaults to element content --
1035 axes CDATA #IMPLIED -- comma separated list of axis names --
1038 <!--====================== Figures ========================================-->
1041 The element contains text for use in non-graphical displays. Note that
1042 you can use the shape attribute in anchors to specify hotzones on images.
1043 This provides for local processing of pointer clicks and a unified method
1044 for dealing with graphical and non-graphical displays.
1046 Text is flowed around figures when the figure is left or right aligned.
1047 You can request the browser to move down until there is enough room for
1048 the next element, see the CLEAR and NEED attributes (in %needs)
1050 Figures offer a path towards embedding arbitrary information formats
1051 via some kind of OLE/OpenDoc mechanism.
1054 <!ELEMENT FIG - - (OVERLAY*, CAPTION?, FIGTEXT, CREDIT?) -(FIG|IMG)>
1057 %needs; -- for control of text flow --
1058 src %URI; #REQUIRED -- URI of document to embed --
1059 %url.link; -- standard link attributes --
1060 %block.align; -- horizontal alignment --
1061 noflow (noflow) #IMPLIED -- noflow around figure --
1062 width NUMBER #IMPLIED -- desired width in units --
1063 height NUMBER #IMPLIED -- desired height in units --
1064 units (en|pixels) pixels -- specifies units as en's or pixels --
1065 imagemap (%URI) #IMPLIED -- pass background clicks to server --
1068 <!ELEMENT FIGTEXT O O %body.content -- dummy element -->
1071 Figure overlays. When combined with local caching, overlays
1072 provide a cheap way of modifying a larger base image sent as
1073 part of a previous page.
1076 <!ELEMENT OVERLAY - O EMPTY -- image overlay -->
1078 src %URI; #REQUIRED -- URI of image overlay --
1079 %url.link; -- standard link attributes --
1080 units (en|pixels) pixels -- specifies units as en's or pixels --
1081 x NUMBER 0 -- offset from left in units --
1082 y NUMBER 0 -- offset from top in units --
1083 width NUMBER #IMPLIED -- desired width in units --
1084 height NUMBER #IMPLIED -- desired height in units --
1085 imagemap (%URI) #IMPLIED -- pass background clicks to server --
1088 <!ELEMENT CREDIT - - (%text;)* -- source of image -->
1093 <!--======================== Notes ========================================-->
1096 The NOTE element is used for admonishments. The CLASS attribute
1097 is used to differentiate NOTE's, e.g. Note, Caution or Warning.
1100 <!ELEMENT NOTE - - %body.content; -- admonishment -->
1103 src %URI; #IMPLIED -- URI of custom graphic --
1104 %url.link; -- standard link attributes --
1105 %needs; -- for control of text flow --
1108 <!--======================== Footnotes ====================================-->
1111 Typically rendered as popup note. These elements are referenced
1112 by hypertext links specified with the anchor element.
1114 <!ELEMENT FN - - %body.content;>
1115 <!ATTLIST FN %attrs;>
1117 <!--======================== Math ========================================-->
1119 <!-- Use     etc for greater control of spacing. -->
1121 <!-- Subscripts and Superscripts
1123 <SUB> and <SUP> are used for subscripts and superscripts.
1126 X <SUP>i</SUP>Y<SUP>j</SUP> is X Y
1128 i.e. the space following the X disambiguates the binding.
1129 The align attribute can be used for horizontal alignment,
1130 e.g. to explicitly place an index above an element:
1132 X<sup align=center>i</sup> produces X
1134 Short references are defined for superscripts, subscripts and boxes
1135 to save typing when manually editing HTML math, e.g.
1137 x^2^ is mapped to x<sup>2</sup>
1138 y_z_ is mapped to y<sub>z</sub>
1139 {a+b} is mapped to <box>a + b</box>
1141 Note that these only apply within the MATH element and can't be
1142 used in normal text!
1144 <!ENTITY REF1 STARTTAG "SUP">
1145 <!ENTITY REF2 ENDTAG "SUP">
1146 <!ENTITY REF3 STARTTAG "SUB">
1147 <!ENTITY REF4 ENDTAG "SUB">
1148 <!ENTITY REF5 STARTTAG "BOX">
1149 <!ENTITY REF6 ENDTAG "BOX">
1156 <!SHORTREF MAP1 "^" REF1
1160 <!SHORTREF MAP2 "^" REF2
1164 <!SHORTREF MAP3 "_" REF4
1168 <!SHORTREF MAP4 "}" REF6
1174 The inclusion of %math and exclusion of %notmath is used here
1175 to alter the content model for the B, SUB and SUP elements,
1176 to limit them to formulae rather than general text elements.
1179 <!ENTITY % mathvec "VEC|BAR|DOT|DDOT|HAT|TILDE" -- common accents -->
1180 <!ENTITY % mathface "B|T|BT" -- control of font face -->
1181 <!ENTITY % math "BOX|ABOVE|BELOW|%mathvec|ROOT|SQRT|ARRAY|SUB|SUP|%mathface">
1182 <!ENTITY % formula "#PCDATA|%math">
1184 <!ELEMENT MATH - - (#PCDATA)* -(%notmath) +(%math)>
1187 class NAMES #IMPLIED -- e.g. class=chem -->
1189 <!-- The BOX element acts as brackets. Delimiters are optional and
1190 stretch to match the height of the box. The OVER element is used
1191 when you want a line between numerator and denominator. This line
1192 is suppressed with the alternative ATOP element. CHOOSE acts like
1193 ATOP but adds enclosing round brackets as a convenience for binomial
1194 coefficients. Note the use of { and } as shorthand for <BOX> and
1195 </BOX> respectively:
1198 {1 + X<OVER>Y} is _______
1202 {a + b<ATOP>c - d} is
1205 The delimiters are represented using the LEFT and RIGHT
1208 {[<LEFT>x + y<RIGHT>]} is [ x + y ]
1209 {(<LEFT>a<RIGHT>]} is (a]
1210 {||<LEFT>a<RIGHT>||} is || a ||
1212 Use { and } for "{" and "}" respectively as
1213 these symbols are used as shorthand for BOX, e.g.
1215 {{<LEFT>a+b<RIGHT>}} is {a+b}
1217 You can stretch definite integrals to match the integrand, e.g.
1219 {∫<SUB>a</SUB><SUP>b</SUP><LEFT>{f(x)<over>1+x} dx}
1227 Note the complex content model for BOX is a work around
1228 for the absence of support for infix operators in SGML.
1230 You can get oversize delimiters with the SIZE attribute,
1231 for example <BOX SIZE=large>(<LEFT>...<RIGHT>)</BOX>
1233 Note that the names of common functions are recognized
1234 by the parser without the need to use "&" and ";" around
1235 them, e.g. int, sum, sin, cos, tan, ...
1238 <!ELEMENT BOX - - ((%formula)*, (LEFT, (%formula)*)?,
1239 ((OVER|ATOP|CHOOSE), (%formula)*)?,
1240 (RIGHT, (%formula)*)?)>
1242 size (normal|medium|large|huge) normal -- oversize delims -->
1244 <!ELEMENT (OVER|ATOP|CHOOSE|LEFT|RIGHT) - O EMPTY>
1246 <!-- Horizontal line drawn ABOVE contents
1247 The symbol attribute allows authors to supply
1248 an entity name for an accent, arrow symbol etc.
1249 Generalisation of LaTeX's overline command.
1251 e.g. <above sym=ssmile>x</above>
1252 places an upwardly turning curve above the "x"
1255 <!ELEMENT ABOVE - - (%formula)+>
1256 <!ATTLIST ABOVE sym ENTITY #IMPLIED>
1258 <!-- Horizontal line drawn BELOW contents
1259 The symbol attribute allows authors to
1260 supply an entity name for an arrow symbol etc.
1261 Generalisation of LaTeX's underline command.
1264 <!ELEMENT BELOW - - (%formula)+>
1265 <!ATTLIST BELOW sym ENTITY #IMPLIED>
1267 <!-- Convenience tags for common accents:
1268 vec, bar, dot, ddot, hat and tilde
1271 <!ELEMENT (%mathvec) - - (%formula)+>
1274 T and BT are used to designate terms which should
1275 be rendered in an upright font (& bold face for BT)
1278 <!ELEMENT (T|BT) - - (%formula)+>
1279 <!ATTLIST (T|BT) class NAMES #IMPLIED>
1281 <!-- Roots e.g. <ROOT>3<OF>1+x</ROOT> -->
1283 <!ELEMENT ROOT - - ((%formula)+, OF, (%formula)+)>
1284 <!ELEMENT OF - O (%formula)* -- what the root applies to -->
1286 <!ELEMENT SQRT - - (%formula)* -- square root convenience tag -->
1288 <!-- LaTeX like arrays. The COLDEF attribute specifies
1289 a single capital letter for each column determining
1290 how the column should be aligned, e.g. coldef="CCC"
1296 An optional separator letter can occur between columns
1297 and should be one of + - or =, e.g. "C+C+C+C=C".
1298 Whitespace within coldef is ignored. By default, the
1299 columns are all centered.
1301 The ALIGN attribute alters the vertical position of the
1302 array as compared with preceding and following expressions.
1304 Use LDELIM and RDELIM attributes for delimiter entities.
1305 When the LABELS attribute is present, the array is
1306 displayed with the first row and the first column as
1307 labels displaced from the other elements. In this case,
1308 the first element of the first row should normally be
1311 Use &vdots; &cdots; and &ddots; for vertical, horizontal
1312 and diagonal ellipsis dots. Use &dotfill; to fill an array
1313 cell with horizontal dots (e.g. for a full row).
1314 Note &ldots; places the dots on the baseline, while &cdots;
1315 places them higher up.
1318 <!ELEMENT ARRAY - - (ROW)+>
1320 align (top|middle|bottom) middle -- vertical alignment --
1321 coldef CDATA #IMPLIED -- column alignment and separator --
1322 ldelim CDATA #IMPLIED -- stretchy left delimiter --
1323 rdelim CDATA #IMPLIED -- stretchy right delimiter --
1324 labels (labels) #IMPLIED -- TeX's \bordermatrix style -->
1326 <!ELEMENT ROW - O (ITEM)*>
1327 <!ELEMENT ITEM - O (%formula)*>
1329 align CDATA #IMPLIED -- override coldef alignment --
1330 colspan NUMBER 1 -- merge columns as per TABLE --
1331 rowspan NUMBER 1 -- merge rows as per TABLE -->
1333 <!--================ Document Head ========================================-->
1335 <![ %HTML.Deprecated [
1336 <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
1337 & META* & LINK* & RANGE* & NEXTID?">
1340 <!ENTITY % head.nextid "">
1342 <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
1343 & META* & LINK* & RANGE*">
1345 <!ELEMENT HEAD O O (%head.content)>
1347 <!ELEMENT LINK - O EMPTY>
1350 %linkExtraAttributes; >
1352 <!ELEMENT RANGE - O EMPTY>
1354 id ID #IMPLIED -- for naming marked range --
1355 class NAMES #IMPLIED -- for subclassing --
1356 from IDREF #REQUIRED -- start of marked range --
1357 until IDREF #REQUIRED -- end of marked range --
1360 <!ELEMENT ISINDEX - O EMPTY>
1362 href %URI #IMPLIED -- server handling queries --
1363 prompt CDATA #IMPLIED -- prompt message -->
1366 The BASE element gives the base URL for
1367 dereferencing relative URLs, e.g.
1369 <BASE href="http://foo.com/images">
1373 The image is deferenced to
1375 http://foo.com/images/bar.gif
1378 <!ELEMENT BASE - O EMPTY>
1381 href %URI; #REQUIRED
1384 <![ %HTML.Deprecated [
1385 <!ELEMENT NEXTID - O EMPTY>
1386 <!ATTLIST NEXTID N CDATA #REQUIRED>
1389 <!ELEMENT META - O EMPTY -- Generic Metainformation -->
1391 http-equiv NAME #IMPLIED -- HTTP response header name --
1392 name NAME #IMPLIED -- metainformation name --
1393 content CDATA #REQUIRED -- associated information --
1397 A style sheet can be associated with the document using the
1398 LINK element, e.g. <LINK rel=style href="housestyle.dsssl">.
1399 Style overrides can be placed in the document head using the
1402 <style notation=dsssl-lite>
1406 Later on in the document you can use:
1408 <h2 class=bigcaps>Header with bigger than normal capitals</h2>
1409 <p class=abstract>A paragraph with a unique style of its own
1412 Statements in the given style notation
1414 The tag names, class and id attributes are used in the style sheet
1415 notation to describe how to render matching elements.
1418 <!ENTITY % style-notations "dsssl-lite | w3c-style">
1419 <!NOTATION dsssl-lite PUBLIC
1420 "ISO/IEC 10179:1995//NOTATION DSSSL Style Language//EN">
1422 <!NOTATION w3c-style PUBLIC "IETF/RFC nnn/W3C Style Language//EN">
1424 <!ELEMENT STYLE - O (#PCDATA)>
1426 notation NOTATION (%style-notations;) #REQUIRED
1429 <!--================ Document Structure ===================================-->
1431 <!ENTITY % html.content "HEAD, BODY">
1433 <!ELEMENT HTML O O (%html.content)>
1434 <!ENTITY % version.attr 'VERSION CDATA #FIXED "%HTML.Version;"'>
1436 <!-- suggested roles are: TOC, DOC, DOCPART, HITLIST, DIALOG -->
1439 %version.attr; -- report DTD version to application --
1440 urn CDATA #IMPLIED -- universal resource name for this document --
1441 class NAMES #IMPLIED -- role of this document, eg table of contents --