blob: c20077ebbfc4a20198947f7b7039320c578ab48a [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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 -->
<!-- =============================================================== -->