home *** CD-ROM | disk | FTP | other *** search
- <!--
- Copyright 1999-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <!-- ===================================================================
-
- Apache Documentation DTD (Version 1.0)
-
- PURPOSE:
- This DTD was developed to create a simple yet powerful document
- type for software documentation for use with the Apache projects.
- It is an XML-compliant DTD and it's maintained by the Apache XML
- project.
-
- TYPICAL INVOCATION:
-
- <!DOCTYPE document PUBLIC
- "-//APACHE//DTD Documentation Vx.yz//EN"
- "document-vxyz.dtd">
-
- where
-
- x := major version
- y := minor version
- z := status identifier (optional)
-
- NOTES:
- Many of the design patterns used in this DTD were take from the
- W3C XML Specification DTD edited by Eve Maler <elm@arbortext.com>.
-
- Where possible, great care has been used to reutilize HTML tag
- names to reduce learning efforts and to allow HTML editors to be
- used for complex authorings like tables and lists.
-
- FIXME:
- - how can we include char entities without hardwiring them?
- - should "form" tags be included?
- - should all style-free HTML 4.0 markup tags be included?
- - how do we handle the idea of "soft" xlinks?
- - should we add "soft" links to images?
-
- CHANGE HISTORY:
- 19991121 Initial version. (SM)
- 19991123 Replaced "res" with more standard "strong" for emphasis. (SM)
- 19991124 Added "fork" element for window forking behavior. (SM)
- 19991124 Added "img-inline" element to separate from "img". (SM)
- 19991129 Removed "affiliation" from "author". (SM)
- 19991129 Made "author" empty and moved "name|email" as attributes. (SM)
- 19991215 Simplified table section. (SM)
- 19991215 Changed "img-block" in more friendly "figure". (SM)
- 20000125 Added the "icon" image. (SM)
- 20000126 Allowed "anchor" in all levels. (SM)
- 20000404 Removed the "role" attribute from common-xxx.att. (SM)
- 20000815 Allowed "code" inside "strong" and "em". (SM)
- 20020223 Allowed "figure" at section level (SM)
-
- ==================================================================== -->
- <!-- =============================================================== -->
- <!-- Common character entities (included from external file) -->
- <!-- =============================================================== -->
- <!-- FIXME (SM): this is hardcoding. Find a better way of doing this
- possibly using public identifiers of ISO latin char sets -->
- <!ENTITY % charEntity SYSTEM "characters.ent">
- %charEntity;
- <!-- =============================================================== -->
- <!-- Userful entitieis for increased DTD readability -->
- <!-- =============================================================== -->
- <!ENTITY % text "#PCDATA">
- <!-- =============================================================== -->
- <!-- Entities for general XML compliance -->
- <!-- =============================================================== -->
- <!-- Common attributes
- Every element has an ID attribute (sometimes required,
- but usually optional) for links. %common.att;
- is for common attributes where the ID is optional, and
- %common-idreq.att; is for common attributes where the
- ID is required.
- -->
- <!ENTITY % common.att 'id ID #IMPLIED
- xml:lang NMTOKEN #IMPLIED'>
- <!ENTITY % common-idreq.att 'id ID #REQUIRED
- xml:lang NMTOKEN #IMPLIED'>
- <!-- xml:space attribute ===============================================
- Indicates that the element contains white space
- that the formatter or other application should retain,
- as appropriate to its function.
- ==================================================================== -->
- <!ENTITY % xmlspace.att 'xml:space (default|preserve) #FIXED "preserve"'>
- <!-- def attribute =====================================================
- Points to the element where the relevant definition can be
- found, using the IDREF mechanism. %def.att; is for optional
- def attributes, and %def-req.att; is for required def
- attributes.
- ==================================================================== -->
- <!ENTITY % def.att 'def IDREF #IMPLIED'>
- <!ENTITY % def-req.att 'def IDREF #REQUIRED'>
- <!-- ref attribute =====================================================
- Points to the element where more information can be found,
- using the IDREF mechanism. %ref.att; is for optional
- ref attributes, and %ref-req.att; is for required ref
- attributes.
- ================================================================== -->
- <!ENTITY % ref.att 'ref IDREF #IMPLIED'>
- <!ENTITY % ref-req.att 'ref IDREF #REQUIRED'>
- <!-- =============================================================== -->
- <!-- Entities for XLink compliance -->
- <!-- =============================================================== -->
- <!ENTITY % xlink-simple.att 'type (simple|extended|locator|arc) #FIXED "simple"
- href CDATA #IMPLIED
- role CDATA #IMPLIED
- title CDATA #IMPLIED '>
- <!-- 'xmlns CDATA #FIXED "http://www.w3.org/XML/XLink/0.9" -->
- <!-- FIXME: brain-dead IE5 has broken support for
- namespace validation and since I use it for editing
- I remove this for now -->
- <!ENTITY % xlink-user-replace.att 'show (new|parsed|replace) #FIXED "replace"
- actuate (user|auto) #FIXED "user" '>
- <!ENTITY % xlink-user-new.att 'show (new|parsed|replace) #FIXED "new"
- actuate (user|auto) #FIXED "user" '>
- <!ENTITY % xlink-auto-parsed.att 'show (new|parsed|replace) #FIXED "parsed"
- actuate (user|auto) #FIXED "auto" '>
- <!-- FIXME (SM): XLink doesn't yet cover the idea of soft links so
- introducing it here using the same namespace is _somewhat_
- illegal. Should we create it own namespace?
- -->
- <!ENTITY % xlink-soft.att 'mode (hard|soft) #FIXED "soft" '>
- <!-- =============================================================== -->
- <!-- Entities for general usage -->
- <!-- =============================================================== -->
- <!-- Key attribute =====================================================
- Optionally provides a sorting or indexing key, for cases when
- the element content is inappropriate for this purpose.
- ==================================================================== -->
- <!ENTITY % key.att 'key CDATA #IMPLIED'>
- <!-- Title attributes ==================================================
- Indicates that the element requires to have a title.
- ==================================================================== -->
- <!ENTITY % title.att 'title CDATA #REQUIRED'>
- <!-- Name attributes ==================================================
- Indicates that the element requires to have a name.
- ==================================================================== -->
- <!ENTITY % name.att 'name CDATA #REQUIRED'>
- <!-- Email attributes ==================================================
- Indicates that the element requires to have an email.
- ==================================================================== -->
- <!ENTITY % email.att 'email CDATA #REQUIRED'>
- <!-- =============================================================== -->
- <!-- General definitions -->
- <!-- =============================================================== -->
- <!-- A person is a general human entity -->
- <!ELEMENT person EMPTY>
- <!ATTLIST person
- %common.att;
- %name.att;
- %email.att;
- >
- <!-- =============================================================== -->
- <!-- Content definitions -->
- <!-- =============================================================== -->
- <!ENTITY % local.content.mix "">
- <!ENTITY % markup "strong|em|code|sub|sup">
- <!ENTITY % links "link|connect|jump|fork|anchor">
- <!ENTITY % special "br|img|icon">
- <!ENTITY % link-content.mix "%text;|%markup;|%special;%local.content.mix;">
- <!ENTITY % content.mix "%link-content.mix;|%links;">
- <!-- ==================================================== -->
- <!-- Phrase Markup -->
- <!-- ==================================================== -->
- <!-- Code (typically monospaced) -->
- <!ELEMENT code (%text;)>
- <!ATTLIST code
- %common.att;
- >
- <!-- Strong (typically bold) -->
- <!ELEMENT strong (%text; | code)*>
- <!ATTLIST strong
- %common.att;
- >
- <!-- Emphasis (typically italic) -->
- <!ELEMENT em (%text; | code)*>
- <!ATTLIST em
- %common.att;
- >
- <!-- Superscript (typically smaller and higher) -->
- <!ELEMENT sup (%text;)>
- <!ATTLIST sup
- %common.att;
- >
- <!-- Subscript (typically smaller and lower) -->
- <!ELEMENT sub (%text;)>
- <!ATTLIST sub
- %common.att;
- >
- <!-- FIXME (SM): should we add these HTML 4.0 markups
- which are style-free?
-
- -dfn
- -samp
- -kbd
- -var
- -cite
- -abbr
- -acronym
-
- -->
- <!-- ==================================================== -->
- <!-- Hypertextual Links -->
- <!-- ==================================================== -->
- <!-- hard replacing link (equivalent of <a ...>) -->
- <!ELEMENT link (%link-content.mix;)*>
- <!ATTLIST link
- %common.att;
- %xlink-simple.att;
- %xlink-user-replace.att;
- >
- <!-- Hard window replacing link (equivalent of <a ... target="_top">) -->
- <!ELEMENT jump (%link-content.mix;)*>
- <!ATTLIST jump
- %common.att;
- %xlink-simple.att;
- %xlink-user-new.att;
- >
- <!-- Hard window forking link (equivalent of <a ... target="_new">) -->
- <!ELEMENT fork (%link-content.mix;)*>
- <!ATTLIST fork
- %common.att;
- %xlink-simple.att;
- %xlink-user-new.att;
- >
- <!-- Anchor point (equivalent of <a name="...">) -->
- <!ELEMENT anchor EMPTY>
- <!ATTLIST anchor
- %common-idreq.att;
- >
- <!-- Soft link between processed pages (no equivalent in HTML) -->
- <!ELEMENT connect (%link-content.mix;)*>
- <!ATTLIST connect
- %common.att;
- %xlink-simple.att;
- %xlink-user-replace.att;
- %xlink-soft.att;
- >
- <!-- ==================================================== -->
- <!-- Specials -->
- <!-- ==================================================== -->
- <!-- Breakline Object (typically forces line break) -->
- <!ELEMENT br EMPTY>
- <!ATTLIST br
- %common.att;
- >
- <!-- Image Object (typically an inlined image) -->
- <!-- FIXME (SM): should we have the notion of soft links even here
- for inlined objects? -->
- <!ELEMENT img EMPTY>
- <!ATTLIST img
- src CDATA #REQUIRED
- alt CDATA #REQUIRED
- height CDATA #IMPLIED
- width CDATA #IMPLIED
- usemap CDATA #IMPLIED
- ismap (ismap) #IMPLIED
- %common.att;
- >
- <!-- Image Icon (typically an inlined image placed as graphical item) -->
- <!-- FIXME (SM): should we have the notion of soft links even here
- for inlined objects? -->
- <!ELEMENT icon EMPTY>
- <!ATTLIST icon
- src CDATA #REQUIRED
- alt CDATA #REQUIRED
- height CDATA #IMPLIED
- width CDATA #IMPLIED
- %common.att;
- >
- <!-- =============================================================== -->
- <!-- Blocks definitions -->
- <!-- =============================================================== -->
- <!ENTITY % local.blocks "">
- <!ENTITY % local.lists "">
- <!ENTITY % paragraphs "p|source|note|fixme|figure">
- <!ENTITY % tables "table">
- <!ENTITY % lists "ol|ul|sl|dl %local.lists;">
- <!ENTITY % blocks "anchor|%paragraphs;|%tables;|%lists; %local.blocks;">
- <!-- ==================================================== -->
- <!-- Paragraphs -->
- <!-- ==================================================== -->
- <!-- Text Paragraph (normally vertically space delimited) -->
- <!ELEMENT p (%content.mix;)*>
- <!ATTLIST p
- %common.att;
- >
- <!-- Source Paragraph (normally space is preserved) -->
- <!ELEMENT source (%content.mix;)*>
- <!ATTLIST source
- %common.att;
- %xmlspace.att;
- >
- <!-- Note Paragraph (normally shown encapsulated) -->
- <!ELEMENT note (%content.mix;)*>
- <!ATTLIST note
- %common.att;
- >
- <!-- Fixme Paragraph (normally not shown) -->
- <!ELEMENT fixme (%content.mix;)*>
- <!-- the "author" attribute should match the "key" attribute of the
- <author> element -->
- <!ATTLIST fixme
- author CDATA #REQUIRED
- %common.att;
- >
- <!-- ==================================================== -->
- <!-- Tables -->
- <!-- ==================================================== -->
- <!-- Attributes that indicate the spanning of the table cell -->
- <!ENTITY % cell.span 'colspan CDATA "1"
- rowspan CDATA "1"'>
- <!-- Table element -->
- <!ELEMENT table (caption?, tr+)>
- <!ATTLIST table
- %common.att;
- >
- <!-- The table title -->
- <!ELEMENT caption (%content.mix;)*>
- <!ATTLIST caption
- %common.att;
- >
- <!-- The table row element -->
- <!ELEMENT tr (th | td)+>
- <!ATTLIST tr
- %common.att;
- >
- <!-- The table row header element -->
- <!ELEMENT th (%content.mix;)*>
- <!ATTLIST th
- %common.att;
- %cell.span;
- >
- <!-- The table row description element -->
- <!ELEMENT td (%content.mix;)*>
- <!ATTLIST td
- %common.att;
- %cell.span;
- >
- <!-- ==================================================== -->
- <!-- Lists -->
- <!-- ==================================================== -->
- <!-- Unordered list (typically bulleted) -->
- <!ELEMENT ul (li | %lists;)+>
- <!-- spacing attribute:
- Use "normal" to get normal vertical spacing for items;
- use "compact" to get less spacing. The default is dependent
- on the stylesheet. -->
- <!ATTLIST ul
- %common.att;
- spacing (normal | compact) #IMPLIED
- >
- <!-- Ordered list (typically numbered) -->
- <!ELEMENT ol (li | %lists;)+>
- <!-- spacing attribute:
- Use "normal" to get normal vertical spacing for items;
- use "compact" to get less spacing. The default is dependent
- on the stylesheet. -->
- <!ATTLIST ol
- %common.att;
- spacing (normal | compact) #IMPLIED
- >
- <!-- Simple list (typically with no mark) -->
- <!ELEMENT sl (li | %lists;)+>
- <!ATTLIST sl
- %common.att;
- >
- <!-- List item -->
- <!ELEMENT li (%content.mix; | %lists;)*>
- <!ATTLIST li
- %common.att;
- >
- <!-- Definition list (typically two-column) -->
- <!ELEMENT dl (dt, dd)+>
- <!ATTLIST dl
- %common.att;
- >
- <!-- Definition term -->
- <!ELEMENT dt (%content.mix;)*>
- <!ATTLIST dt
- %common.att;
- >
- <!-- Definition description -->
- <!ELEMENT dd (%content.mix;)*>
- <!ATTLIST dd
- %common.att;
- >
- <!-- ==================================================== -->
- <!-- Special Blocks -->
- <!-- ==================================================== -->
- <!-- Image Block (typically a separated and centered image) -->
- <!-- FIXME (SM): should we have the notion of soft links even here
- for inlined objects? -->
- <!ELEMENT figure EMPTY>
- <!ATTLIST figure
- src CDATA #REQUIRED
- alt CDATA #REQUIRED
- height CDATA #IMPLIED
- width CDATA #IMPLIED
- usemap CDATA #IMPLIED
- ismap (ismap) #IMPLIED
- %common.att;
- >
- <!-- =============================================================== -->
- <!-- Document -->
- <!-- =============================================================== -->
- <!ELEMENT document (header?, body, footer?)>
- <!ATTLIST document
- %common.att;
- >
- <!-- ==================================================== -->
- <!-- Header -->
- <!-- ==================================================== -->
- <!ENTITY % local.headers "">
- <!ELEMENT header (title, subtitle?, version?, type?, authors,
- notice*, abstract? %local.headers;)>
- <!ATTLIST header
- %common.att;
- >
- <!ELEMENT title (%text;)>
- <!ATTLIST title
- %common.att;
- >
- <!ELEMENT subtitle (%text;)>
- <!ATTLIST subtitle
- %common.att;
- >
- <!ELEMENT version (%text;)>
- <!ATTLIST version
- %common.att;
- >
- <!ELEMENT type (%text;)>
- <!ATTLIST type
- %common.att;
- >
- <!ELEMENT authors (person+)>
- <!ATTLIST authors
- %common.att;
- >
- <!ELEMENT notice (%content.mix;)*>
- <!ATTLIST notice
- %common.att;
- >
- <!ELEMENT abstract (%content.mix;)*>
- <!ATTLIST abstract
- %common.att;
- >
- <!-- ==================================================== -->
- <!-- Body -->
- <!-- ==================================================== -->
- <!ENTITY % local.sections "">
- <!ENTITY % sections "s1|anchor|figure %local.sections;">
- <!ELEMENT body (%sections;)+>
- <!ATTLIST body
- %common.att;
- >
- <!ELEMENT s1 (s2 | %blocks;)*>
- <!ATTLIST s1
- %title.att; %common.att;
- >
- <!ELEMENT s2 (s3 | %blocks;)*>
- <!ATTLIST s2
- %title.att; %common.att;
- >
- <!ELEMENT s3 (s4 | %blocks;)*>
- <!ATTLIST s3
- %title.att; %common.att;
- >
- <!ELEMENT s4 (%blocks;)*>
- <!ATTLIST s4
- %title.att; %common.att;
- >
- <!-- ==================================================== -->
- <!-- Footer -->
- <!-- ==================================================== -->
- <!ENTITY % local.footers "">
- <!ELEMENT footer (legal %local.footers;)>
- <!ELEMENT legal (%content.mix;)*>
- <!ATTLIST legal
- %common.att;
- >
- <!-- =============================================================== -->
- <!-- End of DTD -->
- <!-- =============================================================== -->
-