release
[closure-html.git] / resources / dtd / HTML-3.0
blobaa5e0773ce1a5e9a955cde864cad68401682bfed
1 <!--
2         html3.dtd
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:
18         
19                 Content-Type: text/html; version=3.0
20                 
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.
25         
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"> ] >
37         Design Objectives:
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.
84   History:
85   
86     24th March '95
87     
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
94   
95     22nd March '95
96     
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
100   
101     21st March '95
102     
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
109     17th March '95
110     
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.
121     
122     13th March '95
123     
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
130     
131     6th March '95
132     
133     Added several tags to MATH: %mathface, %mathvec
134     and improved ROOT, with new SQRT convience tag
135     
136     1st March '95
137     
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
142     
143     22nd February '95
144     
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>
150     
151     9th Feburuary '95
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"
175         -- Typical usage:
177             <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
178             <html>
179             ...
180             </html>
181         --
182         >
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
191            the above features.
192         -->
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.
204         -->
205         
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.
211         -->
213 <!--================== Imported Names =====================================-->
215 <!ENTITY % Content-Type "CDATA"
216         -- meaning a MIME content type, as per RFC1521
217         -->
219 <!ENTITY % HTTP-Method "GET | POST"
220         -- as per HTTP specification
221         -->
223 <!ENTITY % URI "CDATA"
224         -- The term URI means a CDATA attribute
225            whose value is a Uniform Resource Identifier,
226            as defined by
227         "Uniform Resource Identifiers" by Tim Berners-Lee
228         aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
229         aka RFC 1630
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.
235         -->
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:
247        
248                 "default"
249                 
250        Used to define a default link for the figure background.
252             "circle x, y, r" 
254        (x, y) define the center and r the radius.
256             "rect x, y, w, h"
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
265        inside the polygon.I
266     --
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.-->
302 <!--
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
316         
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'>
325 <!--
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">
344 %HTMLlat1;
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">
365 %HTMLicons;
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">
373 %HTMLmath;
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)+>
398 <!ATTLIST (SUB|SUP)
399         %attrs;
400         align (left|center|right) #IMPLIED
401         >
403 <!-- Forced line break -->
405 <!ELEMENT BR    - O EMPTY>
406 <!ATTLIST BR
407         %attrs;
408         %needs; -- for control of text flow --
409         >
411 <!-- Named left, center and right tab stops (independent of '\t' char) -->
413 <!ELEMENT TAB - O EMPTY>
414 <!ATTLIST TAB
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="," --
420         >
422 <!--================== Link Markup ========================================-->
424 <!--
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.
448         -->
450 <!ENTITY % linkType "NAME"
451         -- A definitive list will be specified at a later date.
453            They are used
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).
475                    
476                 e) to make a link to a separate banner, e.g. rel=banner
477                    (used only with the LINK element).
478         -->
481 <!ENTITY % linkExtraAttributes -- URN moved to %url.link --
482        "rel %linkType #IMPLIED -- forward relationship type --
483         rev %linkType #IMPLIED -- reversed relationship type
484                                   to referent data --
485         title   CDATA #IMPLIED -- advisory only --
486         methods NAMES #IMPLIED -- supported public methods of the object:
487                                         TEXTSEARCH, GET, HEAD, ... --
488         ">
490 <![ %HTML.Deprecated [
491     <!ENTITY % A.content "(%heading|%text)+">
494 <!ENTITY % A.content   "(%text)+">
496 <!ELEMENT A     - - %A.content -(A)>
498 <!ATTLIST A
499         %attrs;
500         href   %URI;  #IMPLIED
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;
505         >
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 -->
515 <!ATTLIST IMG
516         %attrs;
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 --
525         >
527 <!--=================== Paragraphs=========================================-->
529 <!ELEMENT P     - O (%text)+>
530 <!ATTLIST P
531         %attrs;
532         align  (left|center|right|justify) #IMPLIED
533         %needs; -- for control of text flow --
534         nowrap (nowrap) #IMPLIED -- disable wordwrap --
535         >
537 <!--=================== Headings, Titles, Sections ========================-->
539 <!ELEMENT HR    - O EMPTY -- customizable horizontal rule -->
540 <!ATTLIST HR
541         %attrs;
542         src     %URI;   #IMPLIED -- URI of custom rule graphic --
543         %url.link;               -- standard link attributes --
544         %needs; -- for control of text flow --
545         >
547 <!--
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 )
574         %attrs;
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 --
583         >
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
588              window title.
589           -->
591 <!--=================== Text Flows ========================================-->
593 <!ENTITY % block
594      "P | %list | DL
595         | %preformatted
596         | %blockquote
597         | FORM | ISINDEX | FN
598         | TABLE | FIG | NOTE">
600 <!--
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)>
615 <!ATTLIST PRE
616         %attrs;
617         width NUMBER #implied
618         %needs; -- for control of text flow --
619         >
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
627            standard SGML tools!
628         -->
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? -->
639 <!ATTLIST DL
640         %attrs;
641         %needs; -- for control of text flow --
642         compact (compact) #IMPLIED -- more compact style --
643         >
645 <!ELEMENT DT    - O  (%text)+>
646 <!ELEMENT DD    - O  %flow;>
647 <!ATTLIST (DT|DD)
648         %attrs;
649         %needs; -- for control of text flow --
650         >
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
661 <!ATTLIST OL
662         %attrs;
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 --
667         >
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
681 <!ATTLIST UL
682         %attrs;
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 --
690         >
692 <!ELEMENT LH - O (%text;)+ -- list header -->
693 <!ATTLIST LH %attrs;>
695 <!--
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 -->
706 <!ATTLIST LI
707         %attrs;
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 --
713         >
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)>
720     <!ATTLIST (DIR|MENU)
721         compact (compact) #IMPLIED>
724 <!--=================== Document Body =====================================-->
726 <![ %HTML.Recommended [
727         <!ENTITY % body.content "(DIV|%heading|%block|HR|ADDRESS)*"
728         -- <h1>Heading</h1>
729            <p>Text ...
730                 is preferred to
731            <h1>Heading</h1>
732            Text ...
733         -->
736 <!ENTITY % body.content "(DIV | %heading | %text | %block | HR | ADDRESS)*">
738 <!ELEMENT BODY O O  (BANNER?, BODYTEXT) +(SPOT)>
739 <!ATTLIST BODY
740         %attrs;
741         background %URI; #IMPLIED  -- texture tile for document background --
742         >
744 <!ELEMENT BODYTEXT O O %body.content -- dummy element -->
746 <!-- 
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)
762         %attrs;
763         %needs; -- for control of text flow --
764         nowrap   (nowrap)  #IMPLIED -- disable wordwrap --
765         >
767 <!ENTITY % address.content "((%text;)* | P*)">
769 <!ELEMENT ADDRESS - - %address.content>
770 <!ATTLIST ADDRESS
771         %attrs;
772         %needs; -- for control of text flow --
773         >
774         
775 <!--
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>
781 <!ATTLIST DIV
782         %attrs;
783         %needs; -- for control of text flow --
784         align   (left|center|right) left -- alignment of following text --
785         nowrap   (nowrap)  #IMPLIED -- disable wordwrap --
786         >
788 <!--================ Forms ===============================================-->
790 <!--
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)>
813 <!ATTLIST FORM
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 --
818         >
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>
829 <!ATTLIST INPUT
830         %attrs;
831         type %InputType TEXT
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
845         >
847 <!--
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.
851  -->
853 <!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT)>
854 <!ATTLIST SELECT
855         %attrs;
856         name CDATA #REQUIRED
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
866         >
868 <!ELEMENT OPTION - O (#PCDATA)>
869 <!ATTLIST OPTION
870         %attrs;
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 --
876         >
878 <!--
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.
883      
884 <!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT)>
885 <!ATTLIST TEXTAREA
886         %attrs;
887         name CDATA #REQUIRED
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
893         >
895 <!--======================= Captions ======================================-->
897 <!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
898 <!ATTLIST CAPTION
899         %attrs;
900         align (top|bottom|left|right) #IMPLIED
901         >
902 <!--======================= Tables ========================================-->
904 <!--
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">
928 <!--
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.
944     
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 -->
977 <!ATTLIST TABLE
978         %attrs;
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 --
988         >
990 <!ENTITY % cell "TH | TD">
991 <!ENTITY % horiz.align "left|center|right|justify">
992 <!ENTITY % vert.align  "top|middle|bottom|baseline">
994 <!--
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 -->
1009 <!ATTLIST TR
1010         %attrs;
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 --
1015         >
1017 <!--
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>
1026 <!ATTLIST (%cell)
1027         %attrs;
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 --
1036         >
1038 <!--====================== Figures ========================================-->
1040 <!--
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)>
1055 <!ATTLIST FIG
1056         %attrs;
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 --
1066         >
1067         
1068 <!ELEMENT FIGTEXT O O %body.content -- dummy element -->
1070 <!--
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 -->
1077 <!ATTLIST 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 --
1086         >
1088 <!ELEMENT CREDIT - - (%text;)* -- source of image -->
1089 <!ATTLIST CREDIT
1090         %attrs;
1091         >
1093 <!--======================== Notes ========================================-->
1095 <!--
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 -->
1101 <!ATTLIST NOTE
1102         %attrs;
1103         src %URI;   #IMPLIED  -- URI of custom graphic --
1104         %url.link;            -- standard link attributes --
1105         %needs; -- for control of text flow --
1106         >
1108 <!--======================== Footnotes ====================================-->
1110 <!--
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 &thinsp; &emsp; etc for greater control of spacing. -->
1121 <!-- Subscripts and Superscripts
1123   <SUB> and <SUP> are used for subscripts and superscripts.
1125                                           i j
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:
1131                                               i
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">
1151 <!USEMAP MAP1   MATH>
1152 <!USEMAP MAP2   SUP>
1153 <!USEMAP MAP3   SUB>
1154 <!USEMAP MAP4   BOX>
1156 <!SHORTREF MAP1 "^" REF1
1157                 "_" REF3
1158                 "{" REF5 >
1160 <!SHORTREF MAP2 "^" REF2
1161                 "_" REF3
1162                 "{" REF5 >
1164 <!SHORTREF MAP3 "_" REF4
1165                 "^" REF1
1166                 "{" REF5 >
1168 <!SHORTREF MAP4 "}" REF6
1169                 "^" REF1
1170                 "_" REF3
1171                 "{" REF5 >
1173 <!--
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)>
1185 <!ATTLIST MATH
1186         id      ID      #IMPLIED
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:
1197                            1 + X
1198      {1 + X<OVER>Y}  is   _______
1199                              Y
1201                                  a + b
1202      {a + b<ATOP>c - d} is  
1203                                  c - d
1205      The delimiters are represented using the LEFT and RIGHT
1206      elements as in:
1208      {[<LEFT>x + y<RIGHT>]}   is   [ x + y ]
1209      {(<LEFT>a<RIGHT>]}       is   (a]
1210      {||<LEFT>a<RIGHT>||}     is   || a ||
1212      Use &lbrace; and &rbrace; for "{" and "}" respectively as
1213      these symbols are used as shorthand for BOX, e.g.
1215      {&lbrace;<LEFT>a+b<RIGHT>&rbrace;}  is  {a+b}
1217      You can stretch definite integrals to match the integrand, e.g.
1219      {&int;<SUB>a</SUB><SUP>b</SUP><LEFT>{f(x)<over>1+x} dx}
1221             b
1222             /  f(x)
1223             | ----- dx
1224             / 1 + x
1225             a
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)*)?)>
1241 <!ATTLIST BOX
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.
1250      
1251      e.g. <above sym=ssmile>x</above>
1252      places an upwardly turning curve above the "x"
1253  -->
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.
1262  -->
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)+>
1273 <!--
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"
1292         "L"     left
1293         "C"     center
1294         "R"     right
1295         
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.
1300      
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
1309      left blank.
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)+>
1319 <!ATTLIST ARRAY
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)*>
1328 <!ATTLIST ITEM
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>
1348 <!ATTLIST LINK
1349         href %URI #REQUIRED
1350         %linkExtraAttributes; >
1351         
1352 <!ELEMENT RANGE - O EMPTY>
1353 <!ATTLIST RANGE
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 --
1358         >
1360 <!ELEMENT ISINDEX - O EMPTY>
1361 <!ATTLIST ISINDEX
1362         href   %URI  #IMPLIED -- server handling queries --
1363         prompt CDATA #IMPLIED -- prompt message -->
1365 <!--
1366     The BASE element gives the base URL for
1367     dereferencing relative URLs, e.g.
1369          <BASE href="http://foo.com/images">
1370          ...
1371          <IMG SRC="bar.gif">
1373     The image is deferenced to
1375          http://foo.com/images/bar.gif
1378 <!ELEMENT BASE - O EMPTY>
1379 <!ATTLIST BASE
1380         id   ID    #IMPLIED
1381         href %URI; #REQUIRED
1382         >
1384 <![ %HTML.Deprecated [
1385     <!ELEMENT NEXTID - O EMPTY>
1386     <!ATTLIST NEXTID N CDATA #REQUIRED>
1389 <!ELEMENT META - O EMPTY    -- Generic Metainformation -->
1390 <!ATTLIST META
1391         http-equiv  NAME    #IMPLIED  -- HTTP response header name  --
1392         name        NAME    #IMPLIED  -- metainformation name       --
1393         content     CDATA   #REQUIRED -- associated information     --
1394         >
1396 <!--
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
1400     STYLE element, e.g.
1402         <style notation=dsssl-lite>
1403            dsss-lite stuff
1404         </style>
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
1410         ...
1411     
1412     Statements in the given style notation 
1413         
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">
1421       
1422 <!NOTATION w3c-style PUBLIC "IETF/RFC nnn/W3C Style Language//EN">
1424 <!ELEMENT STYLE - O (#PCDATA)>
1425 <!ATTLIST STYLE
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 -->
1438 <!ATTLIST HTML
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 --
1442         >
1444 <!-- The END -->