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