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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24