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