/[pub]/test/html.dtd
Suika

Diff of /test/html.dtd

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by connolly, Thu Dec 3 02:04:29 1992 UTC revision 1.9 by connolly, Thu Apr 14 01:23:26 1994 UTC
# Line 1  Line 1 
1  <!SGML  "ISO 8879:1986"  <!--    html.dtd
2  --  
3          Document Type Definition for the HyperText Markup Language          Document Type Definition for the HyperText Markup Language
4          as used by the World Wide Web application (HTML DTD).          as used by the World Wide Web application (HTML DTD).
5    
6          NOTE: This is a definition of HTML with respect to          $Id$
         SGML, and assumes an understaning of SGML terms.  
   
         For a description of HTML in layman's terms, see  
   
         "HTML: A Representation for Nodes in the World Wide Web"  
                 by Dan Connolly.  
   
         aka  
   
         http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html  
                 by <connolly@convex.com>  
 --  
   
 CHARSET  
          BASESET  "ISO 646:1983//CHARSET  
                    International Reference Version (IRV)//ESC 2/5 4/0"  
          DESCSET  0   9   UNUSED  
                   9   2   9  
                   11  2   UNUSED  
                   13  1   13  
                   14  18  UNUSED  
                   32  95  32  
                   127 1   UNUSED  
   
 CAPACITY        SGMLREF  
                 TOTALCAP        150000  
                 GRPCAP          150000  
     
 SCOPE    DOCUMENT  
 SYNTAX    
          SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  
                            19 20 21 22 23 24 25 26 27 28 29 30 31 127 255  
          BASESET  "ISO 646:1983//CHARSET  
                    International Reference Version (IRV)//ESC 2/5 4/0"  
          DESCSET  0 128 0  
          FUNCTION RE          13  
                   RS          10  
                   SPACE       32  
                   TAB SEPCHAR  9  
          NAMING   LCNMSTRT ""  
                   UCNMSTRT ""  
                   LCNMCHAR ".-"  
                   UCNMCHAR ".-"  
                   NAMECASE GENERAL YES  
                            ENTITY  NO  
          DELIM    GENERAL  SGMLREF  
                   SHORTREF SGMLREF  
          NAMES    SGMLREF  
          QUANTITY SGMLREF  
                   NAMELEN  34  
                   TAGLVL   100  
                   LITLEN   1024  
                   GRPGTCNT 150  
                   GRPCNT   64                    
   
 FEATURES  
   MINIMIZE  
     DATATAG  NO  
     OMITTAG  YES  
     RANK     NO  
     SHORTTAG NO  
   LINK  
     SIMPLE   NO  
     IMPLICIT NO  
     EXPLICIT NO  
   OTHER  
     CONCUR   NO  
     SUBDOC   NO  
     FORMAL   NO  
   APPINFO    NONE  
 >  
   
 <!DOCTYPE HTML [  
 <!--  
  $Id$  
7  -->  -->
8    
9  <!--    Regarding clause 6.1, SGML Document:  <!-- Feature Test Entities -->
10    
11          [1] SGML document = SGML document entity,  <!-- To use these, write your document like:
12              (SGML subdocument entity |          <!DOCTYPE HTML [
13              SGML text entity | non-SGML data entity)*          <!ENTITY % HTML.Optional "INCLUDE">
14            <!ENTITY % html PUBLIC "-//connolly hal.com//DTD WWW HTML 1.8//EN">
15            %html;
16            ]>
17            <TITLE>Here's my doc</TITLE>
18            <p>It uses lots of optional features
19    
20     In practice, if you're using sgmls to validate your docs,
21     you can stick the <!DOCTYPE [...]> in a separate file and
22     validate with:
23            sgmls -s doctype.sgml foo.html
24     -->
25    
26    <!ENTITY % HTML.Minimal  "IGNORE">
27    <!ENTITY % HTML.Obsolete "IGNORE">
28    
29    <![ %HTML.Minimal [
30            <!ENTITY % HTML.linkRelationships "IGNORE">
31            <!ENTITY % HTML.linkMethods "IGNORE">
32            <!ENTITY % HTML.linkRedundantInfo "IGNORE">
33            <!ENTITY % HTML.forms "IGNORE">
34            <!-- @@ nested lists -->
35            <!-- @@ phrases -->
36            ]]>
37            
38    <![ %HTML.Obsolete [
39            <!ENTITY % HTML.PLAINTEXT "INCLUDE">
40            <!ENTITY % HTML.titleCDATA "INCLUDE">
41            <!ENTITY % HTML.litCDATA "INCLUDE">
42            <!ENTITY % HTML.font-phrase "INCLUDE">
43            <!ENTITY % HTML.anchorNameCDATA "INCLUDE">
44            <!ENTITY % HTML.pSeparator "INCLUDE">
45            ]]>
46    
47    <!ENTITY % HTML.GO "IGNORE"
48            -- The GO element used in ORA GNN. What is this??? -->
49    
50    <!ENTITY % HTML.aEndOmissable "IGNORE"
51            -- infer </A> tags, as in ORA GNN stuff -->
52    
53    <!ENTITY % HTML.isindexAtEnd "IGNORE"
54            -- allow ISINDEX after HEAD and BODY, as in ORA GNN stuff -->
55    
56    <!ENTITY % HTML.pSeparator "IGNORE"
57            -- use P element as paragraph separator, rather that container.
58            This means not all paragraphs need to start with a <P> tag.
59            -->
60    
61          The role of SGML document entity is filled by this DTD,  <!ENTITY % HTML.linkRelationships "INCLUDE"
62          followed by the conventional HTML data stream.          -- Adding markup to links to show the relationship between
63  -->          ends of a link
64            see http://info.cern.ch/hypertext/WWW/MarkUp/Relationships.html
65            -->
66    
67  <!ENTITY % heading "H1|H2|H3|H4|H5|H6" >  <!ENTITY % HTML.linkMethods "INCLUDE"
68  <!ENTITY % list "UL|OL|DIR|MENU">          -- Adding markup to links to show the methods supported
69  <!ENTITY % literal "XMP|LISTING">          by the referent object
70            see http://info.cern.ch/hypertext/WWW/MarkUp/Elements/A.html
71            -->
72    
73  <!ENTITY % headelement  <!ENTITY % HTML.linkRedundantInfo "INCLUDE"
74           "TITLE | NEXTID | ISINDEX" >          -- Adding markup to links to give redundant information
75            like URN, content type, title...
76            -->
77    
78  <!ENTITY % bodyelement  <!ENTITY % HTML.anchorNameCDATA "IGNORE"
79           "P | A | %heading | %list | DL | ADDRESS | PRE | %literal">          -- Anchor names should be distinct. SGML parser can validate
80            this if the NAME attribute of the A element is declared as ID.
81            But that restricts the syntax of an anchor name to an SGML name,
82            i.e. a letter followed by letters, numbers, periods and dashes,
83            up to NAMELEN (34) characters long.
84            -->
85    
86  <!ENTITY % anyelement "HEAD | %headelement; | BODY | %bodyelement;">  <!ENTITY % HTML.PLAINTEXT "IGNORE"
87            -- Support for the <PLAINTEXT> tag as a sign of the
88            end of th HTML data stream and the beginning of a stream
89            of text/plain data
90            -->
91    
92  <!ELEMENT HTML O O  ((%anyelement|#PCDATA)*, PLAINTEXT?)>  <!ENTITY % HTML.titleCDATA "IGNORE"
93            -- Is the TITLE element #PCDATA, RCDATA, or CDATA content?
94            On Mosaic, it's #PCDATA, but in the linemode browser,
95            it's more like CDATA, but not quite.
96            -->
97    
98  <!ELEMENT HEAD - -  (TITLE? & ISINDEX? & NEXTID?)>  <!ENTITY % HTML.NEXTID "INCLUDE"
99            -- Used by the NeXT implementation to keep track of the
100            next anchor id to use
101            -->
102    
103  <!ELEMENT BODY - -  (%bodyelement|#PCDATA)*>  <!ENTITY % HTML.font-phrase "IGNORE"
104            -- allow B, I, TT, U outside PRE,
105            CITE, VAR, etc. inside PRE
106            -->
107    
108  <!ELEMENT TITLE - -  CDATA  <!ENTITY % HTML.litCDATA "IGNORE"
109            -- The TITLE element is not considered part of the flow of text.          -- treat XMP, LISTING as CDATA, as per linemodeWWW
110               It should be displayed, for example as the page header or          -->
111               window title.  
112            -->  <!ENTITY % HTML.forms "INCLUDE"
113            -- Support for forms as per
114    http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html
115            -->
116    
117    <!-- DTD definitions -->
118    
119    <!ENTITY % heading "H1|H2|H3|H4|H5|H6" >
120    <!ENTITY % list " UL | OL | DIR | MENU ">
121    <!ENTITY % literal " XMP | LISTING ">
122    
123    <!ENTITY % URI "CDATA"
124            -- The term URI means a CDATA attribute
125               whose value is a Uniform Resource Identifier,
126               as defined by
127            "Universal Resource Identifiers" by Tim Berners-Lee
128            aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
129    
130            Note that CDATA attributes are limited by the LITLEN
131            capacity (1024 in the current version of html.decl),
132            so that URIs in HTML have a bounded length.
133            -->
134    
135    <!ENTITY % Content-Type "CDATA"
136            -- meaning a MIME content type, as per RFC1341 or any of its updates.
137            -->
138    
139    <![ %HTML.anchorNameCDATA [ <!ENTITY % anchor-name "CDATA"> ]]>
140    <!ENTITY % anchor-name "ID">
141    
142    <![ %HTML.linkRelationships [ <!ENTITY % linkRelAttrs "
143            REL CDATA #IMPLIED -- forward relationship type --
144            REV CDATA #IMPLIED -- reversed relationship type
145                                  to referent data:
146    
147                                    PARENT CHILD, SIBLING, NEXT, TOP,
148                                    DEFINITION, UPDATE, ORIGINAL etc. --
149            "> ]]>
150    <!ENTITY % linkRelAttrs "">
151    
152    <![ %HTML.linkRedundantInfo [ <!ENTITY % linkRedundantAttrs "
153            URN CDATA #IMPLIED -- universal resource number --
154    
155            TITLE CDATA #IMPLIED -- advisory only --
156            "> ]]>
157    <!ENTITY % linkRedundantAttrs "">
158    
159    <![ %HTML.linkMethods [ <!ENTITY % linkMethodAttrs "
160            METHODS NAMES #IMPLIED -- supported public methods of the object:
161                                            TEXTSEARCH, GET, HEAD, ... --
162            "> ]]>
163    <!ENTITY % linkMethodAttrs "">
164    
165    <!ENTITY % linkattributes
166            "NAME %anchor-name #IMPLIED
167            HREF %URI;  #IMPLIED
168            %linkRelAttrs;
169            %linkRedundantAttrs;
170            %linkMethodAttrs;
171            ">
172    
173    
174    <!-- Document Element -->
175    
176    
177    <![ %HTML.PLAINTEXT [ <!ENTITY % obsolete-plaintext ", PLAINTEXT?"> ]]>
178    <!ENTITY % obsolete-plaintext "">
179    <![ %HTML.isindexAtEnd [ <!ENTITY % end-isindex ", ISINDEX?"> ]]>
180    <!ENTITY % end-isindex "">
181    
182    <!ENTITY % html-content "HEAD, BODY %obsolete-plaintext; %end-isindex">
183    <!ELEMENT HTML O O  (%html-content)>
184    
185    <![ %HTML.NEXTID [  <!ENTITY % head-content "TITLE? & ISINDEX? & LINK* & BASE?
186                            & NEXTID?"> ]]>
187    <!ENTITY % head-content "TITLE & ISINDEX? & LINK* & BASE?">
188    <!ELEMENT HEAD O O  (%head-content)>
189    
190    <![ %HTML.titleCDATA [ <!ENTITY % title-content "CDATA"> ]]>
191    <!ENTITY % title-content "(#PCDATA)">
192    <!ELEMENT TITLE - -  %title-content
193              -- The TITLE element is not considered part of the flow of text.
194                 It should be displayed, for example as the page header or
195                 window title.
196              -->
197    
198  <!ELEMENT ISINDEX - O EMPTY  <!ELEMENT ISINDEX - O EMPTY
199            -- WWW clients should offer the option to perform a search on            -- WWW clients should offer the option to perform a search on
200               documents containing ISINDEX.               documents containing ISINDEX.
201            -->            -->
202    
203  <!ELEMENT NEXTID - O EMPTY>  <!ELEMENT NEXTID - O EMPTY>
204  <!ATTLIST NEXTID N NUMBER #REQUIRED  <!ATTLIST NEXTID N %anchor-name #REQUIRED
205            -- The number should be the highest number that appears in            -- The number should be a name suitable for use
206               any NAME attribute in the document.               for the ID of a new element. When used, the value
207            -->               has its numeric part incremented. EG Z67 becomes Z68
208                      -->
209  <!ENTITY % URL "CDATA"  <!ELEMENT LINK - O EMPTY>
210          -- The term URL means a CDATA attribute  <!ATTLIST LINK
211             whose value is a Universal Resource Locator,          %linkattributes>
212             as defined in ftp://info.cern.ch/pub/www/doc/url3.txt          
213          -->  <!ELEMENT BASE - O EMPTY    -- Reference context for URIs -->
214    <!ATTLIST BASE
215    
216            HREF %URI; #IMPLIED
217    
218            >
219    
220    <!ENTITY % font "TT | B | I | U ">
221    <!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | KEY | VAR | DFN | CITE">
222    
223    <![ %HTML.font-phrase [
224            <!ENTITY % obsolete-font "| %font">
225            <!ENTITY % obsolete-phrase "| %phrase">
226            ]]>
227    <!ENTITY % obsolete-font "">
228    <!ENTITY % obsolete-phrase "">
229    <![ %HTML.pSeparator [
230            <!ENTITY % obsolete-p "| P">
231            ]]>
232    <!ENTITY % obsolete-p "">
233    
234    <!ENTITY % inline "%phrase %obsolete-font">
235    <!ENTITY % pre-inline "%font %obsolete-phrase %obsolete-p">
236    
237    <![ %HTML.GO [
238            <!ELEMENT GO - O EMPTY>
239            <!ENTITY % go-text "| GO">
240            ]]>
241    <!ENTITY % go-text "">
242    
243    <!ENTITY % text "#PCDATA | IMG | %inline | BR %go-text %obsolete-p">
244    
245    <!ENTITY % htext "A | %text"    -- Plus links, no structure -->
246    
247  <!ELEMENT A     - -  (#PCDATA)>  <![ %HTML.font-phrase [ <!ENTITY % font-content "(%htext)+"> ]]>
248    <!ENTITY % font-content "#PCDATA">
249    <!ELEMENT (%font;) - - (%font-content;)>
250    
251    <!ELEMENT (%phrase;) - - (%htext)+>
252    
253    <!ENTITY % pre "PRE | XMP | LISTING">
254    
255    <![ %HTML.forms [ <!ENTITY % block-form "| FORM | ISINDEX"> ]]>
256    <!ENTITY % block-form "">
257    
258    <![ %HTML.pSeparator [
259            <!ENTITY % obsolete-htext "| %htext">
260            <!ENTITY % block-p "">
261            ]]>
262    <!ENTITY % obsolete-htext "| A">
263    <!ENTITY % block-p "| P ">
264    
265    <!ENTITY % block "HR | %list | DL
266                    | %pre | BLOCKQUOTE | ADDRESS
267                    %block-form %block-p">
268    
269    
270    <!ENTITY % body-content "%heading | %block %obsolete-htext">
271    <!ELEMENT BODY O O  (%body-content)*>
272    
273    
274    <![ %HTML.aEndOmissable [ <!ENTITY % a-end "O"> ]]>
275    <!ENTITY % a-end "-">
276    
277    <!ELEMENT A     - %a-end (%heading|%block|%text)+ -(A)
278            -- @# Technically, this allows silliness like:
279                    <H2><A>xyz<H1>h1</H1></A></H2>
280            The right way to do anchors outside of %htext is more like:
281                    <as id=z1><H2>lkjlkj</h2><ae start=z1>
282            -->
283  <!ATTLIST A  <!ATTLIST A
284          NAME NMTOKEN #IMPLIED          %linkattributes;
285          HREF %URL; #IMPLIED          >
286          TEXT (PLAIN, X-HTML, X-RTF) #IMPLIED  
287          -- choose MIME text/plain or text/html content type --  <!ELEMENT IMG    - O EMPTY --  Embedded image -->
288          -- if not specified, inferred from HREF filename --  <!ATTLIST IMG
289          >          SRC %URI;  #IMPLIED     -- URI of document to embed --
290            ALT CDATA #IMPLIED
291            ALIGN (top|middle|bottom) #IMPLIED
292            ISMAP (ISMAP) #IMPLIED
293            >
294    
 <!ELEMENT P     - O EMPTY>  
 <!-- P separates paragraphs -->  
295    
296  <!ELEMENT (%heading)    - -  (#PCDATA|A)+>  <![ %HTML.pSeparator [ <!ENTITY % p-content "EMPTY"> ]]>
297    <!ENTITY % p-content "(%htext)+">
298    <!ELEMENT P     - O %p-content>
299    <!ELEMENT HR    - O EMPTY -- horizontal rule -->
300    <!ELEMENT BR    - O EMPTY -- @# BR -> &br; -->
301    
302  <!ELEMENT DL    - -  (DT|DD|A|P|#PCDATA)*>  <!ELEMENT ( %heading )  - -  (%htext;)+>
 <!--    Content should match ((DT,(A|#PCDATA)+)+,(DD,(A|#PCDATA)+))  
         But mixed content is messy.  
   -->  
   
 <!ELEMENT DT    - O EMPTY>  
 <!ELEMENT DD    - O EMPTY>  
303    
304  <!ELEMENT (%list) - -  (#PCDATA|LI|A|P)+>  <!ELEMENT DL    - -  (DT*, DD?)+>
305  <!--    Content should match ((LI,(A|#PCDATA)+)+)  <!ATTLIST DL
306          But mixed content is messy.          STYLE (COMPACT) #IMPLIED>
   -->  
307    
308  <!ELEMENT LI    - O EMPTY>  <!ELEMENT DT    - O (%htext)+>
309    <!ELEMENT DD    - O (%htext|%block)+>
310    
311  <!ELEMENT ADDRESS - - (#PCDATA|A|P)+>  <!ELEMENT (%list) - -  (LI)+>
312    
313  <!ELEMENT PRE - - (#PCDATA|A|P)+>  <!ELEMENT LI    - O (%htext|%block)+>
314    
315    <!ELEMENT BLOCKQUOTE - - (%htext|%block)+ -- @# Hmm... --
316            -- for quoting some other source -->
317    
318    <!ELEMENT ADDRESS - - (%htext;)+>
319    
320    <!ELEMENT PRE - - (#PCDATA|%pre-inline|A)+>
321  <!ATTLIST PRE  <!ATTLIST PRE
322          WIDTH NUMBER 80          WIDTH NUMBER #implied
323          >          >
324    
325  <!ELEMENT (%literal) - -  CDATA>  <!-- Mnemonic character entities. -->
326    
 <!ELEMENT PLAINTEXT - O EMPTY>  
 <!--      The <PLAINTEXT> tag, if present, signals the end of the SGML  
           document entity. The data that follows serves as a non-SGML  
           data entity.  
   -->  
   
 <!--      Text Entities       -->  
   
 <!-- Characters that may begin a delimiter-in-context sequence  
         From "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" -->  
 <!ENTITY lt "<">  
 <!ENTITY gt ">">  
 <!ENTITY amp "&">  
   
 <!-- Characters from various Latin alphabets. -->  
327  <!ENTITY % ISOlat1 PUBLIC  <!ENTITY % ISOlat1 PUBLIC
328         "ISO 8879:1986//ENTITIES Added Latin 1//EN">    "ISO 8879:1986//ENTITIES Added Latin 1//EN">
329  %ISOlat1;  %ISOlat1;
330    
331  ]>  <!ENTITY amp "&#38;"     -- ampersand -->
332    <!ENTITY gt "&#62;"      -- greater than -->
333    <!ENTITY lt "&#60;"      -- less than -->
334    <!ENTITY nbsp "<? nonbreaking-space>">
335    <!-- @# should add entites for processing instructions
336            for line break, centering, etc. -->
337    
338    
339    <![ %HTML.litCDATA [ <!ENTITY % lit-content "CDATA"> ]]>
340    <!ENTITY % lit-content "RCDATA">
341    <!ELEMENT (%literal) - -  %lit-content>
342    
343    <![ %HTML.PLAINTEXT [
344    <!ELEMENT PLAINTEXT - O EMPTY>
345    ]]>
346    
347    
348    <!-- Forms  -->
349    <![ %HTML.forms [
350    
351    <!ENTITY % HTTP-Method "(GET | POST)">
352    <!ELEMENT FORM - - (%body-content)* -(FORM) +(INPUT|SELECT|TEXTAREA)>
353    <!ATTLIST FORM
354            ACTION %URI #REQUIRED
355            METHOD %HTTP-Method #IMPLIED -- @# MAILTO? --
356            ENCTYPE %Content-Type; #IMPLIED
357            >
358    
359    <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX |
360                            RADIO | SUBMIT | RESET |
361                            IMAGE | HIDDEN )">
362    <!ELEMENT INPUT - O EMPTY>
363    <!ATTLIST INPUT
364            TYPE %InputType #IMPLIED -- @# defaults to TEXT?? --
365            NAME CDATA #IMPLIED -- required for all but submit and reset --
366            VALUE CDATA #IMPLIED
367            SRC %URI #IMPLIED -- for image inputs --
368            STATE (CHECKED) #IMPLIED
369            SIZE CDATA #IMPLIED -- @# should be NUMBERS: delimit with space, not comma --
370            MAXLENGTH NUMBER #IMPLIED
371            ALIGN (top|middle|bottom|left|center|right) #IMPLIED --@#supported?--
372            >
373    
374    <!ELEMENT SELECT - - (OPTION+)>
375    <!ATTLIST SELECT
376            NAME CDATA #REQUIRED
377            SIZE NUMBER #IMPLIED
378            SELECTIONS (MULTIPLE) #IMPLIED
379            >
380    
381    <!ELEMENT OPTION - O (#PCDATA)>
382    <!ATTLIST OPTION
383            STATE (SELECTED) #IMPLIED
384            VALUE CDATA #IMPLIED
385            >
386    
387    <!ELEMENT TEXTAREA - - (#PCDATA)>
388    <!ATTLIST TEXTAREA
389            NAME CDATA #REQUIRED
390            ROWS NUMBER #REQUIRED -- @#implied? --
391            COLS NUMBER #REQUIRED
392            >
393    ]]>
394    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24