1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
6
<TITLE>AdaBrowse DTD 1.0</TITLE>
7
<META NAME="description" CONTENT="AdaBrowse DTD 1.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 1.0</H1>
25
This file is part of <A HREF="adabrowse_ug.html">AdaBrowse</A>.
27
<STRONG>Copyright © 2002 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 1.0 (generated by <A HREF="adabrowse_ug.html">AdaBrowse</A> 3.0 up to and including 3.3).
54
<A HREF="adabrowse_dtd_1_1.html">AdaBrowse DTD 1.1</A> generated by AdaBrowse 3.4 up to 3.4.2.
55
(The difference is minor; there's a new attribute PRIVATE for the UNIT and CHILD elements.)
56
<A HREF="adabrowse_dtd_2_0.html">AdaBrowse DTD 2.0</A> generated by AdaBrowse 4.0.
61
20-AUG-2002 TW Initial version.
62
28-AUG-2002 TW Corrections in cross-references.
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
POS CDATA #IMPLIED>
174
<!-- Name and Kind of a UNIT can be used to generate indices. Pos can be
175
used for cross-reference purposes; it is the position on the unit's
176
CONTAINER's or ITEM's defining name. -->
178
<!ELEMENT <A NAME="EL_ITEM">ITEM</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
179
<!ATTLIST <A HREF="#EL_ITEM">ITEM</A>
181
KIND (%<A HREF="#no_container">no_container</A>;) #IMPLIED
183
POS CDATA #IMPLIED>
184
<!-- Name and Kind of an Item can be used to generate indices. Unit and
185
Pos can be used for cross-reference purposes; it is the position on
186
the item's defining name. -->
188
<!ELEMENT <A NAME="EL_SNIPPET">SNIPPET</A> (<A HREF="#EL_LINE">LINE</A>)+ >
189
<!-- Used for code snippets. Implies <CODE> -->
191
<!ELEMENT <A NAME="EL_LINE">LINE</A> (%<A HREF="#inline">inline</A>;)* >
193
<!ELEMENT <A NAME="EL_DESCRIPTION">DESCRIPTION</A> (<A HREF="#EL_BLOCK">BLOCK</A>)+ >
194
<!ELEMENT <A NAME="EL_BLOCK">BLOCK</A> (<A HREF="#EL_LINE">LINE</A>)+ >
196
<!ELEMENT <A NAME="EL_DEPENDENCIES">DEPENDENCIES</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
198
<!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>) >
199
<!ATTLIST <A HREF="#EL_CONTAINER">CONTAINER</A>
201
KIND (%<A HREF="#container">container</A>;) #IMPLIED
203
POS CDATA #IMPLIED>
204
<!-- Name and Kind of a CONTAINER can be used to generate indices. Unit and
205
Pos can be used for cross-reference purposes; it is the position on the
206
container's defining name. -->
208
<!ELEMENT <A NAME="EL_HEADER">HEADER</A> (<A HREF="#EL_LINE">LINE</A>)* >
210
<!ELEMENT <A NAME="EL_FOOTER">FOOTER</A> (<A HREF="#EL_LINE">LINE</A>)* >
212
<!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>?,
213
<A HREF="#EL_CONSTANTS">CONSTANTS</A>?, <A HREF="#EL_VARIABLES">VARIABLES</A>?, <A HREF="#EL_OTHERS">OTHERS</A>?, <A HREF="#EL_PRIVATE">PRIVATE</A>?) >
215
<!ELEMENT <A NAME="EL_TOP_ITEM">TOP_ITEM</A> (<A HREF="#EL_SNIPPET">SNIPPET</A>?, <A HREF="#EL_DESCRIPTION">DESCRIPTION</A>?) >
217
<!ELEMENT <A NAME="EL_CHILDREN">CHILDREN</A> (<A HREF="#EL_CHILD">CHILD</A>)+ >
219
<!ELEMENT <A NAME="EL_CHILD">CHILD</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
220
<!-- Actually, I'd like to specify that a CHILD may contain either
221
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
222
(which is what the above spec really says). However, there is *no* way
223
in XML 1.0 to specify this! -->
225
<!ATTLIST <A HREF="#EL_CHILD">CHILD</A>
227
KIND (%<A HREF="#lib">lib</A>;) #IMPLIED>
229
<!ELEMENT <A NAME="EL_PRIVATE">PRIVATE</A> EMPTY >
231
<!ELEMENT <A NAME="EL_EXCEPTIONS">EXCEPTIONS</A> (<A HREF="#EL_EXCEPTION">EXCEPTION</A>)+ >
233
<!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>?) >
235
<!ELEMENT <A NAME="EL_EXCEPTION_NAME">EXCEPTION_NAME</A> (#PCDATA|<A HREF="#EL_ANCHOR">ANCHOR</A>)* >
236
<!-- Actually, I'd like to specify that an EXCEPTION_NAME may contain either
237
PCDATA, or an ANCHOR. It cannot contain PCDATA with interspersed ANCHORDs
238
(which is what the above spec really says). However, there is *no* way in
239
XML 1.0 to specify this! -->
241
<!ELEMENT <A NAME="EL_EXCEPTION_RENAME">EXCEPTION_RENAME</A> (%<A HREF="#inline">inline</A>;)*>
243
<!ELEMENT <A NAME="EL_ULTIMATE_EXCEPTION">ULTIMATE_EXCEPTION</A> (%<A HREF="#inline">inline</A>;)*>
245
<!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>)+ >
247
<!ELEMENT <A NAME="EL_CONSTANTS">CONSTANTS</A> (<A HREF="#EL_ITEM">ITEM</A>)+ >
249
<!ELEMENT <A NAME="EL_VARIABLES">VARIABLES</A> (<A HREF="#EL_ITEM">ITEM</A>)+ >
251
<!ELEMENT <A NAME="EL_TYPE_SUMMARY">TYPE_SUMMARY</A> (<A HREF="#EL_TYPE">TYPE</A>)+ >
253
<!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>?) >
255
<!ELEMENT <A NAME="EL_TYPE_NAME">TYPE_NAME</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
256
<!-- Actually, I'd like to specify that a TYPE_NAME may contain either
257
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
258
(which is what the above spec really says). However, there is *no* way
259
in XML 1.0 to specify this! -->
261
<!ELEMENT <A NAME="EL_TYPE_KIND">TYPE_KIND</A> (#PCDATA)>
263
<!ELEMENT <A NAME="EL_PARENT_TYPE">PARENT_TYPE</A> (#PCDATA|<A HREF="#EL_XREF">XREF</A>)* >
264
<!-- Actually, I'd like to specify that a PARENT_TYPE may contain either
265
PCDATA, or an XREF. It cannot contain PCDATA with interspersed XREFs
266
(which is what the above spec really says). However, there is *no* way
267
in XML 1.0 to specify this! -->
269
<!ELEMENT <A NAME="EL_OPERATIONS">OPERATIONS</A> (<A HREF="#EL_OPLIST">OPLIST</A>)+ >
271
<!ELEMENT <A NAME="EL_OPLIST">OPLIST</A> (<A HREF="#EL_XREF">XREF</A>)+ >
272
<!ATTLIST <A HREF="#EL_OPLIST">OPLIST</A>
273
KIND (OVERRIDDEN|OWN|INHERITED) #REQUIRED>
275
<!-- Document root -->
277
<!ELEMENT <A NAME="EL_ADABROWSE">ADABROWSE</A> (<A HREF="#EL_UNIT">UNIT</A>)+ >
283
<!--================================================================-->
284
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH="100%" CLASS="footer">
286
<TD WIDTH="100%" ALIGN="left" NOWRAP>
287
<FONT SIZE=-1>Copyright © 2002-2003 by Thomas Wolf. All rights
291
<FONT SIZE=-1>TW, May 30, 2003</FONT>