services: Cleanup when a service fails to start so it is still fully considered to...
[wine] / include / xmldom.idl
1 /*
2  * Copyright (C) 2005 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include <xmldomdid.h>
20 #include <idispids.h>
21
22 #if !defined(progid) && !defined(__WIDL__)
23 #define threading(model)
24 #define progid(str)
25 #define vi_progid(str)
26 #endif
27
28 interface IXMLDOMImplementation;
29 interface IXMLDOMNode;
30 interface IXMLDOMDocumentFragment;
31 interface IXMLDOMDocument;
32 interface IXMLDOMNodeList;
33 interface IXMLDOMNamedNodeMap;
34 interface IXMLDOMCharacterData;
35 interface IXMLDOMAttribute;
36 interface IXMLDOMElement;
37 interface IXMLDOMText;
38 interface IXMLDOMComment;
39 interface IXMLDOMProcessingInstruction;
40 interface IXMLDOMCDATASection;
41 interface IXMLDOMDocumentType;
42 interface IXMLDOMNotation;
43 interface IXMLDOMEntity;
44 interface IXMLDOMEntityReference;
45 interface IXMLDOMParseError;
46
47 cpp_quote("#ifndef __MSXML_DOMNODETYPE_DEFINED")
48 cpp_quote("#define __MSXML_DOMNODETYPE_DEFINED")
49 typedef enum tagDOMNodeType {
50     NODE_INVALID,
51     NODE_ELEMENT,
52     NODE_ATTRIBUTE,
53     NODE_TEXT,
54     NODE_CDATA_SECTION,
55     NODE_ENTITY_REFERENCE,
56     NODE_ENTITY,
57     NODE_PROCESSING_INSTRUCTION,
58     NODE_COMMENT,
59     NODE_DOCUMENT,
60     NODE_DOCUMENT_TYPE,
61     NODE_DOCUMENT_FRAGMENT,
62     NODE_NOTATION
63 } DOMNodeType;
64 cpp_quote("#endif")
65
66 [
67 local,
68 object,
69 odl,
70 dual,
71 oleautomation,
72 /*nonextensible,*/
73 uuid(2933bf80-7b36-11d2-b20e-00c04f983e60),
74 pointer_default(unique)
75 ]
76 interface IXMLDOMNode : IDispatch
77 {
78     [propget, id(DISPID_DOM_NODE_NODENAME)]
79     HRESULT nodeName( [out,retval] BSTR *name );
80
81     [propget, id(DISPID_DOM_NODE_NODEVALUE)]
82     HRESULT nodeValue( [out,retval] VARIANT *value );
83
84     [propput, id(DISPID_DOM_NODE_NODEVALUE)]
85     HRESULT nodeValue( [in] VARIANT value );
86
87     [propget, id(DISPID_DOM_NODE_NODETYPE)]
88     HRESULT nodeType( [out,retval] DOMNodeType *type );
89
90     [propget, id(DISPID_DOM_NODE_PARENTNODE)]
91     HRESULT parentNode( [out,retval] IXMLDOMNode **parent );
92
93     [propget, id(DISPID_DOM_NODE_CHILDNODES)]
94     HRESULT childNodes( [out,retval] IXMLDOMNodeList **childList );
95
96     [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
97     HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild );
98
99     [propget, id(DISPID_DOM_NODE_LASTCHILD)]
100     HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild );
101
102     [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
103     HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling );
104
105     [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
106     HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling );
107
108     [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
109     HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap );
110
111     [id(DISPID_DOM_NODE_INSERTBEFORE)]
112     HRESULT insertBefore( [in] IXMLDOMNode * newChild,
113                           [in] VARIANT refChild,
114                           [out,retval] IXMLDOMNode **outNewChild );
115
116     [id(DISPID_DOM_NODE_REPLACECHILD)]
117     HRESULT replaceChild( [in] IXMLDOMNode *newChild,
118                           [in] IXMLDOMNode *oldChild,
119                           [out,retval] IXMLDOMNode **outOldChild );
120
121     [id(DISPID_DOM_NODE_REMOVECHILD)]
122     HRESULT removeChild( [in] IXMLDOMNode *childNode,
123                          [out,retval] IXMLDOMNode **oldChild );
124
125     [id(DISPID_DOM_NODE_APPENDCHILD)]
126     HRESULT appendChild( [in] IXMLDOMNode *newChild,
127                          [out,retval] IXMLDOMNode **outNewChild );
128
129     [id(DISPID_DOM_NODE_HASCHILDNODES)]
130     HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild );
131
132     [propget, id(DISPID_DOM_NODE_OWNERDOC)]
133     HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument );
134
135     [id(DISPID_DOM_NODE_CLONENODE)]
136     HRESULT cloneNode( [in] VARIANT_BOOL deep,
137                        [out,retval] IXMLDOMNode **cloneRoot );
138
139     [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
140     HRESULT nodeTypeString( [out,retval] BSTR *nodeType );
141
142     [propget, id(DISPID_XMLDOM_NODE_TEXT)]
143     HRESULT text( [out,retval] BSTR *text );
144
145     [propput, id(DISPID_XMLDOM_NODE_TEXT)]
146     HRESULT text( [in] BSTR text );
147
148     [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
149     HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified );
150
151     [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
152     HRESULT definition( [out,retval] IXMLDOMNode **definitionNode );
153
154     [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
155     HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue );
156
157     [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
158     HRESULT nodeTypedValue( [in] VARIANT typedValue );
159
160     [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
161     HRESULT dataType( [out,retval] VARIANT *dataTypeName );
162
163     [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
164     HRESULT dataType( [in] BSTR dataTypeName );
165
166     [propget, id(DISPID_XMLDOM_NODE_XML)]
167     HRESULT xml( [out,retval] BSTR *xmlString );
168
169     [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
170     HRESULT transformNode( [in] IXMLDOMNode *styleSheet,
171                            [out,retval] BSTR *xmlString );
172
173     [id(DISPID_XMLDOM_NODE_SELECTNODES)]
174     HRESULT selectNodes( [in] BSTR queryString,
175                          [out,retval] IXMLDOMNodeList **resultList );
176
177     [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
178     HRESULT selectSingleNode( [in] BSTR queryString,
179                               [out,retval] IXMLDOMNode **resultNode );
180
181     [propget, id(DISPID_XMLDOM_NODE_PARSED)]
182     HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed );
183
184     [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
185     HRESULT namespaceURI( [out,retval] BSTR *namespaceURI );
186
187     [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
188     HRESULT prefix( [out,retval] BSTR *prefixString );
189
190     [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
191     HRESULT baseName( [out,retval] BSTR *nameString );
192
193     [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
194     HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet,
195                                    [in] VARIANT outputObject );
196 }
197
198 [
199 local,
200 object,
201 odl,
202 dual,
203 /*nonextensible,*/
204 oleautomation,
205 uuid(2933bf81-7b36-11d2-b20e-00c04f983e60),
206 pointer_default(unique)
207 ]
208 interface IXMLDOMDocument : IXMLDOMNode
209 {
210     [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
211     HRESULT doctype( [out,retval] IXMLDOMDocumentType **documentType );
212
213     [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
214     HRESULT implementation( [out,retval] IXMLDOMImplementation **impl );
215
216     [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
217     HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement );
218
219     [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
220     HRESULT documentElement( [in] IXMLDOMElement *DOMElement );
221
222     [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
223     HRESULT createElement( [in] BSTR tagname,
224                            [out,retval] IXMLDOMElement **element );
225
226     [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
227     HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag );
228
229     [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
230     HRESULT createTextNode( [in] BSTR data,
231                             [out,retval] IXMLDOMText **text );
232
233     [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
234     HRESULT createComment( [in] BSTR data,
235                            [out,retval] IXMLDOMComment **comment );
236
237     [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
238     HRESULT createCDATASection( [in] BSTR data,
239                                 [out,retval] IXMLDOMCDATASection **cdata );
240
241     [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
242     HRESULT createProcessingInstruction( [in] BSTR target,
243                                          [in] BSTR data,
244                                          [out,retval] IXMLDOMProcessingInstruction **pi );
245
246     [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
247     HRESULT createAttribute( [in] BSTR name,
248                              [out,retval] IXMLDOMAttribute **attribute );
249
250     [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
251     HRESULT createEntityReference( [in] BSTR name,
252                                    [out,retval] IXMLDOMEntityReference **entityRef );
253
254     [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
255     HRESULT getElementsByTagName( [in] BSTR tagName,
256                                   [out,retval] IXMLDOMNodeList **resultList );
257
258     [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
259     HRESULT createNode( [in] VARIANT Type,
260                         [in] BSTR name,
261                         [in] BSTR namespaceURI,
262                         [out,retval] IXMLDOMNode **node );
263
264     [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
265     HRESULT nodeFromID( [in] BSTR idString,
266                         [out,retval] IXMLDOMNode **node );
267
268     [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
269     HRESULT load( [in] VARIANT xmlSource,
270                   [out,retval] VARIANT_BOOL *isSuccessful );
271
272     [propget, id(DISPID_READYSTATE)]
273     HRESULT readyState( [out,retval] LONG *value );
274
275     [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
276     HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj );
277
278     [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
279     HRESULT url( [out,retval] BSTR *urlString );
280
281     /* FIXME: these is meant to be async, but widl parses that as a keyword */
282     [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
283     HRESULT async( [out,retval] VARIANT_BOOL *isAsync );
284
285     [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
286     HRESULT async( [in] VARIANT_BOOL isAsync );
287
288     [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
289     HRESULT abort();
290
291     [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
292     HRESULT loadXML( [in] BSTR bstrXML,
293                      [out,retval] VARIANT_BOOL *isSuccessful );
294
295     [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
296     HRESULT save( [in] VARIANT destination );
297
298     [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
299     HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating );
300
301     [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
302     HRESULT validateOnParse( [in] VARIANT_BOOL isValidating );
303
304     [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
305     HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving );
306
307     [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
308     HRESULT resolveExternals( [in] VARIANT_BOOL isValidating );
309
310     [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
311     HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving );
312
313     [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
314     HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving );
315
316     [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
317     HRESULT onreadystatechange( [in] VARIANT readystatechangeSink );
318
319     [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
320     HRESULT ondataavailable( [in] VARIANT ondataavailableSink );
321
322     [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
323     HRESULT ontransformnode( [in] VARIANT ontransformnodeSink );
324 }
325
326 [
327 local,
328 object,
329 odl,
330 dual,
331 /*nonextensible,*/
332 oleautomation,
333 uuid(2933bf82-7b36-11d2-b20e-00c04f983e60),
334 pointer_default(unique)
335 ]
336 interface IXMLDOMNodeList : IDispatch
337 {
338     [propget, id(DISPID_VALUE)]
339     HRESULT item( [in] LONG index,
340                   [out,retval] IXMLDOMNode **listItem );
341
342     [propget, id(DISPID_DOM_NODELIST_LENGTH)]
343     HRESULT length( [out,retval] LONG *listLength );
344
345     [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
346     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
347
348     [id(DISPID_XMLDOM_NODELIST_RESET)]
349     HRESULT reset();
350
351     [id(DISPID_NEWENUM)]
352     HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
353 }
354
355 [
356 local,
357 object,
358 odl,
359 dual,
360 /*nonextensible,*/
361 oleautomation,
362 uuid(2933bf83-7b36-11d2-b20e-00c04f983e60),
363 pointer_default(unique)
364 ]
365 interface IXMLDOMNamedNodeMap : IDispatch
366 {
367     [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
368     HRESULT getNamedItem( [in] BSTR name,
369                           [out,retval] IXMLDOMNode **namedItem );
370
371     [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
372     HRESULT setNamedItem( [in] IXMLDOMNode *newItem,
373                           [out,retval] IXMLDOMNode **namedItem );
374
375     [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
376     HRESULT removeNamedItem( [in] BSTR name,
377                              [out,retval] IXMLDOMNode **namedItem );
378
379     [propget, id(DISPID_VALUE)]
380     HRESULT item( [in] LONG index,
381                   [out,retval] IXMLDOMNode **listItem );
382
383     [propget, id(DISPID_DOM_NODELIST_LENGTH)]
384     HRESULT length( [out,retval] LONG *listLength );
385
386     [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
387     HRESULT getQualifiedItem( [in] BSTR baseName,
388                               [in] BSTR namespaceURI,
389                               [out,retval] IXMLDOMNode **qualifiedItem );
390
391     [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
392     HRESULT removeQualifiedItem( [in] BSTR baseName,
393                                  [in] BSTR namespaceURI,
394                                  [out,retval] IXMLDOMNode **qualifiedItem );
395
396     [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
397     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
398
399     [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
400     HRESULT reset();
401
402     [id(DISPID_NEWENUM)]
403     HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
404 }
405
406 [
407 local,
408 object,
409 odl,
410 dual,
411 /*nonextensible,*/
412 oleautomation,
413 uuid(3efaa413-272f-11d2-836f-0000f87a7782),
414 pointer_default(unique)
415 ]
416 interface IXMLDOMDocumentFragment : IXMLDOMNode
417 {
418     /* empty */
419 }
420
421 [
422 local,
423 object,
424 odl,
425 dual,
426 /*nonextensible,*/
427 oleautomation,
428 uuid(2933bf84-7b36-11d2-b20e-00c04f983e60),
429 pointer_default(unique)
430 ]
431 interface IXMLDOMCharacterData : IXMLDOMNode
432 {
433     [propget, id(DISPID_DOM_DATA_DATA)]
434     HRESULT data( [out,retval] BSTR *data );
435
436     [propput, id(DISPID_DOM_DATA_DATA)]
437     HRESULT data( [in] BSTR data );
438
439     [propget, id(DISPID_DOM_DATA_LENGTH)]
440     HRESULT length( [out,retval] LONG *dataLength );
441
442     [id(DISPID_DOM_DATA_SUBSTRING)]
443     HRESULT substringData( [in] LONG offset,
444                            [in] LONG count,
445                            [out,retval] BSTR *data );
446
447     [id(DISPID_DOM_DATA_APPEND)]
448     HRESULT appendData( [in] BSTR data );
449
450     [id(DISPID_DOM_DATA_INSERT)]
451     HRESULT insertData( [in] LONG offset,
452                         [in] BSTR data );
453
454     [id(DISPID_DOM_DATA_DELETE)]
455     HRESULT deleteData( [in] LONG offset,
456                         [in] LONG count );
457
458     [id(DISPID_DOM_DATA_REPLACE)]
459     HRESULT replaceData( [in] LONG offset,
460                          [in] LONG count,
461                          [in] BSTR data );
462 }
463
464 [
465 local,
466 object,
467 odl,
468 dual,
469 /*nonextensible,*/
470 oleautomation,
471 uuid(2933bf85-7b36-11d2-b20e-00c04f983e60),
472 pointer_default(unique)
473 ]
474 interface IXMLDOMAttribute : IXMLDOMNode
475 {
476     [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)]
477     HRESULT name( [out,retval] BSTR *attributeName );
478
479     [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)]
480     HRESULT value( [out,retval] VARIANT *attributeValue );
481
482     [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)]
483     HRESULT value( [in] VARIANT attributeValue );
484 }
485
486 [
487 local,
488 object,
489 odl,
490 dual,
491 /*nonextensible,*/
492 oleautomation,
493 uuid(2933bf86-7b36-11d2-b20e-00c04f983e60),
494 pointer_default(unique)
495 ]
496 interface IXMLDOMElement : IXMLDOMNode
497 {
498     [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)]
499     HRESULT tagName( [out,retval] BSTR *tagName );
500
501     [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)]
502     HRESULT getAttribute( [in] BSTR name,
503                           [out,retval] VARIANT * value );
504
505     [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)]
506     HRESULT setAttribute( [in] BSTR name,
507                           [in] VARIANT value );
508
509     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)]
510     HRESULT removeAttribute( [in] BSTR name );
511
512     [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)]
513     HRESULT getAttributeNode( [in] BSTR name,
514                               [out, retval] IXMLDOMAttribute ** attributeNode );
515
516     [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)]
517     HRESULT setAttributeNode( [in] IXMLDOMAttribute *DOMAttribute,
518                               [out, retval] IXMLDOMAttribute ** attributeNode );
519
520     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)]
521     HRESULT removeAttributeNode( [in] IXMLDOMAttribute *DOMAttribute,
522                               [out, retval] IXMLDOMAttribute ** attributeNode );
523
524     [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)]
525     HRESULT getElementsByTagName( [in] BSTR tagName,
526                               [out, retval] IXMLDOMNodeList ** resultList );
527
528     [id(DISPID_DOM_ELEMENT_NORMALIZE)]
529     HRESULT normalize();
530 }
531
532 [
533 local,
534 object,
535 odl,
536 dual,
537 /*nonextensible,*/
538 oleautomation,
539 uuid(2933bf87-7b36-11d2-b20e-00c04f983e60),
540 pointer_default(unique)
541 ]
542 interface IXMLDOMText : IXMLDOMCharacterData
543 {
544     [id(DISPID_DOM_TEXT_SPLITTEXT)]
545     HRESULT splitText( [in] LONG offset,
546                        [out,retval] IXMLDOMText **rightHandTextNode );
547 }
548
549 [
550 local,
551 object,
552 odl,
553 dual,
554 /*nonextensible,*/
555 oleautomation,
556 uuid(2933bf88-7b36-11d2-b20e-00c04f983e60),
557 pointer_default(unique)
558 ]
559 interface IXMLDOMComment : IXMLDOMCharacterData
560 {
561     /* empty */
562 }
563
564 [
565 local,
566 object,
567 odl,
568 dual,
569 /*nonextensible,*/
570 oleautomation,
571 uuid(2933bf89-7b36-11d2-b20e-00c04f983e60),
572 pointer_default(unique)
573 ]
574 interface IXMLDOMProcessingInstruction : IXMLDOMNode
575 {
576     [propget, id(DISPID_DOM_PI_TARGET)]
577     HRESULT target( [out, retval] BSTR *name );
578
579     [propget, id(DISPID_DOM_PI_DATA)]
580     HRESULT data( [out, retval] BSTR *value );
581
582     [propput, id(DISPID_DOM_PI_DATA)]
583     HRESULT data( [in] BSTR value );
584 }
585
586 [
587 local,
588 object,
589 odl,
590 dual,
591 /*nonextensible,*/
592 oleautomation,
593 uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60),
594 pointer_default(unique)
595 ]
596 interface IXMLDOMCDATASection : IXMLDOMText
597 {
598     /* empty */
599 }
600
601 [
602 local,
603 object,
604 odl,
605 dual,
606 /*nonextensible,*/
607 oleautomation,
608 uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60),
609 pointer_default(unique)
610 ]
611 interface IXMLDOMDocumentType : IXMLDOMNode
612 {
613     [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
614     HRESULT name( [out,retval] BSTR *rootName );
615
616     [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
617     HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap );
618
619     [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
620     HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap );
621 }
622
623 [
624 local,
625 object,
626 odl,
627 dual,
628 nonextensible,
629 oleautomation,
630 uuid(2933bf8c-7b36-11d2-b20e-00c04f983e60),
631 pointer_default(unique)
632 ]
633 interface IXMLDOMNotation : IXMLDOMNode
634 {
635     [propget, id(DISPID_DOM_NOTATION_PUBLICID)]
636     HRESULT publicId([out, retval] VARIANT *publicId);
637
638     [propget, id(DISPID_DOM_NOTATION_SYSTEMID)]
639     HRESULT systemId([out, retval] VARIANT *systemId);
640 }
641
642 [
643 local,
644 object,
645 odl,
646 dual,
647 nonextensible,
648 oleautomation,
649 uuid(2933bf8d-7b36-11d2-b20e-00c04f983e60),
650 pointer_default(unique)
651 ]
652 interface IXMLDOMEntity : IXMLDOMNode
653 {
654     [propget, id(DISPID_DOM_ENTITY_PUBLICID)]
655     HRESULT publicId([out, retval] VARIANT *publicId);
656
657     [propget, id(DISPID_DOM_ENTITY_SYSTEMID)]
658     HRESULT systemId([out, retval] VARIANT *systemId);
659
660     [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)]
661     HRESULT notationName([out, retval] BSTR *name);
662 }
663
664 [
665 local,
666 object,
667 odl,
668 dual,
669 nonextensible,
670 oleautomation,
671 uuid(2933bf8e-7b36-11d2-b20e-00c04f983e60),
672 pointer_default(unique)
673 ]
674 interface IXMLDOMEntityReference : IXMLDOMNode
675 {
676 }
677
678 [
679 local,
680 object,
681 odl,
682 dual,
683 nonextensible,
684 oleautomation,
685 uuid(2933bf8f-7b36-11d2-b20e-00c04f983e60),
686 pointer_default(unique)
687 ]
688 interface IXMLDOMImplementation : IDispatch
689 {
690     [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
691     HRESULT hasFeature([in] BSTR feature, [in] BSTR version, [out, retval] VARIANT_BOOL *pbool);
692 }
693
694 [
695 local,
696 object,
697 odl,
698 dual,
699 oleautomation,
700 /*nonextensible,*/
701 helpstring("structure for reporting parse errors"),
702 pointer_default(unique),
703 uuid (3efaa426-272f-11d2-836f-0000f87a7782)
704 ]
705 interface IXMLDOMParseError : IDispatch
706 {
707     [propget, id(DISPID_VALUE)]
708     HRESULT errorCode([retval, out] LONG *errCode);
709
710     [propget, id(DISPID_DOM_ERROR_URL)]
711     HRESULT url([retval, out] BSTR *p);
712
713     [propget, id(DISPID_DOM_ERROR_REASON)]
714     HRESULT reason([retval, out] BSTR *p);
715
716     [propget, id(DISPID_DOM_ERROR_SRCTEXT)]
717     HRESULT srcText([retval, out] BSTR *p);
718
719     [propget, id(DISPID_DOM_ERROR_LINE)]
720     HRESULT line([retval, out] LONG *lineNo);
721
722     [propget, id(DISPID_DOM_ERROR_LINEPOS)]
723     HRESULT linepos([retval, out] LONG * linePos);
724
725     [propget, id(DISPID_DOM_ERROR_FILEPOS)]
726     HRESULT filepos([retval, out] LONG * filePos);
727 }
728
729 [
730     hidden,
731     uuid(3efaa427-272f-11d2-836f-0000f87a7782)
732 ]
733 dispinterface XMLDOMDocumentEvents
734 {
735     properties:
736     methods:
737     [id(DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]
738     HRESULT ondataavailable();
739
740     [id(DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)]
741     HRESULT onreadystatechange();
742 }
743
744 [
745     helpstring("XML DOM Document"),
746     progid("Microsoft.XMLDOM.1.0"),
747     vi_progid("Microsoft.XMLDOM"),
748     threading(both),
749     version(1.0),
750     uuid(2933bf90-7b36-11d2-b20e-00c04f983e60)
751 ]
752 coclass DOMDocument
753 {
754     [default] interface IXMLDOMDocument;
755     [default, source] dispinterface XMLDOMDocumentEvents;
756 }
757
758 [
759     helpstring("Free Threaded XML DOM Document"),
760     progid("Microsoft.FreeThreadedXMLDOM.1.0"),
761     vi_progid("Microsoft.FreeThreadedXMLDOM"),
762     threading(both),
763     version(1.0),
764     uuid(2933bf91-7b36-11d2-b20e-00c04f983e60)
765 ]
766 coclass DOMFreeThreadedDocument
767 {
768     [default] interface IXMLDOMDocument;
769     [default, source] dispinterface XMLDOMDocumentEvents;
770 }
771
772 [
773 object,
774 uuid(ed8c108d-4349-11d2-91a4-00c04f7969e8),
775 odl,
776 dual,
777 oleautomation,
778 pointer_default(unique)
779 ]
780 interface IXMLHttpRequest : IDispatch
781 {
782     [id(1)]
783     HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl,
784                  [in, optional] VARIANT varAsync,
785                  [in, optional] VARIANT varUser,
786                  [in, optional] VARIANT varPassword);
787     [id(2)]
788     HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
789
790     [id(3)]
791     HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR *pbstrValue);
792
793     [id(4)]
794     HRESULT getAllResponseHeaders([out, retval] BSTR *pbstrHeaders);
795
796     [id(5)]
797     HRESULT send([in, optional] VARIANT varBody);
798
799     [id(6)]
800     HRESULT abort();
801
802     [propget, id(7)]
803     HRESULT status([out, retval] LONG *plStatus);
804
805     [propget, id(8)]
806     HRESULT statusText([out, retval] BSTR *bstrStatus);
807
808     [propget, id(9)]
809     HRESULT responseXML([out, retval] IDispatch **ppBody);
810
811     [propget, id(10)]
812     HRESULT responseText([out, retval] BSTR *pbstrBody);
813
814     [propget, id(11)]
815     HRESULT responseBody([out, retval] VARIANT *pvarBody);
816
817     [propget, id(12)]
818     HRESULT responseStream([out, retval] VARIANT *pvarBody);
819
820     [propget, id(13)]
821     HRESULT readyState([out, retval] LONG *plState);
822
823     [propput, id(14)]
824     HRESULT onreadystatechange([in] IDispatch *pReadyStateSink);
825 }
826
827 [
828     helpstring("XML HTTP Request"),
829     progid("Microsoft.XMLHTTP.1.0"),
830     vi_progid("Microsoft.XMLHTTP"),
831     threading(apartment),
832     version(1.0),
833     uuid(ed8c108e-4349-11d2-91a4-00c04f7969e8)
834 ]
835 coclass XMLHTTPRequest
836 {
837     [default] interface IXMLHttpRequest;
838 }