HTML with HyTime (1993-05-21)
Scripting is disabled and therefore
annotations cannot be shown.
<!--
HTML with HyTime
This is a modified version of the HTML language as defined for
the World Wide Web. I have not added elements or changed the
content models of any elements.
Modification by W. Eliot Kimber, drmacro@vnet.ibm.com,
21 May 93.
$Id: html.dtd,v 1.4 93/01/20 20:56:08 connolly Exp $
-->
<!-- Regarding clause 6.1, SGML Document:
[1] SGML document = SGML document entity,
(SGML subdocument entity |
SGML text entity | non-SGML data entity)*
The role of SGML document entity is filled by this DTD,
followed by the conventional HTML data stream.
-->
<!-- DTD definitions -->
<!ENTITY % heading "H1|H2|H3|H4|H5|H6" >
<!ENTITY % list "UL|OL|DIR|MENU">
<!ENTITY % literal "XMP|LISTING">
<!ENTITY % headelement
"TITLE | NEXTID | ISINDEX" >
<!ENTITY % bodyelement
"P | A | %heading |
%list | DL | ADDRESS | PRE | BLOCKQUOTE
| %literal">
<!ENTITY % oldstyle "%headelement | %bodyelement | #PCDATA">
<!ENTITY % URL "CDATA"
-- The term URL means a CDATA attribute
whose value is a Universal Resource Locator,
as defined in ftp://info.cern.ch/pub/www/doc/url3.txt
-->
<!--=====================================================================
WEK: I have defined URL addresses as a notation so that they can
be then used in a notloc element.
=====================================================================-->
<!NOTATION url PUBLIC "-//WWW//NOTATION URL/Universal Resource Locator
/'ftp: info.cern.ch/pub/www/doc/url3.txt'
//EN"
>
<!ENTITY % linkattributes
"NAME NMTOKEN #IMPLIED
HREF ENTITY #IMPLIED
--=== WEK =======================================================
HREF is now an entity attribute rather than containing a
URL address directly. To create a link using a URL address,
declare a SUBDOC or data entity and make the system
identifier the URL address of the object:
<!ENTITY mydoc SYSTEM "URL address of document " SUBDOC >
This indirection gives to things:
1. A way to protect links in the source from changes in the
location of a document since the physical address is only
specified once.
2. An opportunity to use other addressing methods, including
possibly replacing the URL with an ISO formal public
identifier.
=================================================================-->
TYPE NAME #IMPLIED -- type of relashionship to referent data:
PARENT CHILD, SIBLING, NEXT, TOP,
DEFINITION, UPDATE, ORIGINAL etc. --
URN CDATA #IMPLIED -- universal resource number. unique doc id --
TITLE CDATA #IMPLIED -- advisory only --
METHODS NAMES #IMPLIED -- supported methods of the object:
TEXTSEARCH, GET, HEAD, ... --
-- WEK: --
LINKENDS NAMES #IMPLIED
-- Linkends takes one or more NAME= values for local links--
HyNames CDATA #FIXED 'TYPE ANCHROLE URN DOCORSUB'
">
<!--=== WEK ==========================
The HyNames= attribute maps the local attribute names to their
cooresponding HyTime forms.
The Methods= attribute is bit of a puzzle since it is really
a part of the hyperlink presentation/processing style, not
a property of the anchors, but there's nothing wrong with
having application-specific stuff in your HyTime application.
I added LinkEnds= so that the various linking elements will
completely conform to the clink and ilink forms. The presence
of the LinkEnds= attribute does not imply required support
for this type of linking, but it does make HTML more consistent
with other DTDs that do use the LinkEnds= attribute form.
Note that 10744 shows the attribute name for the ILINK form
to be 'linkend', not 'linkends'. I consider this to be a
typo, as there's no logical reason to disallow multiple anchors
from a clink and lack of it puts an undue requirement of
specifying otherwise unneeded nameloc elements. In any case,
an application can transform linkends= to linkend= plus a
nameloc, so it doesn't matter in practice.
=======================================-->
<!-- Document Element -->
<!ELEMENT HTML O O ((HEAD | BODY | %oldstyle)*, PLAINTEXT?)>
<!ATTLIST HTML
HyTime NAME #FIXED hybrid
-- WEK: Indicates that the HTML element contains
HyTime and non-HyTime elements together.
--
>
<!ELEMENT HEAD - - (TITLE? & ISINDEX? & NEXTID? & LINK*)>
<!-- ==== WEK ==============================================
Design note: I would have made ISINDEX and NEXTID
attributes of HEAD rather than contained
elements since they are simple properties
of the HEAD element.
=========================================================-->
<!ELEMENT TITLE - - RCDATA
-- The TITLE element is not considered part of the flow of text.
It should be displayed, for example as the page header or
window title.
-->
<!ELEMENT ISINDEX - O EMPTY
-- WWW clients should offer the option to perform a search on
documents containing ISINDEX.
-->
<!ELEMENT NEXTID - O EMPTY>
<!ATTLIST NEXTID N NUMBER #REQUIRED
-- The number should be the highest number that appears in
any NAME attribute in the document.
-->
<!-- WEK: It's not clear what the purpose of this element is, but
I see no reason for it not to be an attribute of HEAD.
-->
<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
%linkattributes
HyTime NAME #FIXED clink
-- LINK conforms to the clink architectural form --
>
<!--=== WEK ==========================================================
The LINK element naturally conforms to the contextual link (clink)
form, with the addition of the LinkEnds= attribute.
=================================================================-->
<!ENTITY % inline "EM | TT | STRONG | B | I | U |
CODE | SAMP | KBD | KEY | VAR | DFN | CITE "
>
<!ELEMENT (%inline;) - - (#PCDATA)>
<!ENTITY % hypertext "#PCDATA | %inline; | A">
<!ELEMENT BODY - - (%bodyelement|%hypertext;)*>
<!ELEMENT A - - (#PCDATA)>
<!ATTLIST A
%linkattributes;
HyTime NAME #FIXED clink
>
<!-- === WEK ======================================================
Not sure what the A element is, but if it has link attributes
it must be an instance of clink.
=============================================================-->
<!ELEMENT P - O EMPTY -- separates paragraphs -->
<!--=== WEK ==========================================================
Design note: This seems like a clumsy way to structure information.
One would expect paragraphs to be containing.
==================================================================-->
<!ELEMENT (%heading) - - (%hypertext;)+>
<!ELEMENT DL - - (DT | DD | P | %hypertext;)*>
<!-- Content should match ((DT,(%hypertext;)+)+,(DD,(%hypertext;)+))
But mixed content is messy.
-->
<!--=== WEK ============================================================
Design note: This content should be:
<!ELEMENT DL - - (DT+, DD)+ >
<!ELEMENT (DT | DD) - O (%hypertext;)* >
There's no reason for DT and DD to be empty. Perhaps there was
some confusion about the problems with mixed content? There are
none here.
These comments apply to the other list elements as well.
====================================================================-->
<!ATTLIST DL
STYLE NAME #IMPLIED -- COMPACT, etc.--
>
<!ELEMENT DT - O EMPTY>
<!ELEMENT DD - O EMPTY>
<!ELEMENT (UL|OL) - - (%hypertext;|LI|P)+>
<!ELEMENT (DIR|MENU) - - (%hypertext;|LI)+>
<!-- Content should match ((LI,(%hypertext;)+)+)
But mixed content is messy.
-->
<!ELEMENT LI - O EMPTY>
<!ELEMENT BLOCKQUOTE - - (%hypertext;|P)+
-- for quoting some other source -->
<!ATTLIST BLOCKQUOTE
SOURCE ENTITY #IMPLIED -- WEK: entity containing source --
-- Changed as for HREF --
Linkends NAME #IMPLIED -- to meet clink form reqs. --
HyTime NAME #FIXED clink
>
<!ELEMENT ADDRESS - - (%hypertext;|P)+>
<!ELEMENT PRE - - (#PCDATA | A | B | I | U | P)+>
<!ATTLIST PRE
WIDTH NUMBER #implied
>
<!-- Character entities omitted. These should be separate from
the main DTD so specific applications can define their values.
ISO entity sets could be used for this.
-->
<!-- deprecated elements -->
<!ELEMENT (%literal) - - CDATA>
<!ELEMENT PLAINTEXT - O EMPTY>
<!-- Local Variables: -->
<!-- mode: sgml -->
<!-- compile-command: "sgmls -s -p " -->
<!-- end: -->