1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
6
<TITLE>AdaBrowse DTD 2.0</TITLE>
7
<META NAME="description" CONTENT="AdaBrowse DTD 2.0">
8
<LINK REL="stylesheet" HREF="gal.css" TYPE="text/css">
11
<BODY BGCOLOR="#FFFFF4">
13
<TABLE WIDTH="100%" BORDER=0 CELLSPACING=0 CELLPADDING=5 CLASS="title">
16
<H1 ALIGN="CENTER">AdaBrowse DTD 2.0</H1>
25
This file is part of <A HREF="adabrowse_ug.html">AdaBrowse</A>.
27
<STRONG>Copyright © 2002-2003 by Thomas Wolf.</STRONG>
29
AdaBrowse is free software; you can redistribute it and/or modify it
30
under the terms of the GNU General Public License as published by the
31
Free Software Foundation; either version 2, or (at your option) any
32
later version. AdaBrowse is distributed in the hope that it will be
33
useful, but <EM>without any warranty</EM>; without even the implied warranty
34
of <EM>merchantability or fitness for a particular purpose.</EM> See the GNU
35
General Public License for more details. You should have received a
36
copy of the GNU General Public License with this distribution, see file
37
"<A HREF="GPL.txt">GPL.txt</A>". If not, write to the
39
Free Software Foundation
40
59 Temple Place - Suite 330
44
<STRONG>Author:</STRONG>
47
<STRONG>Purpose:</STRONG>
48
XML 1.0 Document Type Definition for AdaBrowse XML files.
50
<STRONG>Version:</STRONG>
51
AdaBrowse DTD 2.0 (generated by <A HREF="adabrowse_ug.html">AdaBrowse</A> V4.0).
54
<A HREF="adabrowse_dtd_1_0.html">AdaBrowse DTD 1.0</A> generated by AdaBrowse 3.0 up to 3.3.
55
<A HREF="adabrowse_dtd_2.0.html">AdaBrowse DTD 1.1</A> generated by AdaBrowse 3.4 up to 3.4.2.
59
20-AUG-2002 TW Initial version.
60
28-AUG-2002 TW Corrections in cross-references.
61
30-MAY-2003 TW Added private attributes to UNIT and CHILD elements.
62
07-JUL-2003 TW Added indices.
65
<!ENTITY % <A NAME="pure">pure</A> "#PCDATA|<A HREF="#EL_KEYWORD">KEYWORD</A>|<A HREF="#EL_ATTRIBUTE">ATTRIBUTE</A>|<A HREF="#EL_XREF">XREF</A>|<A HREF="#EL_LITERAL">LITERAL</A>" >
66
<!ENTITY % <A NAME="inline">inline</A> "%<A HREF="#pure">pure</A>;|<A HREF="#EL_ANCHOR">ANCHOR</A>|<A HREF="#EL_COMMENT">COMMENT</A>|<A HREF="#EL_CODE">CODE</A>" >
68
<!ENTITY % <A NAME="lib_no_container">lib_no_container</A>
73
A_PACKAGE_INSTANTIATION|
74
A_PROCEDURE_INSTANTIATION |
75
A_FUNCTION_INSTANTIATION |
77
A_PROCEDURE_RENAMING |
79
A_GENERIC_PACKAGE_RENAMING |
80
A_GENERIC_PROCEDURE_RENAMING |
81
A_GENERIC_FUNCTION_RENAMING" >
83
<!ENTITY % <A NAME="lib_container">lib_container</A>
86
A_GENERIC_SIGNATURE_PACKAGE" >
88
<!ENTITY % <A NAME="no_lib_no_container">no_lib_no_container</A>
98
AN_EXCEPTION_RENAMING |
100
A_PROTECTED_PROCEDURE |
101
A_PROTECTED_FUNCTION |
104
<!ENTITY % <A NAME="no_lib_container">no_lib_container</A>
108
A_PROTECTED_OBJECT" >
110
<!ENTITY % <A NAME="boolean">boolean</A>
113
<!ENTITY % <A NAME="lib">lib</A> "%<A HREF="#lib_no_container">lib_no_container</A>; | %<A HREF="#lib_container">lib_container</A>;" >
115
<!ENTITY % <A NAME="container">container</A> "%<A HREF="#lib_container">lib_container</A>; | %<A HREF="#no_lib_container">no_lib_container</A>;" >
117
<!ENTITY % <A NAME="no_container">no_container</A> "%<A HREF="#lib_no_container">lib_no_container</A>; | %<A HREF="#no_lib_no_container">no_lib_no_container</A>; | A_TASK_TYPE | A_TASK" >
118
<!-- Tasks and task types can also appear as items. -->
120
<!-- Inline elements -->
122
<!ELEMENT <A NAME="EL_KEYWORD">KEYWORD</A> (#PCDATA) >
124
<!ELEMENT <A NAME="EL_ATTRIBUTE">ATTRIBUTE</A> (#PCDATA) >
126
<!ELEMENT <A NAME="EL_LITERAL">LITERAL</A> (#PCDATA) >
128
<!ELEMENT <A NAME="EL_CODE">CODE</A> (%<A HREF="#inline">inline</A>;)* >
130
<!ELEMENT <A NAME="EL_XREF">XREF</A> (#PCDATA|<A HREF="#EL_LITERAL">LITERAL</A>|<A HREF="#EL_KEYWORD">KEYWORD</A>)* >
131
<!-- Actually, I'd like to specify that an XREF may contain either
132
PCDATA, or a LITERAL, or a KEYWORD. It cannot contain PCDATA with
133
interspersed LITERALs and KEYWORDs (which is what the above spec
134
really says). However, there is *no* way in XML 1.0 to specify this!
136
Literals and keywords are allowed within an XREF because of operators
137
such as "&" or "or". -->
139
<!ATTLIST <A HREF="#EL_XREF">XREF</A>
142
IS_TOP (%<A HREF="#boolean">boolean</A>;) "FALSE"
143
IS_LOCAL (%<A HREF="#boolean">boolean</A>;) "FALSE">
144
<!-- XREFs always contain the Unit, even if the cross-reference is local.
145
Local cross-references have IS_LOCAL="TRUE". Cross-references to
146
other compilation UNITs have IS_TOP="TRUE". -->
148
<!ELEMENT <A NAME="EL_ANCHOR">ANCHOR</A> (%<A HREF="#pure">pure</A>;)* >
149
<!ATTLIST <A HREF="#EL_ANCHOR">ANCHOR</A>
152
IS_TOP (%<A HREF="#boolean">boolean</A>;) "FALSE">
153
<!-- ANCHORs always are local, so Unit always will equal the Name of the
154
enclosing compilation UNIT. It is still explicitly repeated in each
155
anchor to facilitate processing: there's no need to go look up the
156
enclosing UNIT's name. Is_Top is TRUE only for the anchor on that
157
compilation unit's name. -->
159
<!-- Note: I briefly considered using attribute types ID and IDREF for
160
ANCHORS and XREFs, respectively. However, that wouldn't have worked,
161
for any IDREF must correspond to some ID in the XML; but our XML may
162
contain references to units in other files. -->
164
<!ELEMENT <A NAME="EL_COMMENT">COMMENT</A> (%<A HREF="#pure">pure</A>;|<A HREF="#EL_ANCHOR">ANCHOR</A>|<A HREF="#EL_CODE">CODE</A>)* >
165
<!-- Comments cannot be nested -->
167
<!-- Block elements -->
169
<!ELEMENT <A NAME="EL_UNIT">UNIT</A> (<A HREF="#EL_DEPENDENCIES">DEPENDENCIES</A>?, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?, (<A HREF="#EL_CONTAINER">CONTAINER</A>|<A HREF="#EL_ITEM">ITEM</A>)) >
170
<!ATTLIST <A HREF="#EL_UNIT">UNIT</A>
172
KIND (%<A HREF="#lib">lib</A>;) #REQUIRED
173
PRIVATE (%<A HREF="#boolean">boolean</A>;) "FALSE"
174
POS CDATA #IMPLIED>
175
<!-- Name and Kind of a UNIT can be used to generate indices. Pos can be
176
used for cross-reference purposes; it is the position on the unit's
177
CONTAINER's or ITEM's defining name. PRIVATE is "TRUE" if it's a
178
private compilation unit. -->
180
<!ELEMENT <A NAME="EL_ITEM">ITEM</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
181
<!ATTLIST <A HREF="#EL_ITEM">ITEM</A>
183
KIND (%<A HREF="#no_container">no_container</A>;) #IMPLIED
185
POS CDATA #IMPLIED>
186
<!-- Name and Kind of an Item can be used to generate indices. Unit and
187
Pos can be used for cross-reference purposes; it is the position on
188
the item's defining name. -->
190
<!ELEMENT <A NAME="EL_SNIPPET">SNIPPET</A> (<A HREF="#EL_LINE">LINE</A>)+ >
191
<!-- Used for code snippets. Implies <CODE> -->
193
<!ELEMENT <A NAME="EL_LINE">LINE</A> (%<A HREF="#inline">inline</A>;)* >
195
<!ELEMENT <A NAME="EL_DESCRIPTION">DESCRIPTION</A> (<A HREF="#EL_BLOCK">BLOCK</A>)+ >
196
<!ELEMENT <A NAME="EL_BLOCK">BLOCK</A> (<A HREF="#EL_LINE">LINE</A>)+ >
198
<!ELEMENT <A NAME="EL_DEPENDENCIES">DEPENDENCIES</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
200
<!ELEMENT <A NAME="EL_CONTAINER">CONTAINER</A> (<A HREF="#EL_HEADER">HEADER</A>, <A HREF="#EL_CONTENT">CONTENT</A>?, <A HREF="#EL_FOOTER">FOOTER</A>) >
201
<!ATTLIST <A HREF="#EL_CONTAINER">CONTAINER</A>
203
KIND (%<A HREF="#container">container</A>;) #IMPLIED
205
POS CDATA #IMPLIED>
206
<!-- Name and Kind of a CONTAINER can be used to generate indices. Unit and
207
Pos can be used for cross-reference purposes; it is the position on the
208
container's defining name. -->
210
<!ELEMENT <A NAME="EL_HEADER">HEADER</A> (<A HREF="#EL_LINE">LINE</A>)* >
212
<!ELEMENT <A NAME="EL_FOOTER">FOOTER</A> (<A HREF="#EL_LINE">LINE</A>)* >
214
<!ELEMENT <A NAME="EL_CONTENT">CONTENT</A> (<A HREF="#EL_TOP_ITEM">TOP_ITEM</A>?, <A HREF="#EL_CHILDREN">CHILDREN</A>?, <A HREF="#EL_EXCEPTIONS">EXCEPTIONS</A>?, <A HREF="#EL_TYPE_SUMMARY">TYPE_SUMMARY</A>?,
215
<A HREF="#EL_CONSTANTS">CONSTANTS</A>?, <A HREF="#EL_VARIABLES">VARIABLES</A>?, <A HREF="#EL_OTHERS">OTHERS</A>?, <A HREF="#EL_PRIVATE">PRIVATE</A>?) >
217
<!ELEMENT <A NAME="EL_TOP_ITEM">TOP_ITEM</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>?, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
219
<!ELEMENT <A NAME="EL_CHILDREN">CHILDREN</A> (<A HREF="#EL_CHILD">CHILD</A>)+ >
221
<!ELEMENT <A NAME="EL_CHILD">CHILD</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
222
<!-- Actually, I'd like to specify that a CHILD may contain either
223
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
224
(which is what the above spec really says). However, there is *no* way
225
in XML 1.0 to specify this! -->
227
<!ATTLIST <A HREF="#EL_CHILD">CHILD</A>
229
KIND (%<A HREF="#lib">lib</A>;) #IMPLIED
230
PRIVATE (%<A HREF="#boolean">boolean</A>;) "FALSE">
232
<!ELEMENT <A NAME="EL_PRIVATE">PRIVATE</A> EMPTY >
234
<!ELEMENT <A NAME="EL_EXCEPTIONS">EXCEPTIONS</A> (<A HREF="#EL_EXCEPTION">EXCEPTION</A>)+ >
236
<!ELEMENT <A NAME="EL_EXCEPTION">EXCEPTION</A> ((<A HREF="#EL_EXCEPTION_NAME">EXCEPTION_NAME</A>)+, <A HREF="#EL_EXCEPTION_RENAME">EXCEPTION_RENAME</A>?, <A HREF="#EL_ULTIMATE_EXCEPTION">ULTIMATE_EXCEPTION</A>?, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
238
<!ELEMENT <A NAME="EL_EXCEPTION_NAME">EXCEPTION_NAME</A> (#PCDATA|<A HREF="#EL_ANCHOR">ANCHOR</A>)* >
239
<!-- Actually, I'd like to specify that an EXCEPTION_NAME may contain either
240
PCDATA, or an ANCHOR. It cannot contain PCDATA with interspersed ANCHORDs
241
(which is what the above spec really says). However, there is *no* way in
242
XML 1.0 to specify this! -->
244
<!ELEMENT <A NAME="EL_EXCEPTION_RENAME">EXCEPTION_RENAME</A> (%<A HREF="#inline">inline</A>;)*>
246
<!ELEMENT <A NAME="EL_ULTIMATE_EXCEPTION">ULTIMATE_EXCEPTION</A> (%<A HREF="#inline">inline</A>;)*>
248
<!ELEMENT <A NAME="EL_OTHERS">OTHERS</A> (<A HREF="#EL_CONTAINER">CONTAINER</A>|<A HREF="#EL_ITEM">ITEM</A>|<A HREF="#EL_PRIVATE">PRIVATE</A>)+ >
250
<!ELEMENT <A NAME="EL_CONSTANTS">CONSTANTS</A> (<A HREF="#EL_ITEM">ITEM</A>)+ >
252
<!ELEMENT <A NAME="EL_VARIABLES">VARIABLES</A> (<A HREF="#EL_ITEM">ITEM</A>)+ >
254
<!ELEMENT <A NAME="EL_TYPE_SUMMARY">TYPE_SUMMARY</A> (<A HREF="#EL_TYPE">TYPE</A>)+ >
256
<!ELEMENT <A NAME="EL_TYPE">TYPE</A> (<A HREF="#EL_TYPE_NAME">TYPE_NAME</A>, <A HREF="#EL_TYPE_KIND">TYPE_KIND</A>?, <A HREF="#EL_PARENT_TYPE">PARENT_TYPE</A>?, <A HREF="#EL_OPERATIONS">OPERATIONS</A>?) >
258
<!ELEMENT <A NAME="EL_TYPE_NAME">TYPE_NAME</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
259
<!-- Actually, I'd like to specify that a TYPE_NAME may contain either
260
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
261
(which is what the above spec really says). However, there is *no* way
262
in XML 1.0 to specify this! -->
264
<!ELEMENT <A NAME="EL_TYPE_KIND">TYPE_KIND</A> (#PCDATA)>
266
<!ELEMENT <A NAME="EL_PARENT_TYPE">PARENT_TYPE</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
267
<!-- Actually, I'd like to specify that a PARENT_TYPE may contain either
268
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
269
(which is what the above spec really says). However, there is *no* way
270
in XML 1.0 to specify this! -->
272
<!ELEMENT <A NAME="EL_OPERATIONS">OPERATIONS</A> (<A HREF="#EL_OPLIST">OPLIST</A>)+ >
274
<!ELEMENT <A NAME="EL_OPLIST">OPLIST</A> (<A HREF="#EL_XREF">XREF</A>)+ >
275
<!ATTLIST <A HREF="#EL_OPLIST">OPLIST</A>
276
KIND (OVERRIDDEN|OWN|INHERITED) #REQUIRED>
278
<!-- Indices. New in V2.0 -->
280
<!ELEMENT <A NAME="EL_INDEX_ITEM">INDEX_ITEM</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
281
<!-- This time, the definition is actually correct. -->
283
<!ELEMENT <A NAME="EL_INDEX_SECTION">INDEX_SECTION</A> (<A HREF="#EL_INDEX_ITEM">INDEX_ITEM</A>)+ >
284
<!ATTLIST <A HREF="#EL_INDEX_SECTION">INDEX_SECTION</A>
285
NAME CDATA #REQUIRED>
286
<!-- The name is the single common starting character of all contained
289
<!ELEMENT <A NAME="EL_INDEX">INDEX</A> ((<A HREF="#EL_INDEX_SECTION">INDEX_SECTION</A>)+|(<A HREF="#EL_INDEX_ITEM">INDEX_ITEM</A>)*) >
290
<!ATTLIST <A HREF="#EL_INDEX">INDEX</A>
292
TITLE CDATA #REQUIRED>
294
<!-- Document root -->
296
<!ELEMENT <A NAME="EL_ADABROWSE">ADABROWSE</A> ((<A HREF="#EL_UNIT">UNIT</A>)+, (<A HREF="#EL_INDEX">INDEX</A>)*) >
302
<!--================================================================-->
303
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH="100%" CLASS="footer">
305
<TD WIDTH="100%" ALIGN="left" NOWRAP>
306
<FONT SIZE=-1>Copyright © 2002-2003 by Thomas Wolf. All rights
310
<FONT SIZE=-1>TW, Jul 07, 2003</FONT>