1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
<!-- 15531-APR 90163: rev F -->
<!-- Date- 2000-10-16 -->
<!-- Author- Johnni Sigeti -->
<!-- Author- Niklas Storm -->
<!-- Author- Hui Lin -->
<!-- Revision History
A Raghunath Squid version
PB1 epkjsig 1999-09-09 Removed uLong, uShort, union
and inherits.
PB2 epkjsig 1999-09-23 Rewritten with new
requirements
PB3 epkjsig 1999-09-26 Updated after team review
B epkjsig 1999-10-06 Updated after inspection
PC1 epkjsig 1999-10-28 Added mandatory attribute
for associations.
PC2 epkjsig 1999-11-22 Added MORef as attribute
PC3 qpknian 2000-01-03 Added support object class.
PC4 qpknian 2000-01-18 Removed illegal characters
in comments.
PC5 qpknian 2000-01-21 Updated model tag. class and
soClass elements should be in
separate models.
C qpknian 2000-02-10 Approved after inspection.
PD1 qpknian 2000-03-02 Added applicationTag.
Added notificationTypes.
Removed controlled.
Renamed readOnly to advisoryReadOnly.
PD2 qpknian 2000-03-21 Added softLink to hoppers.
D qpknian 2000-04-26 Approved after inspection.
PE1 qpknian 2000-06-27 Updated for CR41 (use Corba types)
E qpknian 2000-09-01 Approved after inspection.
PF1 eiuhlin 2000-08-21 Updated for CR43 (Rename Model to MIM, add INTER-MIM)
PF2 eiuhlin 2000-09-20 Support uniDirectionalAssociation and biDirectionalAssociation
Add static to Attribute
Add enumRef and sequence to struct
PF3 eiuhlin 2000-09-20 Add maxLength to sequence
PF4 eiuhlin 2000-09-21 Define Element static
PF5 eiuhlin 2000-09-27 Remove ATTLIST name from moRef
PF6 eiuhlin 2000-10-02 Remove tag <helpRef>, <icon>
Add associationClass to bi and uni-directional association
Change tag <target> to <supported>
Remove ATTLIST name from supporter and supported
Add ATTLIST name to moRef
Remove tag <advisoryReadOnly>
Add tag <readOnly> and <undefined>
PF7 eiuhlin 2000-10-04 Add ATTLIST name to interMim
F eiuhlin 2000-10-16 Approved after inspection.
-->
<!-- Common -->
<!ELEMENT description (#PCDATA)>
<!ELEMENT applicationTag (#PCDATA)>
<!-- Models definition -->
<!ELEMENT models (mim|interMim)*>
<!ELEMENT mim (description?, applicationTag?,
(struct | enum | exception)*,
class+, relationship*)>
<!ATTLIST mim name ID #REQUIRED
version CDATA #REQUIRED
release CDATA #REQUIRED>
<!ELEMENT interMim (description?, applicationTag?,
(struct | enum )*,
relationship*)>
<!ATTLIST interMim name CDATA #REQUIRED>
<!-- MO class definition -->
<!ELEMENT class (description?, applicationTag?,
systemCreated?, notificationTypes?, (action | attribute)*)>
<!ATTLIST class name CDATA #REQUIRED>
<!ELEMENT systemCreated EMPTY>
<!ELEMENT notificationTypes (#PCDATA)>
<!-- Relations -->
<!ELEMENT relationship (description?, applicationTag?,
(biDirectionalAssociation |uniDirectionalAssociation | containment|softLink|support))>
<!ATTLIST relationship name CDATA #REQUIRED>
<!ELEMENT softLink (parent, child+)>
<!ELEMENT support (supporter,supported+)>
<!ELEMENT supporter (description?, applicationTag?,
hasClass, cardinality?)>
<!ELEMENT supported (description?, applicationTag?,
hasClass, cardinality?)>
<!ELEMENT biDirectionalAssociation (mandatory?, associationEnd, associationEnd+, associationClass?)>
<!ELEMENT uniDirectionalAssociation (mandatory?, hasClass, associationEnd+, associationClass?)>
<!ELEMENT containment (parent, child+)>
<!ELEMENT associationEnd (description?, applicationTag?,
hasClass, cardinality?)>
<!ATTLIST associationEnd name CDATA #REQUIRED>
<!ELEMENT associationClass (attribute+)>
<!ELEMENT parent (description?, applicationTag?,
hasClass)>
<!ELEMENT child (description?, applicationTag?,
hasClass, cardinality?)>
<!ELEMENT cardinality (min | max | (min, max))>
<!ELEMENT hasClass EMPTY>
<!ATTLIST hasClass name CDATA #REQUIRED
inMim CDATA #IMPLIED
ofVersion CDATA #IMPLIED>
<!-- Data types -->
<!ENTITY % corbaTypes "boolean | octet | char | double | float |
long | longlong | short | string | wstring">
<!ENTITY % availableTypes "%corbaTypes; | enumRef | structRef |
moRef | sequence">
<!-- For attributes, parameters and exceptions -->
<!ELEMENT dataType (%availableTypes;)>
<!-- For actions -->
<!ELEMENT returnType (void | %availableTypes;)>
<!-- Return data types -->
<!ELEMENT void EMPTY>
<!-- Primitive data types -->
<!ELEMENT boolean (defaultValue?)>
<!ELEMENT octet (range?, defaultValue?)>
<!ELEMENT char (range?, defaultValue?)>
<!ELEMENT double (range?, defaultValue?)>
<!ELEMENT float (range?, defaultValue?)>
<!ELEMENT long (range?, defaultValue?)>
<!ELEMENT longlong (range?, defaultValue?)>
<!ELEMENT short (range?, defaultValue?)>
<!ELEMENT string (lengthRange?, (validValues | alphabet)?, defaultValue?)>
<!ELEMENT wstring (lengthRange?, (validValues | alphabet)?, defaultValue?)>
<!ELEMENT alphabet (#PCDATA)>
<!ELEMENT validValues (#PCDATA)>
<!ELEMENT lengthRange (min?, (min, max)*, max?)>
<!ELEMENT range (min?, (min, max)*, max?)>
<!ELEMENT max (#PCDATA)>
<!ELEMENT min (#PCDATA)>
<!ELEMENT defaultValue (#PCDATA)>
<!-- Enum data type -->
<!ELEMENT enum (description?, applicationTag?,
enumMember+, defaultValue?)>
<!ATTLIST enum name CDATA #REQUIRED>
<!ELEMENT enumMember (description?, applicationTag?,
value?)>
<!ATTLIST enumMember name CDATA #REQUIRED>
<!ELEMENT enumRef (defaultValue?)>
<!ATTLIST enumRef name CDATA #REQUIRED>
<!ELEMENT value (#PCDATA)>
<!-- Struct data type -->
<!ELEMENT struct (description?, applicationTag?,
structMember+)>
<!ATTLIST struct name CDATA #REQUIRED>
<!ELEMENT structMember (description?, applicationTag?,
(%corbaTypes; | sequence | enumRef))>
<!ATTLIST structMember name CDATA #REQUIRED>
<!ELEMENT structRef EMPTY>
<!ATTLIST structRef name CDATA #REQUIRED>
<!-- Sequence data type -->
<!ELEMENT sequence ((%corbaTypes; | enumRef | structRef | moRef),
length?, maxLength?, nonUnique?)>
<!ELEMENT length (#PCDATA)>
<!ELEMENT maxLength (#PCDATA)>
<!ELEMENT nonUnique EMPTY>
<!-- MoRef data type -->
<!ELEMENT moRef EMPTY>
<!ATTLIST moRef name CDATA #REQUIRED>
<!-- Attribute -->
<!ELEMENT attribute (description?, applicationTag?,
local?, mandatory?, noNotification?,
nonPersistent?, readOnly?, restricted?, static?,undefined?, dataType)>
<!ATTLIST attribute name CDATA #REQUIRED>
<!-- Attribute controls -->
<!-- nonUnique is defined under the sequence data type. -->
<!ELEMENT local EMPTY>
<!ELEMENT mandatory EMPTY>
<!ELEMENT noNotification EMPTY>
<!ELEMENT nonPersistent EMPTY>
<!ELEMENT readOnly EMPTY>
<!ELEMENT restricted EMPTY>
<!ELEMENT static EMPTY>
<!ELEMENT undefined EMPTY>
<!-- Action -->
<!ELEMENT action (description?, applicationTag?,
returnType, parameter*, raisesException*)>
<!ATTLIST action name CDATA #REQUIRED>
<!ELEMENT parameter (description?, applicationTag?,
(in | out | inout), dataType)>
<!ATTLIST parameter name CDATA #REQUIRED>
<!ELEMENT in EMPTY>
<!ELEMENT inout EMPTY>
<!ELEMENT out EMPTY>
<!ELEMENT exception (description?, applicationTag?,
exceptionParameter*)>
<!ATTLIST exception name CDATA #REQUIRED>
<!ELEMENT exceptionParameter (description?, applicationTag?,
dataType)>
<!ATTLIST exceptionParameter name CDATA #REQUIRED>
<!ELEMENT raisesException EMPTY>
<!ATTLIST raisesException name CDATA #REQUIRED>
|