document type declaration subset for HyperText Markup Language as defined by the World Wide Web project.
Scripting is disabled and therefore
annotations cannot be shown.
<!-- html.dtd - document type declaration subset for
HyperText Markup Language as defined
by the World Wide Web project.
$Id: html.dtd,v 1.1 92/08/19 18:37:58 connolly Exp $
15 Jul 92 by connolly@convex.com
6 Aug 92 revision: match HTML.c better
18 Aug 92 revision: FrameMaker integration
See also: http://info.cern.ch/hypertext/WWW/MarkUp/Tags.html
http://info.cern.ch/hypertext/WWW/MarkUp/HTML2.html
-->
<!-- Character entities -->
<!-- I wonder if we could just use numeric character entities, as
long as we're just referencing ASCII characters.
That is, write D in stead of < -->
<!ENTITY lt "<">
<!ENTITY gt ">">
<!ENTITY amp "&">
<!ENTITY bullet "·" -- @@@ NeXT only -->
<!-- parameter entities (DTD macros) -->
<!ENTITY % a.a "NAME CDATA #IMPLIED
TYPE CDATA #IMPLIED
HREF CDATA #IMPLIED">
<!ENTITY % a.list "COMPACT CDATA #IMPLIED">
<!ENTITY % heading "H1|H2|H3|H4|H5|H6" >
<!ENTITY % list "UL|OL|DIR|MENU">
<!ENTITY % pass "P|#PCDATA" -- aka pass_character -->
<!ENTITY % raw "XMP|LISTING">
<!-- PlainText is more than 8 characters, and changing the
NAMELEN capacity involves using an SGML declaration different
from the default, which is a hassle.
Besides: the semantics of PlainText can't
be captured by real SGML anyway.
If we were willing to muck with NAMELEN, we could use
the <PLAINTEXT> tag to mark the _end_ of the SGML document,
and treat the rest of the data in the stream using normal
plain text conventions.
-->
<!-- Document structure -->
<!ELEMENT HTML O O ((TITLE? & NEXTID? & ISINDEX?), DOCUMENT)>
<!ENTITY % body "%heading|%list|DL|%pass|%raw|address">
<!ELEMENT DOCUMENT O O ((%heading), (%body)+) +(A)>
<!-- The DOCUMENT element is necessary to avoid mixed content
in the HTML element. Mixed content and optional elements
don't mix very well.
BUT it introduces minimization into the HTML format. Hmm...
-->
<!ELEMENT TITLE - - (#PCDATA)>
<!ELEMENT ISINDEX - O EMPTY >
<!ELEMENT NEXTID - O EMPTY >
<!ATTLIST NEXTID ID NUMBER #REQUIRED>
<!-- as noted in Tags.html, the conventional <NEXTID 10> is
illegal. Use <NEXTID ID=10> to comply with this DTD. -->
<!ELEMENT ADDRESS - O (%pass)+>
<!ELEMENT (%heading) - - (%pass)+
--Tags.html says titles should fit on one line, but
the browser handles paragraph breaks inside headings
gracefully. -->
<!ELEMENT (%list) - - ((LI|%pass)+)>
<!ATTLIST (%list) %a.list>
<!ELEMENT DL - - (DT|DD|%pass)+>
<!ATTLIST DL %a.list>
<!ELEMENT (LI|DT|DD) - O EMPTY>
<!ELEMENT A - - (%body)+>
<!ATTLIST A %a.a; >
<!ELEMENT P - O EMPTY>
<!ELEMENT (%raw) - - CDATA>
<!-- BUG:
tags.html says that you can put anything but </XMP> in the
text of an XMP element. SGML says that ETAGO, "</" ends a CDATA
section.
-->