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: -->