Use a single function to create all IXMLDOMNode implementations.
[wine] / include / msxml.idl
1 /*
2  * Copyright (C) 2005 Mike McCormack
3  * Copyright (C) 2005 Vijay Kiran Kamuju
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19
20 #include <msxmldid.h>
21
22 import "unknwn.idl";
23 import "wtypes.idl";
24 import "objidl.idl";
25 import "oaidl.idl";
26
27
28 [
29 local,
30 object,
31 odl,
32 dual,
33 oleautomation,
34 uuid(65725580-9b5d-11d0-9bfe-00c04fc99c8e)
35 ]
36 interface IXMLElementCollection : IDispatch
37 {
38     [propput, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
39     HRESULT length( [in] long v );
40
41     [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
42     HRESULT length( [retval, out] long *p );
43
44     [propget, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)]
45     HRESULT _newEnum( [retval, out] IUnknown ** ppUnk );
46
47     [id(DISPID_XMLELEMENTCOLLECTION_ITEM)]
48     HRESULT item(
49             [optional, in] VARIANT var1,
50             [optional, in] VARIANT var2,
51             [retval, out] IDispatch ** ppDisp );
52 };
53
54 [
55 local,
56 object,
57 uuid(3f7f31ac-e15f-11d0-9c25-00c04fc99c8e)
58 ]
59 interface IXMLElement : IDispatch
60 {
61     [propget, id(DISPID_XMLELEMENT_TAGNAME)]
62     HRESULT tagName( [retval, out] BSTR *p);
63
64     [propput, id(DISPID_XMLELEMENT_TAGNAME)]
65     HRESULT tagName( [in] BSTR p );
66
67     [propget, id(DISPID_XMLELEMENT_PARENT)]
68     HRESULT parent( [retval, out] IXMLElement **parent );
69
70     [id(DISPID_XMLELEMENT_SETATTRIBUTE)]
71     HRESULT setAttribute(
72             [in] BSTR strPropertyName,
73             [in] VARIANT PropertyValue );
74
75     [id(DISPID_XMLELEMENT_GETATTRIBUTE)]
76     HRESULT getAttribute(
77             [in] BSTR strPropertyName,
78             [retval, out] VARIANT *PropertyValue );
79
80     [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)]
81     HRESULT removeAttribute(
82             [in] BSTR strPropertyName );
83
84     [propget, id(DISPID_XMLELEMENT_CHILDREN)]
85     HRESULT children( [retval, out] IXMLElementCollection **p );
86
87     [propget, id(DISPID_XMLELEMENT_TYPE)]
88     HRESULT type( [retval, out] long *p );
89
90     [propget, id(DISPID_XMLELEMENT_TEXT)]
91     HRESULT text( [retval, out] BSTR *p );
92
93     [propput, id(DISPID_XMLELEMENT_TEXT)]
94     HRESULT text( [in] BSTR p );
95
96     [id(DISPID_XMLELEMENT_ADDCHILD)]
97     HRESULT addChild(
98             [in] IXMLElement *pChildElem,
99             [in] long lIndex,
100             [in] long lreserved );
101
102     [id(DISPID_XMLELEMENT_REMOVECHILD)]
103     HRESULT removeChild(
104             [in] IXMLElement *pChildElem );
105 };
106
107 [
108 local,
109 object,
110 uuid(f52e2b61-18a1-11d1-b105-00805f49916b)
111 ]
112 interface IXMLDocument : IDispatch
113 {
114     [propget, id(DISPID_XMLDOCUMENT_ROOT)]
115     HRESULT root( [retval, out] IXMLElement **p );
116
117     [propget, id(DISPID_XMLDOCUMENT_FILESIZE)]
118     HRESULT fileSize( [retval, out] BSTR *p );
119
120     [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)]
121     HRESULT fileModifiedDate( [retval, out] BSTR *p );
122
123     [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)]
124     HRESULT fileUpdatedDate( [retval, out] BSTR *p );
125
126     [propget, id(DISPID_XMLDOCUMENT_URL)]
127     HRESULT URL( [retval, out] BSTR *p );
128
129     [propput, id(DISPID_XMLDOCUMENT_URL)]
130     HRESULT URL( [in] BSTR p );
131
132     [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)]
133     HRESULT mimeType( [retval, out] BSTR *p );
134
135     [propget, id(DISPID_XMLDOCUMENT_READYSTATE)]
136     HRESULT readyState( [retval, out] long *p );
137
138     [propget, id(DISPID_XMLDOCUMENT_CHARSET)]
139     HRESULT charset( [retval, out] BSTR *p );
140
141     [propput, id(DISPID_XMLDOCUMENT_CHARSET)]
142     HRESULT charset( [in] BSTR p );
143
144     [propget, id(DISPID_XMLDOCUMENT_VERSION)]
145     HRESULT version( [retval, out] BSTR *p );
146
147     [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)]
148     HRESULT doctype( [retval, out] BSTR *p );
149
150     [propget, id(DISPID_XMLDOCUMENT_DTDURL)]
151     HRESULT dtdURl( [retval, out] BSTR *p );
152
153     [id(DISPID_XMLDOCUMENT_CREATEELEMENT)]
154     HRESULT createElement(
155             [in] VARIANT vType,
156             [optional, in] VARIANT var1,
157             [retval, out] IXMLElement **ppElem );
158 };
159
160 [
161 local,
162 object,
163 uuid(2B8DE2FF-8D2D-11d1-B2FC-00C04FD915A9)
164 ]
165 interface IXMLElement2 : IDispatch
166 {
167     [propget, id(DISPID_XMLELEMENT_TAGNAME)]
168     HRESULT tagName([retval, out] BSTR *p);
169
170     [propput, id(DISPID_XMLELEMENT_TAGNAME)]
171     HRESULT tagName([in] BSTR p);
172
173     [propget, id(DISPID_XMLELEMENT_PARENT)]
174     HRESULT parent([retval, out]IXMLElement2 **ppParent);
175
176     [id(DISPID_XMLELEMENT_SETATTRIBUTE)]
177     HRESULT setAttribute(
178         [in] BSTR strPropertyName,
179         [in] VARIANT PropertyValue);
180
181     [id(DISPID_XMLELEMENT_GETATTRIBUTE)]
182     HRESULT getAttribute(
183         [in] BSTR strPropertyName,
184         [retval, out] VARIANT *PropertyValue);
185
186     [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)]
187     HRESULT removeAttribute([in] BSTR strPropertyName);
188
189     [propget, id(DISPID_XMLELEMENT_CHILDREN)]
190     HRESULT children([retval, out] IXMLElementCollection **pp);
191
192     [propget, id(DISPID_XMLELEMENT_TYPE)]
193     HRESULT type([retval, out] long *plType);
194
195     [propget, id(DISPID_XMLELEMENT_TEXT)]
196     HRESULT text([retval, out] BSTR *p);
197
198     [propput, id(DISPID_XMLELEMENT_TEXT)]
199     HRESULT text([in] BSTR p);
200
201     [id(DISPID_XMLELEMENT_ADDCHILD)]
202     HRESULT addChild(
203         [in] IXMLElement2 *pChildElem,
204         [retval, out] long lIndex,
205         [retval, out] long lReserved);
206
207     [id(DISPID_XMLELEMENT_REMOVECHILD)]
208     HRESULT removeChild([in]IXMLElement2 *pChildElem);
209
210     [propget, id(DISPID_XMLELEMENT_ATTRIBUTES)]
211     HRESULT attributes([retval, out] IXMLElementCollection **pp); 
212 };
213
214 [
215 local,
216 object,
217 uuid(2B8DE2FE-8D2D-11d1-B2FC-00C04FD915A9)
218 ]
219 interface IXMLDocument2 : IDispatch
220 {
221     [propget, id(DISPID_XMLDOCUMENT_ROOT)]
222     HRESULT root([retval, out] IXMLElement2 **p);
223
224     [propget, id(DISPID_XMLDOCUMENT_FILESIZE)]
225     HRESULT fileSize([retval, out] BSTR *p);
226
227     [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)]
228     HRESULT fileModifiedDate([retval, out] BSTR *p);
229
230     [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)]
231     HRESULT fileUpdatedDate([retval, out] BSTR *p);
232
233     [propget, id(DISPID_XMLDOCUMENT_URL)]
234     HRESULT URL([retval, out] BSTR *p);
235
236     [propput, id(DISPID_XMLDOCUMENT_URL)]
237     HRESULT URL([in] BSTR p);
238
239     [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)]
240     HRESULT mimeType([retval, out] BSTR *p);
241    
242     [propget, id(DISPID_XMLDOCUMENT_READYSTATE)]
243     HRESULT readyState([retval, out]long *pl);
244
245     [propget, id(DISPID_XMLDOCUMENT_CHARSET)]
246     HRESULT charset([retval, out]BSTR *p);
247
248     [propput, id(DISPID_XMLDOCUMENT_CHARSET)]
249     HRESULT charset([in]BSTR p);
250
251     [propget, id(DISPID_XMLDOCUMENT_VERSION)]
252     HRESULT version([retval, out]BSTR *p);
253
254     [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)]
255     HRESULT doctype([retval, out]BSTR *p);
256
257     [propget, restricted, id(DISPID_XMLDOCUMENT_DTDURL)]
258     HRESULT dtdURL([retval, out]BSTR *p);
259
260     [id(DISPID_XMLDOCUMENT_CREATEELEMENT)]
261     HRESULT createElement(
262         [in] VARIANT vType, 
263         [optional, in] VARIANT var, 
264         [retval, out] IXMLElement2 **ppElem);
265
266     [propget, id(DISPID_XMLDOCUMENT_ASYNC)]
267     HRESULT async([retval, out] VARIANT_BOOL *pf);
268
269     [propput, id(DISPID_XMLDOCUMENT_ASYNC)]
270     HRESULT async([in] VARIANT_BOOL f);
271 };
272
273 typedef enum tagXMLEMEM_TYPE {
274         XMLELEMTYPE_ELEMENT     = 0,
275         XMLELEMTYPE_TEXT        = 1,
276         XMLELEMTYPE_COMMENT     = 2,
277         XMLELEMTYPE_DOCUMENT    = 3,
278         XMLELEMTYPE_DTD         = 4,
279         XMLELEMTYPE_PI          = 5,
280         XMLELEMTYPE_OTHER       = 6
281 } XMLELEM_TYPE;
282
283 typedef struct _xml_error {
284         UINT _nLine;
285         BSTR _pchBuf;
286         BSTR _cchBuf;
287         UINT _ich;
288         BSTR _pszFound;
289         BSTR _pszExpected;
290         DWORD _reserved1;
291         DWORD _reserved2;
292 } XML_ERROR;
293
294 [
295 local,
296 object,
297 uuid(d4d4a0fc-3b73-11d1-b2b4-00c04fb92596)
298 ]
299 interface IXMLAttribute : IDispatch
300 {
301     [propget, id(DISPID_XMLATTRIBUTE_NAME)]
302     HRESULT name( [retval, out] BSTR *p );
303
304     [propget, id(DISPID_XMLATTRIBUTE_VALUE)]
305     HRESULT value( [retval, out] BSTR *p );
306 };
307
308 [
309 local,
310 object,
311 uuid(948c5ad3-c58d-11d0-9c0b-00c04fc99c8e)
312 ]
313 interface IXMLError : IUnknown
314 {
315     HRESULT GetErrorInfo([out]XML_ERROR *pErrorReturn);
316 };
317
318 [
319     object,
320     local,
321     uuid(D9F1E15A-CCDB-11d0-9C0C-00C04FC99C8E)
322 ]
323 interface IXMLElementNotificationSink : IDispatch
324 {
325     [id(DISPID_XMLNOTIFSINK_CHILDADDED)] 
326     HRESULT ChildAdded([in]IDispatch *pChildElem); 
327 };
328
329 [
330 uuid(cfc399af-d876-11d0-9c10-00c04fc99c8e)
331 ]
332 coclass XMLDocument
333 {
334     [default] interface IXMLDocument;
335 };