/[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.10 by connolly, Tue Apr 19 17:24:06 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 quot "&#34;"      -- less than -->
335    <!ENTITY nbsp "<? nonbreaking-space>">
336    <!-- @# should add entites for processing instructions
337            for line break, centering, etc. -->
338    
339    
340    <![ %HTML.litCDATA [ <!ENTITY % lit-content "CDATA"> ]]>
341    <!ENTITY % lit-content "RCDATA">
342    <!ELEMENT (%literal) - -  %lit-content>
343    
344    <![ %HTML.PLAINTEXT [
345    <!ELEMENT PLAINTEXT - O EMPTY>
346    ]]>
347    
348    
349    <!-- Forms  -->
350    <![ %HTML.forms [
351    
352    <!ENTITY % HTTP-Method "(GET | POST)">
353    <!ELEMENT FORM - - (%body-content)* -(FORM) +(INPUT|SELECT|TEXTAREA)>
354    <!ATTLIST FORM
355            ACTION %URI #REQUIRED
356            METHOD %HTTP-Method #IMPLIED -- @# MAILTO? --
357            ENCTYPE %Content-Type; #IMPLIED
358            >
359    
360    <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX |
361                            RADIO | SUBMIT | RESET |
362                            IMAGE | HIDDEN )">
363    <!ELEMENT INPUT - O EMPTY>
364    <!ATTLIST INPUT
365            TYPE %InputType #IMPLIED -- @# defaults to TEXT?? --
366            NAME CDATA #IMPLIED -- required for all but submit and reset --
367            VALUE CDATA #IMPLIED
368            SRC %URI #IMPLIED -- for image inputs --
369            STATE (CHECKED) #IMPLIED
370            SIZE CDATA #IMPLIED -- @# should be NUMBERS: delimit with space, not comma --
371            MAXLENGTH NUMBER #IMPLIED
372            ALIGN (top|middle|bottom|left|center|right) #IMPLIED --@#supported?--
373            >
374    
375    <!ELEMENT SELECT - - (OPTION+)>
376    <!ATTLIST SELECT
377            NAME CDATA #REQUIRED
378            SIZE NUMBER #IMPLIED
379            SELECTIONS (MULTIPLE) #IMPLIED
380            >
381    
382    <!ELEMENT OPTION - O (#PCDATA)>
383    <!ATTLIST OPTION
384            STATE (SELECTED) #IMPLIED
385            VALUE CDATA #IMPLIED
386            >
387    
388    <!ELEMENT TEXTAREA - - (#PCDATA)>
389    <!ATTLIST TEXTAREA
390            NAME CDATA #REQUIRED
391            ROWS NUMBER #REQUIRED -- @#implied? --
392            COLS NUMBER #REQUIRED
393            >
394    ]]>
395    

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24