home *** CD-ROM | disk | FTP | other *** search
/ Best Tools for JAVA / Best Tools for JAVA.iso / HTML_REF / HTML3 / HTML3DTD.TXT < prev    next >
Encoding:
Text File  |  1995-11-09  |  41.7 KB  |  1,165 lines

  1. <!--
  2.         html3.dtd
  3.  
  4.         Document Type Definition for the HyperText Markup Language (HTML DTD)
  5.  
  6.         Draft: Thu 19-Jan-95 12:02:46
  7.  
  8.         Author: Dave Raggett <dsr@hplb.hpl.hp.com>
  9.  
  10.         W3O is developing a testbed browser to provide practical
  11.         experience with HTML 3.0 before it becomes a standard.
  12.         See:  http://www.w3.org/hypertext/WWW/Arena/
  13.  
  14.         This is an open process and comments are welcomed on the
  15.         www-html mailing list.
  16.  
  17.         While HTML 3.0 is being discussed, please use text/x-html3
  18.         as a temporary MIME content type, as this will allow clients
  19.         to distinguish html 3 from current html documents.
  20.  
  21.         The entity HTML.Recommended can be used to give a more rigorous
  22.         version of the DTD suitable for use with SGML authoring tools.
  23.         The default version of the DTD offers a laxer interpretation,
  24.         e.g. allowing authors to omit leading <P> elements. You can
  25.         switch on the more rigorous version of the DTD by including
  26.         the following at the start of your HTML document.
  27.  
  28.          <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"
  29.             [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >
  30.  
  31.  
  32.         Design Objectives:
  33.  
  34.         o   Backwards compatibility with 2.0
  35.  
  36.         o   Tightening up HTML.Recommended and
  37.             moving more things to HTML.Deprecated
  38.  
  39.         o   Keep HTML - simple don't compete with CALS
  40.  
  41.         o   Make it practical for people to edit HTML 3.0
  42.             documents directly, i.e. avoid long names.
  43.  
  44.         o   Tables, figures and math from HTML+
  45.             with tweaks based on recent experience
  46.  
  47.         o   Add limited presentational controls with
  48.             a view to use of linked style sheets
  49.             (style overrides are supported)
  50.  
  51.         o   Compatibility with ICADD as per Yuri's suggestions
  52.  
  53.         An (incomplete) list of issues:
  54.  
  55.         We need to pin down an explicit set of RELation values
  56.         for <A> and <LINK>. Should these include "Chapter",
  57.         "Section", etc. or just generic relationships?
  58.  
  59.         Should we support graphical selection menus with SELECT?
  60.         These would process clicks locally rather than at the server.
  61.  
  62.         How should we support font selection in math for
  63.         tensors, vectors, physical constants etc?
  64.  
  65.         HTML 3.0 relies on linked style info to give authors
  66.         control over the appearence of documents. Such info is
  67.         placed in a linked style sheet, or as overrides in the
  68.         HTML document head, using the STYLE element. The generic
  69.         CLASS attribute can be used to subclass elements when
  70.         you want to use a different style from normal, e.g. you
  71.         might use <h2 class=bigcaps> for headers with enlarged
  72.         capital letters. Note that the class attribute has a
  73.         wider scope than just style changes, e.g. browsers could
  74.         provide means for searching through documents, taking
  75.         into account the class values.
  76.  
  77.         The DTD contains a small number of attributes for direct
  78.         control of basic alignment parameters; column widths for
  79.         tables; support for custom bullets, label styles for lists
  80.         and text flow. It may be cleaner to drop these and force
  81.         authors to use the style sheet mechanism instead.
  82.  
  83.         How far should we go to support HyTime?
  84.  
  85.         The extension to BASE caters for multiple scopes for
  86.         resolving relative references, while indirect references
  87.         can be resolved by servers. One area, where HyTime
  88.         could help us, is with location ladders for affixing
  89.         annotations: e.g. 3rd H2, 2nd para, 4th word, but this
  90.         could also be handled via refining the URL syntax.
  91.  
  92.         I have added three attributes to every element that uses a URL
  93.         for a hypertext link, or to name an inlined image. The BASE
  94.         attribute is used to name a BASE element that defines the
  95.         base URL for resolving relative links (defaults to document URL).
  96.         The URN attribute is used to check if the desired object is
  97.         present in a cache under a different URL. This will be a common
  98.         case for images which are frequently copied around. The MD attribute
  99.         specifies a message digest such as MD5 for the linked object and is
  100.         needed to ensure someone hasn't tampered with a linked document.
  101. -->
  102.  
  103. <!DOCTYPE HTML [
  104.  
  105. <!ENTITY % HTML.Version
  106.         "-//IETF//DTD HTML 3.0//EN//"
  107.  
  108.         -- Typical usage:
  109.  
  110.             <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//">
  111.             <html>
  112.             ...
  113.             </html>
  114.         --
  115.         >
  116.  
  117. <!--================== Flags for Marked Sections ==========================-->
  118.  
  119. <!ENTITY % HTML.Recommended "IGNORE"
  120.         -- Certain features of the language are necessary for compatibility
  121.            with widespread usage, but they may compromise the structural
  122.            integrity of a document. This feature test entity enables
  123.            a more prescriptive document type definition that eliminates
  124.            the above features.
  125.         -->
  126.  
  127. <![ %HTML.Recommended [
  128.         <!ENTITY % HTML.Deprecated "IGNORE">
  129. ]]>
  130.  
  131. <!ENTITY % HTML.Deprecated "INCLUDE"
  132.         -- Certain features of the language are necessary for compatibility
  133.            with earlier versions of the specification, but they tend
  134.            to be used an implemented inconsistently, and their use is
  135.            deprecated. This feature test entity enables a document type
  136.            definition that eliminates these features.
  137.         -->
  138.  
  139. <!--================== Imported Names =====================================-->
  140.  
  141. <!ENTITY % Content-Type "CDATA"
  142.         -- meaning a MIME content type, as per RFC1521
  143.         -->
  144.  
  145. <!ENTITY % HTTP-Method "GET | POST"
  146.         -- as per HTTP specification
  147.         -->
  148.  
  149. <!ENTITY % URI "CDATA"
  150.         -- The term URI means a CDATA attribute
  151.            whose value is a Uniform Resource Identifier,
  152.            as defined by
  153.         "Uniform Resource Identifiers" by Tim Berners-Lee
  154.         aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
  155.         aka RFC 1630
  156.  
  157.         Note that CDATA attributes are limited by the LITLEN
  158.         capacity (1024 in the current version of html.decl),
  159.         so that URIs in HTML have a bounded length.
  160.  
  161.         -->
  162.  
  163. <!ENTITY % FLOAT "CDATA" -- floating point numbers (not in SGML) -->
  164.  
  165. <!ENTITY % SHAPE "CDATA" 
  166.     -- Shape of hotzone in image.
  167.  
  168.        All coordinates are assumed to be numbers in the range 0 to 1
  169.        and interpreted as fractional width/height and measured from
  170.        the top left corner of the associated image.
  171.  
  172.        The attribute value is a string taking one of the following forms:
  173.  
  174.             "circle x, y, r" 
  175.  
  176.        (x, y) define the center and r the radius.
  177.  
  178.             "rect x, y, w, h"
  179.  
  180.        (x, y) defines upper left, and w and h the width and height.
  181.  
  182.             "polygon n : x1, y1, x2, y2, ..."
  183.  
  184.        n is the number of distinct points in the polygon, and is
  185.        followed by n pairs of x, y coordinates. The polygon is
  186.        closed by a line linking the n'th point to the first.
  187.        Intersecting polygons use the non-zero-winding-number
  188.        rule to determine if a point lies inside the polygon.
  189.     --
  190. >
  191.  
  192. <!-- 3.0 Parameter Entities -->
  193.  
  194. <!ENTITY % heading "H1|H2|H3|H4|H5|H6">
  195.  
  196. <![ %HTML.Deprecated [
  197.     <!ENTITY % list "UL | OL | DIR | MENU">
  198.     <!ENTITY % blockquote "BLOCKQUOTE | BQ">
  199.     <!ENTITY % preformatted "PRE | XMP | LISTING">
  200. ]]>
  201.  
  202. <!ENTITY % list "UL | OL">
  203.  
  204. <!ENTITY % blockquote "BQ">
  205.  
  206. <!ENTITY % preformatted "PRE">
  207.  
  208.  
  209. <!-- The style attribute is used to subclass HTML elements for
  210.      rendering purposes, when used with style sheets, e.g. DSSSL lite -->
  211.  
  212. <!ENTITY % attrs  -- common attributes for elements --
  213.         'id       ID      #IMPLIED -- as target for hrefs (link ends) --
  214.          lang     CDATA   "en_us"  -- ISO languages, e.g. en_uk, fr, ... --
  215.          class    NMTOKEN #IMPLIED -- for subclassing elements --'>
  216.  
  217. <!-- SGML standard forces different NAMES for all attribute values
  218.      in the same element, regardless of the attribute name! As a result
  219.      CDATA is used for CLEAR attribute to avoid clash with ALIGN attribute.-->
  220.  
  221. <!ENTITY % needs -- Attributes for controlling text flow. Used in headers
  222.                     and other elements to guarantee sufficient room --
  223.         'clear  CDATA "no"  -- (left|right|all|no) move down past figures --
  224.          needs  CDATA #IMPLIED -- minimum width needed in em"s or pixels --
  225.                                         -- e.g. "40 em" or "100 pixels"  --'>
  226.  
  227. <!--
  228.     The following attributes are included where ever a URL can be given:
  229.  
  230.     base    the id of a <BASE> element for use in resolving relative links
  231.             this defaults to the HTML 2.0 definition.
  232.  
  233.     url     location independent name (uniform resource name), and useful
  234.             for checking local caches for copies of objects with different URLs
  235.  
  236.     md      message digest e.g. md="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ"
  237.             where the digest is base64 encoded and preceded by a prefix
  238.             denoting the algorithm (in this case MD5).
  239. -->
  240.  
  241. <!ENTITY % url.link -- Attributes associated with URL based links --
  242.         "base   IDREF  #IMPLIED  -- which <BASE> to resolve relative links --
  243.          urn    CDATA  #IMPLIED  -- location independent name for object --
  244.          md     CDATA  #IMPLIED  -- message digest for linked object --">
  245.  
  246. <!--================ Character mnemonic entities ==========================-->
  247.  
  248. <!-- The HTML list of Latin-1 entities includes the full range
  249.      of characters in widely available Latin-1 fonts, and as such
  250.      is a mixture of ISOlat1 and other ISO publishing symbols -->
  251.  
  252. <!ENTITY % HTMLlat1 PUBLIC
  253.   "-//IETF//ENTITIES Added Latin 1 for HTML//EN">
  254. %HTMLlat1;
  255.  
  256. <!--================ Entities for special symbols =========================-->
  257.  
  258. <!ENTITY emsp   SDATA "[emsp  ]" -- em space -->
  259. <!ENTITY ensp   SDATA "[ensp  ]" -- en space (1/2-em) -->
  260. <!ENTITY mdash  SDATA "[ndash ]" -- em dash -->
  261. <!ENTITY ndash  SDATA "[ndash ]" -- en dash (1/2-em) -->
  262. <!ENTITY nbsp   SDATA "[nbsp  ]" -- non breaking space -->
  263. <!ENTITY shy    SDATA "[shy   ]" -- soft hyphen -->
  264. <!ENTITY copy   SDATA "[copy  ]" -- copyright sign -->
  265. <!ENTITY trade  SDATA "[trade ]" -- trade mark sign -->
  266. <!ENTITY reg    SDATA "[reg   ]" -- registered sign -->
  267.  
  268. <!--================ Entities for standard icons ==========================-->
  269.  
  270. <!-- a range of standard icons such as &folder; for use
  271.      in speeding up display of directory listings etc. -->
  272.  
  273. <!ENTITY % HTMLicons PUBLIC
  274.   "-//IETF//ENTITIES icons for HTML//EN">
  275. %HTMLicons;
  276.  
  277. <!--================ Entities for math symbols ============================-->
  278.  
  279. <!-- ISO subset chosen for use with the widely available Adobe math font -->
  280.  
  281. <!ENTITY % HTMLmath PUBLIC
  282.   "-//IETF//ENTITIES Math and Greek for HTML//EN">
  283. %HTMLmath;
  284.  
  285. <!--=================== Text Markup =======================================-->
  286.  
  287. <!ENTITY % font " U | S | TT | B | I | BIG | SMALL">
  288.  
  289. <!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE">
  290.  
  291. <!ENTITY % misc "Q | LANG | AU | DFN | PERSON | ACRONYM | ABBREV">
  292.  
  293. <!ENTITY % special "TAB | MATH | A | IMG | BR | FN">
  294.  
  295. <!ENTITY % notmath "%font | %phrase | %special | %misc">
  296.  
  297. <!ENTITY % text "#PCDATA | SUB | SUP | %notmath">
  298.  
  299.  
  300. <!ENTITY % pre.content "#PCDATA | A | IMG | HR | BR | Q | LANG | %font | %phrase">
  301.  
  302. <!ELEMENT (%font|%phrase|%misc) - - (%text)+>
  303. <!ATTLIST (%font|%phrase|%misc) %attrs;>
  304.  
  305. <!-- Subscripts and superscripts. The ALIGN attribute is used for math -->
  306.  
  307. <!ELEMENT (SUB|SUP) - - (%text)+>
  308. <!ATTLIST (SUB|SUP)
  309.         %attrs;
  310.         align (left|center|right) #IMPLIED
  311.         >
  312.  
  313. <!-- Forced line break. Use ALIGN attribute to align text before line break -->
  314.  
  315. <!ELEMENT BR    - O EMPTY>
  316. <!ATTLIST BR
  317.         %attrs;
  318.         align  (left|center|right|justify) #IMPLIED
  319.         %needs; -- for control of text flow --
  320.         >
  321.  
  322. <!-- Named left, center and right tab stops (independent of '\t' char) -->
  323.  
  324. <!ELEMENT TAB - O EMPTY>
  325. <!ATTLIST TAB
  326.         id       ID       #IMPLIED  -- defines named tab stop --
  327.         to       IDREF    #IMPLIED  -- jump to named tab stop --
  328.         before   NUMBER   0         -- em units before new tab stop --
  329.         after    NUMBER   0         -- em units after new tab stop --
  330.         center  (center)  #IMPLIED  -- center following text --
  331.         right    (right)  #IMPLIED  -- right-align following text --
  332.         >
  333.  
  334. <!--================== Link Markup ========================================-->
  335.  
  336. <!--
  337.      With HTML 3.0 you can use ID attributes on most elements for named
  338.      link ends. The use of the NAME attribute on anchors is deprecated.
  339.  
  340.      Do we want to support arbitrary elements for link starts? This would
  341.      involve adding HREF and related attributes to most elements.
  342. -->
  343.  
  344. <![ %HTML.Deprecated [
  345.     <!ENTITY % linkName "name CDATA #IMPLIED -- named link end --">
  346. ]]>
  347.  
  348. <!ENTITY % linkName "">
  349.  
  350.  
  351. <!ENTITY % linkType "NAME"
  352.         -- A list of these will be specified at a later date.
  353.            They are used
  354.                 a) by stylesheets to control how collections of
  355.                    html nodes are rendered into printed documents
  356.                 b) for document specific toolbars/menus
  357.                 c) for hypertext paths or guided tours,
  358.                    with REL=NODE and REL=PATH.
  359.                 d) to make a link to a style sheet, e.g. rel=style
  360.                    (used only with the LINK element).
  361.         -->
  362.  
  363.  
  364. <!ENTITY % linkExtraAttributes -- URN moved to %url.link --
  365.        "rel %linkType #IMPLIED -- forward relationship type --
  366.         rev %linkType #IMPLIED -- reversed relationship type
  367.                                   to referent data --
  368.         title   CDATA #IMPLIED -- advisory only --
  369.         methods NAMES #IMPLIED -- supported public methods of the object:
  370.                                         TEXTSEARCH, GET, HEAD, ... --
  371.         ">
  372.  
  373. <![ %HTML.Deprecated [
  374.     <!ENTITY % A.content "(%heading|%text)+">
  375. ]]>
  376.  
  377. <!ENTITY % A.content   "(%text)+">
  378.  
  379. <!ELEMENT A     - - %A.content -(A)>
  380.  
  381. <!ATTLIST A
  382.         %attrs;
  383.         href   %URI;  #IMPLIED
  384.         %url.link;    -- standard link attributes --
  385.         %linkName;     -- name attribute is deprecated; use ID instead --
  386.         shape %SHAPE; #IMPLIED -- for shaped hotzones in FIGs --
  387.         %linkExtraAttributes;
  388.         >
  389.  
  390. <!--=================== Images ============================================-->
  391.  
  392. <!-- Desired widths are used for negotiating image size
  393.      with the module responsible for painting the image. -->
  394.  
  395. <!ELEMENT IMG    - O EMPTY --  Embedded image -->
  396. <!ATTLIST IMG
  397.         %attrs;
  398.         src  %URI;  #REQUIRED  -- URI of image to embed --
  399.         %url.link;             -- standard link attributes --
  400.         alt CDATA   #IMPLIED   -- for display in place of image --
  401.         align  (top|middle|bottom) top -- relative to baseline --
  402.         baseline NUMBER #IMPLIED -- height of baseline above image bottom --
  403.         width  NUMBER #IMPLIED -- desired width in em's or pixels --
  404.         height NUMBER #IMPLIED -- desired height in em's or pixels --
  405.         units  (em|pixels) pixels -- units for width and height --
  406.         ismap (ismap) #IMPLIED -- pass clicks to server --
  407.         >
  408.  
  409. <!--=================== Paragraphs=========================================-->
  410.  
  411. <!ELEMENT P     - O (%text)+>
  412. <!ATTLIST P
  413.         %attrs;
  414.         align  (left|center|right|justify) #IMPLIED
  415.         %needs; -- for control of text flow --
  416.         nowrap (nowrap) #IMPLIED -- disable wordwrap --
  417.         nofold (nofold) #IMPLIED -- disable space folding --
  418.         >
  419.  
  420. <!--=================== Headings, Titles, Sections ========================-->
  421.  
  422. <!ELEMENT HR    - O EMPTY -- customizable horizontal rule -->
  423. <!ATTLIST HR
  424.         align  (left|center|right) #IMPLIED
  425.         width NUMBER  100        -- % width of current margins --
  426.         src   %URI;   #IMPLIED   -- URI of custom rule graphic --
  427.         %url.link;               -- standard link attributes --
  428.         %needs; -- for control of text flow --
  429.         >
  430.  
  431. <!ELEMENT ( %heading )  - -  (%text;)+>
  432. <!ATTLIST ( %heading )
  433.         %attrs;
  434.         align  (left|center|right|justify) #IMPLIED
  435.         %needs; -- for control of text flow --
  436.         nowrap (nowrap) #IMPLIED -- disable wordwrap --
  437.         nofold (nofold) #IMPLIED -- disable space folding --
  438.         >
  439.  
  440. <!ELEMENT TITLE - -  (#PCDATA)
  441.           -- The TITLE element is not considered part of the flow of text.
  442.              It should be displayed, for example as the page header or
  443.              window title.
  444.           -->
  445.  
  446. <!--=================== Text Flows ========================================-->
  447.  
  448. <!ENTITY % block
  449.      "P | %list | DL
  450.         | %preformatted
  451.         | %blockquote
  452.         | FORM | ISINDEX
  453.         | TABLE | FIG | NOTE">
  454.  
  455. <![ %HTML.Recommended [
  456.     <!ENTITY % flow "((%text)* | (%block)*)">
  457. ]]>
  458.  
  459. <!ENTITY % flow "(%text | %block)*">
  460.  
  461. <!ELEMENT PRE - - (%pre.content)+>
  462.  
  463. <!ATTLIST PRE
  464.         %attrs;
  465.         width NUMBER #implied
  466.         %needs; -- for control of text flow --
  467.         >
  468.  
  469. <![ %HTML.Deprecated [
  470.  
  471. <!ENTITY % literal "CDATA"
  472.         -- special non-conforming parsing mode where
  473.            the only markup signal is the end tag
  474.            in full
  475.         -->
  476.  
  477. <!ELEMENT XMP - -  %literal>
  478. <!ELEMENT LISTING - -  %literal>
  479. <!ELEMENT PLAINTEXT - O %literal>
  480.  
  481. ]]>
  482.  
  483. <!-- simple footnotes -->
  484.  
  485. <!ELEMENT FN - - (%block)+>
  486. <!ATTLIST FN
  487.         %attrs;
  488.         >
  489.  
  490. <!--=================== Lists =============================================-->
  491.  
  492. <!ELEMENT DL    - -  (LH?, (DT|DD)+) -- this is perhaps too lax? -->
  493. <!ATTLIST DL
  494.         %attrs;
  495.         %needs; -- for control of text flow --
  496.         compact (compact) #IMPLIED -- more compact style --
  497.         >
  498.  
  499. <!ELEMENT DT    - O  (%text)+>
  500. <!ELEMENT DD    - O  %flow;>
  501. <!ATTLIST (DT|DD)
  502.         %attrs;
  503.         %needs; -- for control of text flow --
  504.         >
  505.  
  506.  
  507. <!ELEMENT (OL|UL) - -  (LH?, LI+) -- should we allow a list header ? -->
  508.  
  509. <!-- sequence number style, where "local" gives numbers in local language -->
  510.  
  511. <!ENTITY % ol.li "arabic|upperalpha|loweralpha|upperroman|lowerroman|local">
  512.  
  513. <!ATTLIST OL
  514.         %attrs;
  515.         %needs; -- for control of text flow --
  516.         type    (%ol.li)     #IMPLIED   -- rendering style for numbers --
  517.         inherit (inherit)    #IMPLIED   -- prefix from parent, eg "3.1.b" --
  518.         continue (continue)  #IMPLIED   -- don't restart sequence number --
  519.         start    NUMBER      #IMPLIED   -- starting sequence number --
  520.         compact (compact)    #IMPLIED   -- reduced interitem spacing --
  521.         >
  522.  
  523. <!-- Unordered lists:
  524.  
  525.     o   single or multicolumn with
  526.         horizontal or vertical wrapping
  527.  
  528.     o   plain or bulletted list items
  529.  
  530.     o   bullets can be customised via:
  531.             - entities (dingbats in HTMLicons)
  532.             - external graphic via URL
  533.             - individual attributes on LI tags
  534. -->
  535. <!ATTLIST UL
  536.         %attrs;
  537.         %needs; -- for control of text flow --
  538.         wrap (vert|horiz|none) none -- multicolumn list style --
  539.         plain   (plain)  #IMPLIED   -- suppress bullets --
  540.         dingbat  ENTITY  #IMPLIED   -- dingbat entity from HTMLicons --
  541.         src     (%URI;)  #IMPLIED   -- bullet defined by graphic --
  542.         %url.link;                  -- standard link attributes --
  543.         compact (compact) #IMPLIED  -- reduced interitem spacing --
  544.         >
  545.  
  546. <!ELEMENT LH - O (%text;)+ -- list header -->
  547. <!ATTLIST LH %attrs;>
  548.  
  549. <!--
  550.     For unordered lists, you can override the standard bullet with
  551.     a custom graphic specified via a URI e.g. src="splash.gif" or
  552.     a reference to one of the HTMLicons graphics e.g. dingbat=folder
  553.  
  554.     The skip attribute is used with ordered lists to skip over sequence
  555.     numbers for items which have been left out of the list, e.g. skip=3
  556.     advances the sequence number past 3 omitted items.
  557. -->
  558.  
  559. <!ELEMENT LI - O %flow; -- list item -->
  560. <!ATTLIST LI
  561.         %attrs;
  562.         %needs; -- for control of text flow --
  563.         dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons --
  564.         src  (%URI;) #IMPLIED   -- custom bullet graphic --
  565.         %url.link;              -- standard link attributes --
  566.         skip NUMBER 0           -- skip seq nums for missing items --
  567.         >
  568.  
  569. <!-- DIR and MENU are now subsumed by UL with type=plain. Use the
  570.      wrap attribute to control wrapping style for multicolumn lists -->
  571.  
  572. <![ %HTML.Deprecated [
  573.     <!ELEMENT (DIR|MENU) - - (LI)+ -(%block)>
  574.     <!ATTLIST (DIR|MENU)
  575.         compact (compact) #IMPLIED>
  576. ]]>
  577.  
  578. <!--=================== Document Body =====================================-->
  579.  
  580. <!--
  581.     Note that multiple body sections are permitted and that you can specify
  582.     whether the section floats (as hitherto) or is fixed to one of the window
  583.     sides. How should the extent of fixed body sections be specified?
  584.  
  585.     The idea here is to allow authors to divide the browser window up into
  586.     one or more fixed panes which don't scroll with the rest of the document.
  587.     These can be used for navigation elements, for copyright and security
  588.     messages (e.g. company confidential) or for brand messages/icons.
  589. -->
  590.  
  591. <![ %HTML.Recommended [
  592.         <!ENTITY % body.content "(%heading|%block|HR|ADDRESS)*"
  593.         -- <h1>Heading</h1>
  594.            <p>Text ...
  595.                 is preferred to
  596.            <h1>Heading</h1>
  597.            Text ...
  598.         -->
  599. ]]>
  600.  
  601. <!ENTITY % body.content "(%heading | %text | %block | HR | ADDRESS)*">
  602.  
  603. <!ELEMENT BODY O O  %body.content>
  604. <!ATTLIST BODY
  605.         %attrs;
  606.         position (left|right|top|bottom|float) float
  607.         background %URI; #IMPLIED  -- texture tile for document background --
  608.         >
  609.  
  610. <!ELEMENT (%blockquote) - - %body.content>
  611. <!ATTLIST (%blockquote)
  612.         %attrs;
  613.         %needs; -- for control of text flow --
  614.         >
  615.  
  616. <!ENTITY % address.content "((%text;)* | P*)">
  617.  
  618. <!ELEMENT ADDRESS - - %address.content>
  619. <!ATTLIST ADDRESS
  620.         %attrs;
  621.         %needs; -- for control of text flow --
  622.         >
  623.  
  624. <!--================ Forms ===============================================-->
  625.  
  626. <!--
  627.     As HTML 2.0 plus a few extensions:
  628.  
  629.         a)  A RANGE control which varies between pair of values
  630.             specified with the size attribute, e.g. SIZE="1, 10"
  631.  
  632.         b)  FILE widget for uploading one or more files to a server
  633.  
  634.         c)  SCRIBBLE on image widget that sends the "ink" to the server
  635.  
  636.         d)  AUDIO widget for playing and recording audio samples
  637.  
  638.         e)  SUBMIT/RESET buttons can now be customised with an image.
  639.             This subsumes the IMAGE type which is now deprecated.
  640.  
  641.         f)  Graphical SELECTion menus are now supported, using
  642.             the new SHAPE attribute on OPTION elements.
  643.  
  644.     Further extensions are in the pipeline (e.g. table entry,
  645.     multiple data formats for textarea fields and client-side
  646.     scripts with custom widgets) but will have to wait until
  647.     the backlog of implementation work diminishes.
  648. -->
  649.  
  650. <!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>
  651. <!ATTLIST FORM
  652.         action %URI #REQUIRED
  653.         method (%HTTP-Method) GET
  654.         enctype %Content-Type; "application/x-www-form-urlencoded"
  655.         >
  656.  
  657. <![ %HTML.Deprecated [
  658.     <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET
  659.                    | RANGE | AUDIO | FILE | SCRIBBLE | HIDDEN | IMAGE)">
  660. ]]>
  661.  
  662. <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET
  663.                    | RANGE | AUDIO | FILE | SCRIBBLE | HIDDEN)">
  664.  
  665. <!ELEMENT INPUT - O EMPTY>
  666. <!ATTLIST INPUT
  667.         %attrs;
  668.         type %InputType TEXT
  669.         name  CDATA #IMPLIED     -- required for all but submit and reset --
  670.         value CDATA #IMPLIED
  671.         src   %URI  #IMPLIED     -- for fields with background images --
  672.         %url.link;               -- standard link attributes --
  673.         checked (checked) #IMPLIED -- for radio buttons and check boxes --
  674.         size CDATA #IMPLIED    -- like NUMBERS,
  675.                                   but delimited with comma, not space --
  676.         maxlength NUMBER #IMPLIED
  677.         align  (top|middle|bottom) top -- relative to baseline --
  678.         >
  679.  
  680. <!-- SRC, BASE and URN attributes added for graphical menus -->
  681.  
  682. <!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT)>
  683. <!ATTLIST SELECT
  684.         %attrs;
  685.         name CDATA #REQUIRED
  686.         size NUMBER #IMPLIED
  687.         multiple (multiple) #IMPLIED
  688.         src  %URI  #IMPLIED   -- for graphical selection menus --
  689.         %url.link;            -- standard link attributes --
  690.         >
  691.  
  692. <!ELEMENT OPTION - O (#PCDATA)>
  693. <!ATTLIST OPTION
  694.         %attrs;
  695.         selected (selected) #IMPLIED
  696.         value  CDATA  #IMPLIED -- default to element content --
  697.         shape %SHAPE; #IMPLIED -- for graphical selection menus --
  698.         >
  699.  
  700. <!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT)>
  701. <!ATTLIST TEXTAREA
  702.         %attrs;
  703.         name CDATA #REQUIRED
  704.         rows NUMBER #REQUIRED
  705.         cols NUMBER #REQUIRED
  706.         >
  707.  
  708. <!--======================= Captions ======================================-->
  709.  
  710. <!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
  711. <!ATTLIST CAPTION
  712.         %attrs;
  713.         align (top|bottom) #IMPLIED
  714.         >
  715. <!--======================= Tables ========================================-->
  716.  
  717. <!--
  718.     Tables and figures can be aligned in several ways:
  719.  
  720.     bleedleft   flush left with the left (window) border
  721.     left        flush left with the left text margin
  722.     center      centered (text flow is disabled for this mode)
  723.     right       flush right with the right text margin
  724.     bleedright  flush right with the right (window) border
  725.     justify     when applicable the table/figure should stretch
  726.                 to fill space between the text margins
  727.  
  728.     Note: text will flow around the table or figure if the browser
  729.     judges there is enough room and the alignment is not centered
  730.     or justified. The table or figure may itself be part of of the
  731.     text flow around some earlier figure. You can in this case use
  732.     the clear or needs attributes to move the new table or figure
  733.     down the page beyond the obstructing earlier figure. Similarly,
  734.     you can use the clear or needs attributes with other elements
  735.     such as headers and lists to move them further down the page.
  736. -->
  737.  
  738. <!ENTITY % block.align
  739.         "align  (bleedleft|left|center|right|bleedright|justify) center">
  740.  
  741. <!--
  742.     The HTML 3.0 table model has been chosen for its simplicity
  743.     and the ease in writing filters from common DTP packages.
  744.  
  745.     By default the table is automatically sized according to the
  746.     cell contents and the current window size. Specifying the columns
  747.     widths using the colspec attribute allows browsers to start
  748.     displaying the table without having to wait for last row.
  749.  
  750.     The colspec attribute is a list of column widths and alignment
  751.     specifications. The columns are listed from left to right with a
  752.     letter followed by a number, e.g. COLSPEC="L20C8L40". The letter
  753.     is L for left, C for center and R for right alignment of cell
  754.     contents. The number specifies the width in em's, pixels or as
  755.     a fractional value of the table width, as according to the
  756.     associated units attribute. This approach is more compact than
  757.     used with most SGML table models and chosen to speed hand entry.
  758.  
  759.     To assist with rendering to speech, row and column headers
  760.     can be given short names using the AXIS attribute. The AXES
  761.     attribute is used to explicitly specify the row and column
  762.     names for use with each cell. Otherwise browsers can follow
  763.     up columns and left along rows (right for some languages)
  764.     to find the corresponding header cells.
  765.  
  766.     Table content model: To avoid wide cells, Braille needs some
  767.     kind of note element. The cell content is moved to a note,
  768.     and a reference to this is placed in the cell in question.
  769.     Couldn't we just use foot notes (FN) here?
  770.  
  771.     To assist with formatting tables to paged media, we probably
  772.     want to differentiate leading and trailing rows that are to
  773.     be duplicated when splitting tables across page boundaries.
  774.     A possible content model is:
  775.  
  776.     <!ELEMENT TABLE - - (CAPTION?, (TR* | (THEAD, TBODY, TFOOT?)))>
  777.     <!ELEMENT (THEAD|TFOOT) - O TR*>
  778.     
  779.     Conventional scrolling browsers simply ignore THEAD and TFOOT.
  780.     Paged browsers insert TFOOT rows at the bottom of the current
  781.     page and THEAD rows at the top of the new page, followed by the
  782.     remaining rows from TBODY.
  783. -->
  784.  
  785. <!ELEMENT TABLE - - (CAPTION?, TR*) -- mixed headers and data -->
  786. <!ATTLIST TABLE
  787.         %attrs;
  788.         border (border) #IMPLIED -- draw borders --
  789.         colspec CDATA   #IMPLIED -- column widths and alignment --
  790.         units  (em|pixels|relative) em -- units for column widths --
  791.         %block.align;  -- horizontal alignment --
  792.         %needs; -- for control of text flow --
  793.         >
  794.  
  795. <!ENTITY % cell "TH | TD">
  796.  
  797. <!--
  798.     Browsers should tolerate an omission of the first <TR>
  799.     tag as it is implied by the context. Missing trailing
  800.     <TR>s implied by rowspans should be ignored.
  801.  
  802.     The alignment attributes act as defaults for rows
  803.     overriding the colspec attribute and being in turn
  804.     overridden by alignment attributes on cell elements.
  805. -->
  806.  
  807. <!ELEMENT TR - O (%cell)* -- acts like row separator -->
  808. <!ATTLIST TR
  809.         %attrs;
  810.         align  (left|center|right|justify) #IMPLIED
  811.         valign (top|middle|bottom) top -- vertical alignment -->
  812.  
  813. <!--
  814.     Note that table cells can include nested tables.
  815.     Missing cells are considered to be empty, while
  816.     missing rows should be ignored.
  817. -->
  818.  
  819. <!ELEMENT (%cell) - O %body.content>
  820. <!ATTLIST (%cell)
  821.         %attrs;
  822.         colspan NUMBER    1      -- columns spanned --
  823.         rowspan NUMBER    1      -- rows spanned --
  824.         align  (left|center|right|justify) #IMPLIED
  825.         valign (top|middle|bottom) top -- vertical alignment --
  826.         nowrap (nowrap) #IMPLIED -- don't wrap words --
  827.         axis CDATA #IMPLIED -- axis name, defaults to element content --
  828.         axes CDATA #IMPLIED -- comma separated list of axis names --
  829.         >
  830.  
  831. <!--====================== Figures ========================================-->
  832.  
  833. <!--
  834.   The element contains text for use in non-graphical displays. Note that
  835.   you can use the shape attribute in anchors to specify hotzones on images.
  836.   This provides for local processing of pointer clicks and a unified method
  837.   for dealing with graphical and non-graphical displays.
  838.  
  839.   Text is flowed around figures when the figure is left or right aligned.
  840.   You can request the browser to move down until there is enough room for
  841.   the next element, see the CLEAR and NEED attributes (in %needs)
  842.  
  843.   Figures offer a path towards embedding arbitrary information formats
  844.   via some kind of OLE/OpenDoc mechanism.
  845. -->
  846.  
  847. <!ELEMENT FIG - - (OVERLAY*, CAPTION?, %flow;)>
  848. <!ATTLIST FIG
  849.         %attrs;
  850.         %needs;                  -- for control of text flow --
  851.         src  %URI;  #REQUIRED    -- URI of document to embed --
  852.         %url.link;               -- standard link attributes --
  853.         %block.align;            -- horizontal alignment --
  854.         width  NUMBER #IMPLIED   -- desired width in units --
  855.         height NUMBER #IMPLIED   -- desired height in units --
  856.         hspace NUMBER #IMPLIED   -- whitespace above/below fig in units --
  857.         vspace NUMBER #IMPLIED   -- whitespace to left/right in units --
  858.         ismap (ismap) #IMPLIED   -- pass clicks to server --
  859.         units (em|pixels) pixels -- specifies units as em's or pixels --
  860.         >
  861.  
  862. <!--
  863.     Figure overlays can be drawn immediately or held in a
  864.     sequence for subsequent display. When combined with local
  865.     caching, overlays provide a cheap way of modifying a larger
  866.     base image sent as part of a previous page.
  867. -->
  868.  
  869. <!ELEMENT OVERLAY - O EMPTY -- image overlay -->
  870. <!ATTLIST OVERLAY
  871.         seq    NUMBER    0       -- display order, 0 is immediate --
  872.         src  %URI;  #REQUIRED    -- URI of image overlay --
  873.         %url.link;               -- standard link attributes --
  874.         x      %FLOAT;   0       -- offset (0 - 1.0) from left --
  875.         y      %FLOAT;   0       -- offset (0 - 1.0) from top --
  876.         width  NUMBER #IMPLIED   -- desired width in units --
  877.         height NUMBER #IMPLIED   -- desired height in units --
  878.         units (em|pixels) pixels -- specifies units as em's or pixels --
  879.         ismap (ismap) #IMPLIED   -- pass clicks to server --
  880.         >
  881. <!--======================== Notes ========================================-->
  882.  
  883. <!ELEMENT NOTE - - %flow; -- admonishment -->
  884. <!ATTLIST NOTE
  885.         %attrs;
  886.         src %URI;   #IMPLIED  -- URI of custom graphic --
  887.         %url.link;            -- standard link attributes --
  888.         role (Simple|Note|Caution|Warning) Simple
  889.         %needs; -- for control of text flow --
  890.         >
  891.  
  892. <!--======================== Math  ========================================-->
  893.  
  894. <!-- Use     etc for greater control of spacing. -->
  895.  
  896. <!-- Subscripts and Superscripts
  897.  
  898.   <SUB> and <SUP> are used for subscripts and superscripts.
  899.  
  900.                                           i j
  901.       X <SUP>i</SUP>Y<SUP>j</SUP>  is   X  Y
  902.  
  903.   i.e. the space following the X disambiguates the binding.
  904.   The align attribute can be used for horizontal alignment,
  905.   e.g. to explicitly place an index above an element:
  906.                                               i
  907.         X<sup align=center>i</sup>  produces  X
  908.  
  909. Short references are defined for superscripts, subscripts and boxes
  910. to save typing when manually editing HTML math, e.g.
  911.  
  912.       x^2^    is mapped to   x<sup>2</sup>
  913.       y_z_    is mapped to   y<sub>z</sub>
  914.       {a+b}   is mapped to   <box>a + b</box>
  915.  
  916. Note that these only apply within the MATH element and can't be
  917. used in normal text!
  918. -->
  919. <!ENTITY REF1   STARTTAG   "SUP">
  920. <!ENTITY REF2   ENDTAG     "SUP">
  921. <!ENTITY REF3   STARTTAG   "SUB">
  922. <!ENTITY REF4   ENDTAG     "SUB">
  923. <!ENTITY REF5   STARTTAG   "BOX">
  924. <!ENTITY REF6   ENDTAG     "BOX">
  925.  
  926. <!USEMAP MAP1   MATH>
  927. <!USEMAP MAP2   SUP>
  928. <!USEMAP MAP3   SUB>
  929. <!USEMAP MAP4   BOX>
  930.  
  931. <!SHORTREF MAP1 "^" REF1
  932.                 "_" REF3
  933.                 "{" REF5 >
  934.  
  935. <!SHORTREF MAP2 "^" REF2
  936.                 "_" REF3
  937.                 "{" REF5 >
  938.  
  939. <!SHORTREF MAP3 "_" REF4
  940.                 "^" REF1
  941.                 "{" REF5 >
  942.  
  943. <!SHORTREF MAP4 "}" REF6
  944.                 "^" REF1
  945.                 "_" REF3
  946.                 "{" REF5 >
  947.  
  948. <!--
  949.  The inclusion of %formula and exclusion of %text is used here
  950.  to alter the content model for the SUB and SUP elements so as
  951.  to limit them to formulae rather than general text elements.
  952.  Special entities %math and %notmath are needed to avoid attempting
  953.  to include and exclude the same elements (or #PCDATA).
  954. -->
  955.  
  956. <!ENTITY % math "BOX|ABOVE|BELOW|ROOT|ARRAY|SUB|SUP">
  957. <!ENTITY % formula "#PCDATA|%math">
  958.  
  959. <!ELEMENT MATH - - (#PCDATA)* -(%notmath) +(%math)>
  960. <!ATTLIST MATH
  961.         id      ID      #IMPLIED
  962.         model   CDATA   #IMPLIED>
  963.  
  964. <!-- The BOX element acts as brackets. Delimiters are optional and
  965.      stretch to match the height of the box. The OVER element is used
  966.      when you want a line between numerator and denominator. This line
  967.      is suppressed with the alternative ATOP element.
  968.  
  969.                                     1 + X
  970.      <BOX>1 + X<OVER>Y</BOX>  is   _______
  971.                                       Y
  972.  
  973.                                        a + b
  974.      <BOX>a + b<ATOP>c - d</BOX> is  
  975.                                        c - d
  976.  
  977.      <BOX delim="(]">a</BOX>  is   (a]
  978.  
  979.      <BOX delim="|| ||">a</BOX>   is   || a ||
  980.  
  981.      The delimiters are represented using the LEFT and RIGHT
  982.      elements as in:
  983.  
  984.      <BOX>[<LEFT>x + y<RIGHT>]</BOX> is  [ x + y ]
  985.  
  986.      This is useful with definite integrals when you want the integral
  987.      sign to stretch to match the integrand, e.g.
  988.  
  989.      <BOX>∫<SUB>0</SUB><SUP>N</SUP><LEFT>f(x) dx</BOX>
  990.  
  991.      Note the complex content model for BOX is a work around
  992.      for the absence of support by SGML for infix operators.
  993.  
  994.      You can get oversize delimiters with the SIZE attribute.
  995. -->
  996.  
  997. <!ELEMENT BOX - - ((%formula)*, (LEFT, (%formula)*)?,
  998.                    ((OVER|ATOP), (%formula)*)?,
  999.                    (RIGHT, (%formula)*)?)>
  1000. <!ATTLIST BOX
  1001.         delim CDATA #IMPLIED -- optional stretchy delimiters --
  1002.         size  (normal|medium|large|huge) normal -- oversize delims -->
  1003.  
  1004. <!ELEMENT (OVER|ATOP|LEFT|RIGHT) - O EMPTY>
  1005. <!ATTLIST OVER symbol ENTITY #IMPLIED>
  1006.  
  1007. <!-- Horizontal line drawn ABOVE contents
  1008.      The symbol attribute allows authors to 
  1009.      supply an entity name for an arrow symbol etc.
  1010.  -->
  1011.  
  1012. <!ELEMENT ABOVE - - (%formula)+>
  1013. <!ATTLIST ABOVE symbol ENTITY #IMPLIED>
  1014.  
  1015. <!-- Horizontal line drawn BELOW contents
  1016.      The symbol attribute allows authors to 
  1017.      supply an entity name for an arrow symbol etc.
  1018.  -->
  1019.  
  1020. <!ELEMENT BELOW - - (%formula)+>
  1021. <!ATTLIST BELOW symbol ENTITY #IMPLIED>
  1022.  
  1023. <!-- Roots - default to square root. This model may be
  1024.      extended in future to use explicit radix and radicand
  1025.      elements, to allow markup to be used within the radix -->
  1026.  
  1027. <!ELEMENT ROOT - - (%formula)*>
  1028. <!ATTLIST ROOT root CDATA #IMPLIED -- e.g. "3" for cube root -->
  1029.  
  1030. <!-- LaTeX like arrays. The coldef attribute specifies
  1031.      a single letter for each column, which also determines
  1032.      how the column should be aligned, e.g. coldef"=ccc"
  1033.  
  1034.         "l"     left
  1035.         "c"     center
  1036.         "r"     right
  1037.  
  1038.      The DELIM attribute behaves the same as for BOX.
  1039.      When the LABELS attribute is present, the array
  1040.      is displayed with the first row and the first
  1041.      column as labels displaced from the other elements.
  1042.      In this case, the first element of the first row
  1043.      should normally be left blank.
  1044.  
  1045.      Use &vdots; &vdots; and &ddots; for vertical, horizontal
  1046.      and diagonal ellipsis dots. Use &dotfill; to fill an array
  1047.      cell with horizontal dots.
  1048. -->
  1049.  
  1050. <!ELEMENT ARRAY - - (AROW)+>
  1051. <!ATTLIST ARRAY
  1052.         coldef CDATA #REQUIRED
  1053.         delim CDATA #IMPLIED -- optional stretchy delimiters --
  1054.         labels (labels) #IMPLIED -- TeX's \bordermatrix style -->
  1055.  
  1056. <!ELEMENT AROW - O (ITEM)*>
  1057. <!ELEMENT ITEM - O (%formula)*>
  1058. <!ATTLIST ITEM
  1059.         align   CDATA  #IMPLIED  -- overide coldef alignment --
  1060.         colspan NUMBER 1         -- merge columns as per TABLE --
  1061.         rowspan NUMBER 1         -- merge rows as per TABLE -->
  1062.  
  1063. <!--================ Document Head ========================================-->
  1064.  
  1065. <![ %HTML.Deprecated [
  1066.     <!ENTITY % head.nextid "& NEXTID?">
  1067. ]]>
  1068.  
  1069. <!ENTITY % head.nextid "">
  1070.  
  1071. <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLES?
  1072.                               & META* & LINK* %head.nextid">
  1073.  
  1074. <!ELEMENT HEAD O O  (%head.content)>
  1075.  
  1076. <!ELEMENT LINK - O EMPTY>
  1077. <!ATTLIST LINK
  1078.         href %URI #REQUIRED
  1079.         %linkExtraAttributes; >
  1080.  
  1081. <!ELEMENT ISINDEX - O EMPTY>
  1082. <!ATTLIST ISINDEX
  1083.         href   %URI  #IMPLIED -- server handling queries --
  1084.         prompt CDATA #IMPLIED -- prompt message -->
  1085.  
  1086. <!--
  1087.     Relative references reduce the maintenance burden when moving
  1088.     a set of related nodes to a new location. This isn't quite
  1089.     enough though, as sometimes you will want to move say the
  1090.     html nodes, but not the image nodes. In such cases, you would
  1091.     be forced to alter each of the links to the images. What is
  1092.     needed is a way of explicitly stating a scope for resolving
  1093.     a group of relative links. The BASE element has been extended
  1094.     to allow its use in defining multiple scopes.
  1095.  
  1096.     <BASE id=images "http://foo.com/images">
  1097.     ...
  1098.     <IMG SRC="bar.gif" base=images>
  1099. -->
  1100.  
  1101. <!ELEMENT BASE - O EMPTY>
  1102. <!ATTLIST BASE
  1103.         id   ID    #IMPLIED
  1104.         href %URI; #REQUIRED
  1105.         >
  1106.  
  1107. <![ %HTML.Deprecated [
  1108.     <!ELEMENT NEXTID - O EMPTY>
  1109.     <!ATTLIST NEXTID N CDATA #REQUIRED>
  1110. ]]>
  1111.  
  1112. <!ELEMENT META - O EMPTY    -- Generic Metainformation -->
  1113. <!ATTLIST META
  1114.         http-equiv  NAME    #IMPLIED  -- HTTP response header name  --
  1115.         name        NAME    #IMPLIED  -- metainformation name       --
  1116.         content     CDATA   #REQUIRED -- associated information     --
  1117.         >
  1118.  
  1119. <!--
  1120.     A style sheet can be associated with the document using the
  1121.     LINK element, e.g. <LINK rel=stylesheet href="housestyle.dsssl">.
  1122.     Style overrides can be placed in the document head using the
  1123.     STYLES element, e.g.
  1124.  
  1125.         <styles notation=dsssl-lite>
  1126.            <style id=bigcaps>(dsssl-lite-stuff)
  1127.            <style id=para17>(more dsssl-lite-stuff)
  1128.         </styles>
  1129.  
  1130.     Later on in the document you can use:
  1131.  
  1132.         <h2 style=bigcaps>Header with bigger than normal capitals</h2>
  1133.         <p style=para17>A paragraph with a unique style of its own
  1134.         ...
  1135. -->
  1136.  
  1137. <!ENTITY % style-notations "dsssl-lite">
  1138. <!NOTATION dsssl-lite PUBLIC "-//ISO//DSSSL Lite ??//EN//">
  1139.  
  1140. <!ELEMENT STYLES - - (STYLE*)>
  1141. <!ATTLIST STYLES
  1142.     notation NOTATION (%style-notations;) #REQUIRED
  1143. >
  1144.  
  1145. <!ELEMENT STYLE - O (#PCDATA)>
  1146. <!ATTLIST STYLE id NMTOKEN #REQUIRED>
  1147.  
  1148. <!--================ Document Structure ===================================-->
  1149.  
  1150. <!ENTITY % html.content "HEAD, BODY+">
  1151.  
  1152. <!ELEMENT HTML O O  (%html.content)>
  1153. <!ENTITY % version.attr 'VERSION CDATA #FIXED "%HTML.Version;"'>
  1154.  
  1155. <!-- suggested roles are: TOC, DOC, DOCPART, HITLIST, DIALOG -->
  1156.  
  1157. <!ATTLIST HTML
  1158.         %version.attr;-- report DTD version to application --
  1159.         urn  CDATA   #IMPLIED  -- Universal resource name for this document --
  1160.         role NMTOKEN #IMPLIED  -- role of this document, eg table of contents --
  1161.         >
  1162.  
  1163. <!-- The END -->
  1164. ]>
  1165.