rubywbem 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,138 @@
1
+ #
2
+ # Copyright 2006, Red Hat, Inc
3
+ # Scott Seago <sseago@redhat.com>
4
+ #
5
+ # derived from pywbem, written by Tim Potter <tpot@hp.com>, Martin Pool <mbp@hp.com>
6
+ #
7
+ # This program is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation; either version 2 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # You should have received a copy of the GNU General Public License
13
+ # along with this program; if not, write to the Free Software
14
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
+ #
16
+
17
+ # """
18
+ # tupletree - Convert XML DOM objects to and from tuple trees.
19
+
20
+ # DOM is the standard in-memory representation of XML documents, but it
21
+ # is very cumbersome for some types of processing where XML encodes
22
+ # object structures rather than text documents. Direct mapping to Python
23
+ # classes may not be a good match either.
24
+
25
+ # tupletrees may be created from an in-memory DOM using
26
+ # dom_to_tupletree(), or from a string using xml_to_tupletree().
27
+
28
+ # Since the Python XML libraries deal mostly with Unicode strings they
29
+ # are also returned here. If plain Strings are passed in they will be
30
+ # converted by xmldom.
31
+
32
+ # Each node of the tuple tree is a Python 4-tuple, corresponding to an
33
+ # XML Element (i.e. <tag>):
34
+
35
+ # (NAME, ATTRS, CONTENTS, None)
36
+
37
+ # The NAME is the name of the element.
38
+
39
+ # The ATTRS are a name-value hash of element attributes.
40
+
41
+ # The CONTENTS is a list of child elements.
42
+
43
+ # The fourth element is reserved.
44
+ # """
45
+
46
+ require "rexml/document"
47
+
48
+ module WBEM
49
+
50
+ def tupletree_to_dom(document, tree, parent=nil)
51
+ # """Convert tupletree to an XML DOM tree within a document.
52
+ # """
53
+ # import types
54
+ name, attrs, contents, junk = tree
55
+
56
+ parent = document if parent.nil?
57
+ elt = Element.new(name, parent)
58
+
59
+ attrs.each { |key, val| elt.add_attribute(key, val) }
60
+ contents.each do |child|
61
+ if child.is_a? Array
62
+ tupletree_to_dom(document, child, elt)
63
+ else
64
+ elt.add_text(child)
65
+ end
66
+ end
67
+ return elt
68
+ end
69
+
70
+ def WBEM.dom_to_tupletree(node)
71
+ # """Convert a DOM object to a pyRXP-style tuple tree.
72
+
73
+ # Each element is a 4-tuple of (NAME, ATTRS, CONTENTS, None).
74
+
75
+ # Very nice for processing complex nested trees.
76
+ # """
77
+
78
+ if node.node_type == :document
79
+ # boring; pop down one level
80
+ return dom_to_tupletree(node.elements[1])
81
+ end
82
+ unless node.node_type == :element
83
+ raise TypeError, "node must be an element"
84
+ end
85
+
86
+ name = node.name
87
+ attrs = {}
88
+ contents = []
89
+
90
+ node.elements.each do |child|
91
+ if child.node_type == :element
92
+ contents << dom_to_tupletree(child)
93
+ elsif child.node_type == :text
94
+ unless child.value.kind_of?(String)
95
+ raise TypeError, "text node #{child} must be a string"
96
+ end
97
+ contents << child.value
98
+ else
99
+ raise RuntimeError, "can't handle #{child}"
100
+ end
101
+ end
102
+ node.texts.each do |child|
103
+ if child.node_type == :text
104
+ unless child.value.kind_of?(String)
105
+ raise TypeError, "text node #{child} must be a string"
106
+ end
107
+ contents << child.value
108
+ else
109
+ raise RuntimeError, "can't handle #{child}"
110
+ end
111
+ end
112
+
113
+ node.attributes.each { |nodename, nodevalue| attrs[nodename] = nodevalue }
114
+
115
+ # XXX: Cannot yet handle comments, cdata, processing instructions and
116
+ # other XML batshit.
117
+
118
+ # it's so easy in retrospect!
119
+ return [name, attrs, contents]
120
+ end
121
+
122
+ def WBEM.xml_to_tupletree(xml_string)
123
+ # """Parse XML straight into tupletree."""
124
+ return dom_to_tupletree(REXML::Document.new(xml_string))
125
+ end
126
+
127
+ def WBEM.tupletree_to_s(tt)
128
+ "name: #{tt[0]}\nattributes: #{tt[1].to_a.collect {|a| "(#{a[0]} => #{a[1]})"}.join(", ") unless tt[1].nil?}\n tree: #{unless tt[2].nil?
129
+ if tt[2][0].is_a?(Array)
130
+ tt[2].collect { |t| WBEM.tupletree_to_s(t) }.join
131
+ else
132
+ WBEM.tupletree_to_s(tt[2])
133
+ end
134
+ end
135
+ }"
136
+ end
137
+ end
138
+
@@ -0,0 +1,54 @@
1
+ %{!?ruby_sitelib: %define ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")}
2
+
3
+ Summary: RubyWBEM is a pure-Ruby library for performing operations using the WBEM management protocol
4
+ Name: ruby-wbem
5
+ Version: 0.1
6
+ Release: 1
7
+ License: GPL
8
+ Group: Systems Management/Base
9
+ URL: http://rubyforge.org/projects/rubywbem
10
+ Source0: %{name}-%{version}.tar.gz
11
+ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
12
+ BuildArchitectures: noarch
13
+
14
+ Requires: ruby >= 1.8.1
15
+ Requires: ruby(abi) = 1.8
16
+ BuildRequires: ruby >= 1.8.1
17
+ BuildRequires: ruby-devel
18
+ Provides: ruby(wbem)
19
+
20
+ %description
21
+ RubyWBEM is a pure-Ruby library for performing CIM operations over
22
+ HTTP using the WBEM management protocol. RubyWBEM originated as a
23
+ direct port of pyWbem (http://pywbem.sourceforge.net).
24
+
25
+ %prep
26
+ %setup -q
27
+
28
+ %build
29
+
30
+ %install
31
+ rm -rf $RPM_BUILD_ROOT
32
+ mkdir %{buildroot}
33
+
34
+ %{__install} -d -m0755 %{buildroot}%{ruby_sitelib}
35
+ %{__install} -d -m0755 %{buildroot}%{ruby_sitelib}/wbem
36
+
37
+ %{__install} -p -m0644 lib/wbem/*.rb %{buildroot}%{ruby_sitelib}/wbem
38
+ %{__install} -p -m0644 lib/wbem.rb %{buildroot}%{ruby_sitelib}
39
+
40
+ %clean
41
+ rm -rf $RPM_BUILD_ROOT
42
+
43
+
44
+ %files
45
+ %defattr(-,root,root,-)
46
+ %{ruby_sitelib}/wbem
47
+ %{ruby_sitelib}/wbem.rb
48
+ %doc AUTHORS CHANGELOG LICENSE README
49
+
50
+
51
+ %changelog
52
+ * Wed Sep 20 2006 <sseago@localhost.localdomain> -
53
+ - Initial build.
54
+
@@ -0,0 +1,324 @@
1
+ <!-- ************************************************** -->
2
+ <!-- -->
3
+ <!-- This DTD defines the schema for XML 1.0 Documents -->
4
+ <!-- representing CIM Element Declarations or Messages. -->
5
+ <!-- -->
6
+ <!-- DTD Version : 2.2 -->
7
+ <!-- DSP0203 -->
8
+ <!-- Date: December 09, 2004 -->
9
+ <!-- Status: Preliminary -->
10
+ <!-- ************************************************** -->
11
+ <!-- *********************************************************** -->
12
+ <!-- Copyright 2001-2004 Distributed Management Task Force, Inc. -->
13
+ <!-- All rights reserved. -->
14
+ <!-- DMTF is a not-for-profit association of industry members -->
15
+ <!-- dedicated to promoting enterprise and systems management -->
16
+ <!-- and interoperability. DMTF specifications and documents -->
17
+ <!-- may be reproduced for uses consistent with this purpose -->
18
+ <!-- by members and non-members, provided that correct -->
19
+ <!-- attribution is given. As DMTF specifications may be -->
20
+ <!-- revised from time to time, the particular version and -->
21
+ <!-- release date should always be noted. -->
22
+ <!-- Implementation of certain elements of this standard or -->
23
+ <!-- proposed standard may be subject to third party patent -->
24
+ <!-- rights, including provisional patent rights (herein -->
25
+ <!-- "patent rights"). DMTF makes no representations to users -->
26
+ <!-- of the standard as to the existence of such rights, and -->
27
+ <!-- is not responsible to recognize, disclose, or identify -->
28
+ <!-- any or all such third party patent right, owners or -->
29
+ <!-- claimants, nor for any incomplete or inaccurate -->
30
+ <!-- identification or disclosure of such rights, owners or -->
31
+ <!-- claimants. DMTF shall have no liability to any party, in -->
32
+ <!-- any manner or circumstance, under any legal theory -->
33
+ <!-- whatsoever, for failure to recognize, disclose, or -->
34
+ <!-- identify any such third party patent rights, or for such -->
35
+ <!-- party's reliance on the standard or incorporation -->
36
+ <!-- thereof in its product, protocols or testing procedures. -->
37
+ <!-- DMTF shall have no liability to any party implementing -->
38
+ <!-- such standard, whether such implementation is foreseeable -->
39
+ <!-- or not, nor to any patent owner or claimant, and shall -->
40
+ <!-- have no liability or responsibility for costs or losses -->
41
+ <!-- incurred if a standard is withdrawn or modified after -->
42
+ <!-- publication, and shall be indemnified and held harmless -->
43
+ <!-- by any party implementing the standard from any and all -->
44
+ <!-- claims of infringement by a patent owner for such -->
45
+ <!-- implementations. -->
46
+ <!-- For information about patents held by third-parties -->
47
+ <!-- which have notified the DMTF that, in their opinion, such -->
48
+ <!-- patent may relate to or impact implementations of DMTF -->
49
+ <!-- standards, visit -->
50
+ <!-- http://www.dmtf.org/about/policies/disclosures.php. -->
51
+ <!-- *********************************************************** -->
52
+ <!-- ************************************************** -->
53
+ <!-- Entity Declarations -->
54
+ <!-- ************************************************** -->
55
+ <!ENTITY % CIMName "NAME CDATA #REQUIRED">
56
+ <!ENTITY % CIMType "TYPE (boolean|string|char16|uint8|sint8|uint16|sint16|uint32|sint32|uint64|sint64|datetime|real32|real64)">
57
+ <!ENTITY % ParamType "PARAMTYPE (boolean|string|char16|uint8|sint8|uint16|sint16|uint32|sint32|uint64|sint64|datetime|real32|real64|reference)">
58
+ <!-- ************************************************** -->
59
+ <!-- DEPRECATION NOTE: The flavor TOINSTANCE is -->
60
+ <!-- DEPRECATED and MAY be removed from the -->
61
+ <!-- QualifierFlavor entity in a future version of this -->
62
+ <!-- document. Its usage is discouraged. -->
63
+ <!-- ************************************************** -->
64
+ <!ENTITY % QualifierFlavor "OVERRIDABLE (true|false) 'true'
65
+ TOSUBCLASS (true|false) 'true'
66
+ TOINSTANCE (true|false) 'false'
67
+ TRANSLATABLE (true|false) 'false'">
68
+ <!ENTITY % ClassOrigin "CLASSORIGIN CDATA #IMPLIED">
69
+ <!ENTITY % Propagated "PROPAGATED (true|false) 'false'">
70
+ <!ENTITY % ArraySize "ARRAYSIZE CDATA #IMPLIED">
71
+ <!ENTITY % SuperClass "SUPERCLASS CDATA #IMPLIED">
72
+ <!ENTITY % ClassName "CLASSNAME CDATA #REQUIRED">
73
+ <!ENTITY % ReferenceClass "REFERENCECLASS CDATA #IMPLIED">
74
+ <!-- ************************************************** -->
75
+ <!-- Root element -->
76
+ <!-- CIMVERSION must be in the form of "M.N". Where M -->
77
+ <!-- is the major revision of the specification in -->
78
+ <!-- numeric form and N is the minor revision of the -->
79
+ <!-- specification in numeric form. For example, -->
80
+ <!-- "2.0" or "2.3". -->
81
+ <!-- DTDVERSION must be in the form of "M.N". Where M -->
82
+ <!-- is the major revision of the specification in -->
83
+ <!-- numeric form and N is the minor revision of the -->
84
+ <!-- specification in numeric form. For example, -->
85
+ <!-- "2.0" or "2.1". -->
86
+ <!-- ************************************************** -->
87
+ <!ELEMENT CIM (MESSAGE | DECLARATION)>
88
+ <!ATTLIST CIM
89
+ CIMVERSION CDATA #REQUIRED
90
+ DTDVERSION CDATA #REQUIRED
91
+ >
92
+ <!-- ************************************************** -->
93
+ <!-- Object declaration elements -->
94
+ <!-- ************************************************** -->
95
+ <!ELEMENT DECLARATION (DECLGROUP | DECLGROUP.WITHNAME | DECLGROUP.WITHPATH)+>
96
+ <!ELEMENT DECLGROUP ((LOCALNAMESPACEPATH | NAMESPACEPATH)?, QUALIFIER.DECLARATION*, VALUE.OBJECT*)>
97
+ <!ELEMENT DECLGROUP.WITHNAME ((LOCALNAMESPACEPATH | NAMESPACEPATH)?, QUALIFIER.DECLARATION*, VALUE.NAMEDOBJECT*)>
98
+ <!ELEMENT DECLGROUP.WITHPATH (VALUE.OBJECTWITHPATH | VALUE.OBJECTWITHLOCALPATH)*>
99
+ <!ELEMENT QUALIFIER.DECLARATION (SCOPE?, (VALUE | VALUE.ARRAY)?)>
100
+ <!ATTLIST QUALIFIER.DECLARATION
101
+ %CIMName;
102
+ %CIMType; #REQUIRED
103
+ ISARRAY (true|false) #IMPLIED
104
+ %ArraySize;
105
+ %QualifierFlavor;>
106
+ <!ELEMENT SCOPE EMPTY>
107
+ <!ATTLIST SCOPE
108
+ CLASS (true | false) "false"
109
+ ASSOCIATION (true | false) "false"
110
+ REFERENCE (true | false) "false"
111
+ PROPERTY (true | false) "false"
112
+ METHOD (true | false) "false"
113
+ PARAMETER (true | false) "false"
114
+ INDICATION (true | false) "false"
115
+ >
116
+ <!-- ************************************************** -->
117
+ <!-- Object Value elements -->
118
+ <!-- ************************************************** -->
119
+ <!ELEMENT VALUE (#PCDATA)>
120
+ <!ELEMENT VALUE.ARRAY (VALUE*)>
121
+ <!ELEMENT VALUE.REFERENCE (CLASSPATH | LOCALCLASSPATH | CLASSNAME | INSTANCEPATH | LOCALINSTANCEPATH | INSTANCENAME)>
122
+ <!ELEMENT VALUE.REFARRAY (VALUE.REFERENCE*)>
123
+ <!ELEMENT VALUE.OBJECT (CLASS | INSTANCE)>
124
+ <!ELEMENT VALUE.NAMEDINSTANCE (INSTANCENAME, INSTANCE)>
125
+ <!ELEMENT VALUE.NAMEDOBJECT (CLASS | (INSTANCENAME, INSTANCE))>
126
+ <!ELEMENT VALUE.OBJECTWITHLOCALPATH ((LOCALCLASSPATH, CLASS) | (LOCALINSTANCEPATH, INSTANCE))>
127
+ <!ELEMENT VALUE.OBJECTWITHPATH ((CLASSPATH, CLASS) | (INSTANCEPATH, INSTANCE))>
128
+ <!ELEMENT VALUE.NULL EMPTY>
129
+
130
+ <!-- ************************************************** -->
131
+ <!-- Object naming and locating elements -->
132
+ <!-- ************************************************** -->
133
+ <!ELEMENT NAMESPACEPATH (HOST, LOCALNAMESPACEPATH)>
134
+ <!ELEMENT LOCALNAMESPACEPATH (NAMESPACE+)>
135
+ <!ELEMENT HOST (#PCDATA)>
136
+ <!ELEMENT NAMESPACE EMPTY>
137
+ <!ATTLIST NAMESPACE
138
+ %CIMName;
139
+ >
140
+ <!ELEMENT CLASSPATH (NAMESPACEPATH, CLASSNAME)>
141
+ <!ELEMENT LOCALCLASSPATH (LOCALNAMESPACEPATH, CLASSNAME)>
142
+ <!ELEMENT CLASSNAME EMPTY>
143
+ <!ATTLIST CLASSNAME
144
+ %CIMName;
145
+ >
146
+ <!ELEMENT INSTANCEPATH (NAMESPACEPATH, INSTANCENAME)>
147
+ <!ELEMENT LOCALINSTANCEPATH (LOCALNAMESPACEPATH, INSTANCENAME)>
148
+ <!ELEMENT INSTANCENAME (KEYBINDING* | KEYVALUE? | VALUE.REFERENCE?)>
149
+ <!ATTLIST INSTANCENAME
150
+ %ClassName;
151
+ >
152
+ <!ELEMENT OBJECTPATH (INSTANCEPATH | CLASSPATH)>
153
+ <!ELEMENT KEYBINDING (KEYVALUE | VALUE.REFERENCE)>
154
+ <!ATTLIST KEYBINDING
155
+ %CIMName;
156
+ >
157
+ <!ELEMENT KEYVALUE (#PCDATA)>
158
+ <!ATTLIST KEYVALUE
159
+ VALUETYPE (string | boolean | numeric) "string"
160
+ %CIMType; #IMPLIED>
161
+
162
+ <!-- ************************************************** -->
163
+ <!-- Object definition elements -->
164
+ <!-- ************************************************** -->
165
+ <!ELEMENT CLASS (QUALIFIER*, (PROPERTY | PROPERTY.ARRAY | PROPERTY.REFERENCE)*, METHOD*)>
166
+ <!ATTLIST CLASS
167
+ %CIMName;
168
+ %SuperClass;
169
+ >
170
+ <!ELEMENT INSTANCE (QUALIFIER*, (PROPERTY | PROPERTY.ARRAY | PROPERTY.REFERENCE)*)>
171
+ <!ATTLIST INSTANCE
172
+ %ClassName;
173
+ xml:lang NMTOKEN #IMPLIED
174
+ >
175
+ <!ELEMENT QUALIFIER ((VALUE | VALUE.ARRAY)?)>
176
+ <!ATTLIST QUALIFIER
177
+ %CIMName;
178
+ %CIMType; #REQUIRED
179
+ %Propagated;
180
+ %QualifierFlavor;
181
+ xml:lang NMTOKEN #IMPLIED
182
+ >
183
+ <!ELEMENT PROPERTY (QUALIFIER*, VALUE?)>
184
+ <!ATTLIST PROPERTY
185
+ %CIMName;
186
+ %ClassOrigin;
187
+ %Propagated;
188
+ %CIMType; #REQUIRED
189
+ xml:lang NMTOKEN #IMPLIED
190
+ >
191
+ <!ELEMENT PROPERTY.ARRAY (QUALIFIER*, VALUE.ARRAY?)>
192
+ <!ATTLIST PROPERTY.ARRAY
193
+ %CIMName;
194
+ %CIMType; #REQUIRED
195
+ %ArraySize;
196
+ %ClassOrigin;
197
+ %Propagated;
198
+ xml:lang NMTOKEN #IMPLIED
199
+ >
200
+ <!ELEMENT PROPERTY.REFERENCE (QUALIFIER*, (VALUE.REFERENCE)?)>
201
+ <!ATTLIST PROPERTY.REFERENCE
202
+ %CIMName;
203
+ %ReferenceClass;
204
+ %ClassOrigin;
205
+ %Propagated;
206
+ >
207
+ <!ELEMENT METHOD (QUALIFIER*, (PARAMETER | PARAMETER.REFERENCE | PARAMETER.ARRAY | PARAMETER.REFARRAY)*)>
208
+ <!ATTLIST METHOD
209
+ %CIMName;
210
+ %CIMType; #IMPLIED
211
+ %ClassOrigin;
212
+ %Propagated;>
213
+ <!ELEMENT PARAMETER (QUALIFIER*)>
214
+ <!ATTLIST PARAMETER
215
+ %CIMName;
216
+ %CIMType; #REQUIRED>
217
+ <!ELEMENT PARAMETER.REFERENCE (QUALIFIER*)>
218
+ <!ATTLIST PARAMETER.REFERENCE
219
+ %CIMName;
220
+ %ReferenceClass;
221
+ >
222
+ <!ELEMENT PARAMETER.ARRAY (QUALIFIER*)>
223
+ <!ATTLIST PARAMETER.ARRAY
224
+ %CIMName;
225
+ %CIMType; #REQUIRED
226
+ %ArraySize;>
227
+ <!ELEMENT PARAMETER.REFARRAY (QUALIFIER*)>
228
+ <!ATTLIST PARAMETER.REFARRAY
229
+ %CIMName;
230
+ %ReferenceClass;
231
+ %ArraySize;
232
+ >
233
+ <!ELEMENT TABLECELL.DECLARATION EMPTY>
234
+ <!ATTLIST TABLECELL.DECLARATION
235
+ %CIMName;
236
+ %CIMType; #REQUIRED
237
+ ISARRAY (true|false) "false"
238
+ %ArraySize;
239
+ CELLPOS CDATA #REQUIRED
240
+ SORTPOS CDATA #IMPLIED
241
+ SORTDIR (ASC|DESC) #IMPLIED
242
+ >
243
+ <!ELEMENT TABLECELL.REFERENCE EMPTY>
244
+ <!ATTLIST TABLECELL.REFERENCE
245
+ %CIMName;
246
+ %ReferenceClass;
247
+ ISARRAY (true|false) "false"
248
+ %ArraySize;
249
+ CELLPOS CDATA #REQUIRED
250
+ SORTPOS CDATA #IMPLIED
251
+ SORTDIR (ASC|DESC) #IMPLIED
252
+ >
253
+ <!ELEMENT TABLEROW.DECLARATION ( TABLECELL.DECLARATION | TABLECELL.REFERENCE)*>
254
+ <!ELEMENT TABLE (TABLEROW.DECLARATION,(TABLEROW)*)>
255
+ <!ELEMENT TABLEROW ( VALUE | VALUE.ARRAY | VALUE.REFERENCE | VALUE.REFARRAY | VALUE.NULL)*>
256
+
257
+ <!-- ************************************************** -->
258
+ <!-- Message elements -->
259
+ <!-- ************************************************** -->
260
+ <!ELEMENT MESSAGE (SIMPLEREQ | MULTIREQ | SIMPLERSP | MULTIRSP | SIMPLEEXPREQ | MULTIEXPREQ | SIMPLEEXPRSP | MULTIEXPRSP)>
261
+ <!ATTLIST MESSAGE
262
+ ID CDATA #REQUIRED
263
+ PROTOCOLVERSION CDATA #REQUIRED
264
+ >
265
+ <!ELEMENT MULTIREQ (SIMPLEREQ, SIMPLEREQ+)>
266
+ <!ELEMENT MULTIEXPREQ (SIMPLEEXPREQ, SIMPLEEXPREQ+)>
267
+ <!ELEMENT SIMPLEREQ (IMETHODCALL | METHODCALL)>
268
+ <!ELEMENT SIMPLEEXPREQ (EXPMETHODCALL)>
269
+ <!ELEMENT IMETHODCALL (LOCALNAMESPACEPATH, IPARAMVALUE*, RESPONSEDESTINATION?)>
270
+ <!ATTLIST IMETHODCALL
271
+ %CIMName;
272
+ >
273
+ <!ELEMENT METHODCALL ((LOCALINSTANCEPATH | LOCALCLASSPATH), PARAMVALUE*, RESPONSEDESTINATION?)>
274
+ <!ATTLIST METHODCALL
275
+ %CIMName;
276
+ >
277
+ <!ELEMENT EXPMETHODCALL (EXPPARAMVALUE*)>
278
+ <!ATTLIST EXPMETHODCALL
279
+ %CIMName;
280
+ >
281
+ <!ELEMENT PARAMVALUE (VALUE | VALUE.REFERENCE | VALUE.ARRAY | VALUE.REFARRAY)?>
282
+ <!ATTLIST PARAMVALUE
283
+ %CIMName;
284
+ %ParamType; #IMPLIED
285
+ >
286
+ <!ELEMENT IPARAMVALUE (VALUE | VALUE.ARRAY | VALUE.REFERENCE | INSTANCENAME | CLASSNAME | QUALIFIER.DECLARATION | CLASS | INSTANCE | VALUE.NAMEDINSTANCE)?>
287
+ <!ATTLIST IPARAMVALUE
288
+ %CIMName;
289
+ >
290
+ <!ELEMENT EXPPARAMVALUE (INSTANCE?|VALUE?|METHODRESPONSE?|IMETHODRESPONSE?)>
291
+ <!ATTLIST EXPPARAMVALUE
292
+ %CIMName;
293
+ >
294
+ <!ELEMENT MULTIRSP (SIMPLERSP, SIMPLERSP+)>
295
+ <!ELEMENT MULTIEXPRSP (SIMPLEEXPRSP, SIMPLEEXPRSP+)>
296
+ <!ELEMENT SIMPLERSP (METHODRESPONSE | IMETHODRESPONSE | SIMPLEREQACK)>
297
+ <!ELEMENT SIMPLEEXPRSP (EXPMETHODRESPONSE)>
298
+ <!ELEMENT METHODRESPONSE (ERROR|(RETURNVALUE?,PARAMVALUE*))>
299
+ <!ATTLIST METHODRESPONSE
300
+ %CIMName;
301
+ >
302
+ <!ELEMENT EXPMETHODRESPONSE (ERROR|IRETURNVALUE?)>
303
+ <!ATTLIST EXPMETHODRESPONSE
304
+ %CIMName;
305
+ >
306
+ <!ELEMENT IMETHODRESPONSE (ERROR|IRETURNVALUE?)>
307
+ <!ATTLIST IMETHODRESPONSE
308
+ %CIMName;
309
+ >
310
+ <!ELEMENT ERROR (INSTANCE*)>
311
+ <!ATTLIST ERROR
312
+ CODE CDATA #REQUIRED
313
+ DESCRIPTION CDATA #IMPLIED
314
+ >
315
+ <!ELEMENT RETURNVALUE (VALUE | VALUE.REFERENCE)>
316
+ <!ATTLIST RETURNVALUE
317
+ %ParamType; #IMPLIED
318
+ >
319
+ <!ELEMENT IRETURNVALUE (CLASSNAME* | INSTANCENAME* | VALUE* | VALUE.OBJECTWITHPATH* | VALUE.OBJECTWITHLOCALPATH* | VALUE.OBJECT* | OBJECTPATH* | QUALIFIER.DECLARATION* | VALUE.ARRAY? | VALUE.REFERENCE? | CLASS* | INSTANCE* | VALUE.NAMEDINSTANCE*)>
320
+ <!ELEMENT RESPONSEDESTINATION (INSTANCE)>
321
+ <!ELEMENT SIMPLEREQACK (ERROR?)>
322
+ <!ATTLIST SIMPLEREQACK
323
+ INSTANCEID CDATA #REQUIRED
324
+ >