xref: /reactos/sdk/include/psdk/msxml2.idl (revision 8a978a17)
1/*
2 * Copyright (C) 2005 Vijay Kiran Kamuju
3 * Copyright (C) 2008 Alistair Leslie-Hughes
4 * Copyright (C) 2010 Nikolay Sivov for CodeWeavers
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include <msxml2did.h>
22#include <idispids.h>
23
24import "unknwn.idl";
25import "objidl.idl";
26import "oaidl.idl";
27
28#if !defined(progid) && !defined(__WIDL__)
29#define threading(model)
30#define progid(str)
31#define vi_progid(str)
32#endif
33
34[
35    uuid(f5078f18-c551-11d3-89b9-0000f81fe221),
36    version(3.0),
37    helpstring("Microsoft XML, v3.0")
38]
39library MSXML2
40{
41
42importlib("stdole2.tlb");
43
44interface IXMLDOMImplementation;
45interface IXMLDOMNode;
46interface IXMLDOMDocumentFragment;
47interface IXMLDOMDocument;
48interface IXMLDOMSchemaCollection;
49interface IXMLDOMDocument2;
50interface IXMLDOMNodeList;
51interface IXMLDOMNamedNodeMap;
52interface IXMLDOMCharacterData;
53interface IXMLDOMAttribute;
54interface IXMLDOMElement;
55interface IXMLDOMText;
56interface IXMLDOMComment;
57interface IXMLDOMProcessingInstruction;
58interface IXMLDOMCDATASection;
59interface IXMLDOMDocumentType;
60interface IXMLDOMNotation;
61interface IXMLDOMEntity;
62interface IXMLDOMEntityReference;
63interface IXMLDOMParseError;
64interface IXMLDOMParseErrorCollection;
65interface IXTLRuntime;
66interface IXSLTemplate;
67interface IXSLProcessor;
68
69/* SAX Interfaces */
70interface ISAXAttributes;
71interface ISAXContentHandler;
72interface ISAXDeclHandler;
73interface ISAXDTDHandler;
74interface ISAXEntityResolver;
75interface ISAXErrorHandler;
76interface ISAXLexicalHandler;
77interface ISAXLocator;
78interface ISAXXMLReader;
79interface ISAXXMLFilter;
80
81interface IVBSAXAttributes;
82interface IVBSAXContentHandler;
83interface IVBSAXDeclHandler;
84interface IVBSAXDTDHandler;
85interface IVBSAXEntityResolver;
86interface IVBSAXErrorHandler;
87interface IVBSAXLexicalHandler;
88interface IVBSAXLocator;
89interface IVBSAXXMLFilter;
90interface IVBSAXXMLReader;
91
92interface IMXAttributes;
93interface IMXReaderControl;
94interface IMXWriter;
95
96interface IXMLDOMSchemaCollection2;
97interface ISchemaStringCollection;
98interface ISchemaItemCollection;
99interface ISchemaItem;
100interface ISchema;
101interface ISchemaParticle;
102interface ISchemaAttribute;
103interface ISchemaElement;
104interface ISchemaType;
105interface ISchemaComplexType;
106interface ISchemaAttributeGroup;
107interface ISchemaModelGroup;
108interface ISchemaAny;
109interface ISchemaIdentityConstraint;
110interface ISchemaNotation;
111
112
113cpp_quote("#define DOMDocument DOMDocument2")
114cpp_quote("#define CLSID_DOMDocument CLSID_DOMDocument2")
115
116cpp_quote("#ifndef __MSXML_DOMNODETYPE_DEFINED")
117cpp_quote("#define __MSXML_DOMNODETYPE_DEFINED")
118typedef enum tagDOMNodeType
119{
120    NODE_INVALID  		= 0,
121    NODE_ELEMENT  		= 1,
122    NODE_ATTRIBUTE		= 2,
123    NODE_TEXT			= 3,
124    NODE_CDATA_SECTION		= 4,
125    NODE_ENTITY_REFERENCE 	= 5,
126    NODE_ENTITY 		= 6,
127    NODE_PROCESSING_INSTRUCTION = 7,
128    NODE_COMMENT		= 8,
129    NODE_DOCUMENT		= 9,
130    NODE_DOCUMENT_TYPE		= 10,
131    NODE_DOCUMENT_FRAGMENT 	= 11,
132    NODE_NOTATION 		= 12
133} DOMNodeType;
134cpp_quote("#endif")
135
136typedef enum _SOMITEMTYPE
137{
138    SOMITEM_SCHEMA                      = 0x1000,
139    SOMITEM_ATTRIBUTE                   = 0x1001,
140    SOMITEM_ATTRIBUTEGROUP              = 0x1002,
141    SOMITEM_NOTATION                    = 0x1003,
142    SOMITEM_IDENTITYCONSTRAINT          = 0x1100,
143    SOMITEM_KEY                         = 0x1101,
144    SOMITEM_KEYREF                      = 0x1102,
145    SOMITEM_UNIQUE                      = 0x1103,
146    SOMITEM_ANYTYPE                     = 0x2000,
147    SOMITEM_DATATYPE                    = 0x2100,
148    SOMITEM_DATATYPE_ANYTYPE            = 0x2101,
149    SOMITEM_DATATYPE_ANYURI             = 0x2102,
150    SOMITEM_DATATYPE_BASE64BINARY       = 0x2103,
151    SOMITEM_DATATYPE_BOOLEAN            = 0x2104,
152    SOMITEM_DATATYPE_BYTE               = 0x2105,
153    SOMITEM_DATATYPE_DATE               = 0x2106,
154    SOMITEM_DATATYPE_DATETIME           = 0x2107,
155    SOMITEM_DATATYPE_DAY                = 0x2108,
156    SOMITEM_DATATYPE_DECIMAL            = 0x2109,
157    SOMITEM_DATATYPE_DOUBLE             = 0x210A,
158    SOMITEM_DATATYPE_DURATION           = 0x210B,
159    SOMITEM_DATATYPE_ENTITIES           = 0x210C,
160    SOMITEM_DATATYPE_ENTITY             = 0x210D,
161    SOMITEM_DATATYPE_FLOAT              = 0x210E,
162    SOMITEM_DATATYPE_HEXBINARY          = 0x210F,
163    SOMITEM_DATATYPE_ID                 = 0x2110,
164    SOMITEM_DATATYPE_IDREF              = 0x2111,
165    SOMITEM_DATATYPE_IDREFS             = 0x2112,
166    SOMITEM_DATATYPE_INT                = 0x2113,
167    SOMITEM_DATATYPE_INTEGER            = 0x2114,
168    SOMITEM_DATATYPE_LANGUAGE           = 0x2115,
169    SOMITEM_DATATYPE_LONG               = 0x2116,
170    SOMITEM_DATATYPE_MONTH              = 0x2117,
171    SOMITEM_DATATYPE_MONTHDAY           = 0x2118,
172    SOMITEM_DATATYPE_NAME               = 0x2119,
173    SOMITEM_DATATYPE_NCNAME             = 0x211A,
174    SOMITEM_DATATYPE_NEGATIVEINTEGER    = 0x211B,
175    SOMITEM_DATATYPE_NMTOKEN            = 0x211C,
176    SOMITEM_DATATYPE_NMTOKENS           = 0x211D,
177    SOMITEM_DATATYPE_NONNEGATIVEINTEGER = 0x211E,
178    SOMITEM_DATATYPE_NONPOSITIVEINTEGER = 0x211F,
179    SOMITEM_DATATYPE_NORMALIZEDSTRING   = 0x2120,
180    SOMITEM_DATATYPE_NOTATION           = 0x2121,
181    SOMITEM_DATATYPE_POSITIVEINTEGER    = 0x2122,
182    SOMITEM_DATATYPE_QNAME              = 0x2123,
183    SOMITEM_DATATYPE_SHORT              = 0x2124,
184    SOMITEM_DATATYPE_STRING             = 0x2125,
185    SOMITEM_DATATYPE_TIME               = 0x2126,
186    SOMITEM_DATATYPE_TOKEN              = 0x2127,
187    SOMITEM_DATATYPE_UNSIGNEDBYTE       = 0x2128,
188    SOMITEM_DATATYPE_UNSIGNEDINT        = 0x2129,
189    SOMITEM_DATATYPE_UNSIGNEDLONG       = 0x212A,
190    SOMITEM_DATATYPE_UNSIGNEDSHORT      = 0x212B,
191    SOMITEM_DATATYPE_YEAR               = 0x212C,
192    SOMITEM_DATATYPE_YEARMONTH          = 0x212D,
193    SOMITEM_DATATYPE_ANYSIMPLETYPE      = 0x21FF,
194    SOMITEM_SIMPLETYPE                  = 0x2200,
195    SOMITEM_COMPLEXTYPE                 = 0x2400,
196    SOMITEM_PARTICLE                    = 0x4000,
197    SOMITEM_ANY                         = 0x4001,
198    SOMITEM_ANYATTRIBUTE                = 0x4002,
199    SOMITEM_ELEMENT                     = 0x4003,
200    SOMITEM_GROUP                       = 0x4100,
201    SOMITEM_ALL                         = 0x4101,
202    SOMITEM_CHOICE                      = 0x4102,
203    SOMITEM_SEQUENCE                    = 0x4103,
204    SOMITEM_EMPTYPARTICLE               = 0x4104,
205    SOMITEM_NULL                        = 0x0800,
206    SOMITEM_NULL_TYPE                   = 0x2800,
207    SOMITEM_NULL_ANY                    = 0x4801,
208    SOMITEM_NULL_ANYATTRIBUTE           = 0x4802,
209    SOMITEM_NULL_ELEMENT                = 0x4803,
210} SOMITEMTYPE;
211
212typedef enum _SCHEMAUSE
213{
214    SCHEMAUSE_OPTIONAL,
215    SCHEMAUSE_PROHIBITED,
216    SCHEMAUSE_REQUIRED,
217} SCHEMAUSE;
218
219typedef enum _SCHEMADERIVATIONMETHOD
220{
221    SCHEMADERIVATIONMETHOD_EMPTY        = 0x0000,
222    SCHEMADERIVATIONMETHOD_SUBSTITUTION = 0x0001,
223    SCHEMADERIVATIONMETHOD_EXTENSION    = 0x0002,
224    SCHEMADERIVATIONMETHOD_RESTRICTION  = 0x0004,
225    SCHEMADERIVATIONMETHOD_LIST         = 0x0008,
226    SCHEMADERIVATIONMETHOD_UNION        = 0x0010,
227    SCHEMADERIVATIONMETHOD_ALL          = 0x00FF,
228    SCHEMADERIVATIONMETHOD_NONE         = 0x0100,
229} SCHEMADERIVATIONMETHOD;
230
231typedef enum _SCHEMACONTENTTYPE
232{
233    SCHEMACONTENTTYPE_EMPTY,
234    SCHEMACONTENTTYPE_TEXTONLY,
235    SCHEMACONTENTTYPE_ELEMENTONLY,
236    SCHEMACONTENTTYPE_MIXED,
237} SCHEMACONTENTTYPE;
238
239typedef enum _SCHEMAPROCESSCONTENTS
240{
241    SCHEMAPROCESSCONTENTS_NONE,
242    SCHEMAPROCESSCONTENTS_SKIP,
243    SCHEMAPROCESSCONTENTS_LAX,
244    SCHEMAPROCESSCONTENTS_STRICT,
245} SCHEMAPROCESSCONTENTS;
246
247typedef enum _SCHEMAWHITESPACE
248{
249    SCHEMAWHITESPACE_NONE       = -1,
250    SCHEMAWHITESPACE_PRESERVE   =  0,
251    SCHEMAWHITESPACE_REPLACE    =  1,
252    SCHEMAWHITESPACE_COLLAPSE   =  2,
253} SCHEMAWHITESPACE;
254
255
256typedef enum _SCHEMATYPEVARIETY
257{
258    SCHEMATYPEVARIETY_NONE      = -1,
259    SCHEMATYPEVARIETY_ATOMIC    =  0,
260    SCHEMATYPEVARIETY_LIST      =  1,
261    SCHEMATYPEVARIETY_UNION     =  2,
262} SCHEMATYPEVARIETY;
263
264[
265local,
266object,
267odl,
268dual,
269oleautomation,
270uuid(65725580-9b5d-11d0-9bfe-00c04fc99c8e)
271]
272interface IXMLElementCollection : IDispatch
273{
274    [propput, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
275    HRESULT length( [in] LONG v );
276
277    [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)]
278    HRESULT length( [retval, out] LONG *p );
279
280    [propget, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)]
281    HRESULT _newEnum( [retval, out] IUnknown ** ppUnk );
282
283    [id(DISPID_XMLELEMENTCOLLECTION_ITEM)]
284    HRESULT item(
285            [optional, in] VARIANT var1,
286            [optional, in] VARIANT var2,
287            [retval, out] IDispatch ** ppDisp );
288}
289
290[
291local,
292object,
293uuid(3f7f31ac-e15f-11d0-9c25-00c04fc99c8e)
294]
295interface IXMLElement : IDispatch
296{
297    [propget, id(DISPID_XMLELEMENT_TAGNAME)]
298    HRESULT tagName( [retval, out] BSTR *p);
299
300    [propput, id(DISPID_XMLELEMENT_TAGNAME)]
301    HRESULT tagName( [in] BSTR p );
302
303    [propget, id(DISPID_XMLELEMENT_PARENT)]
304    HRESULT parent( [retval, out] IXMLElement **parent );
305
306    [id(DISPID_XMLELEMENT_SETATTRIBUTE)]
307    HRESULT setAttribute(
308            [in] BSTR strPropertyName,
309            [in] VARIANT PropertyValue );
310
311    [id(DISPID_XMLELEMENT_GETATTRIBUTE)]
312    HRESULT getAttribute(
313            [in] BSTR strPropertyName,
314            [retval, out] VARIANT *PropertyValue );
315
316    [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)]
317    HRESULT removeAttribute(
318            [in] BSTR strPropertyName );
319
320    [propget, id(DISPID_XMLELEMENT_CHILDREN)]
321    HRESULT children( [retval, out] IXMLElementCollection **p );
322
323    [propget, id(DISPID_XMLELEMENT_TYPE)]
324    HRESULT type( [retval, out] LONG *p );
325
326    [propget, id(DISPID_XMLELEMENT_TEXT)]
327    HRESULT text( [retval, out] BSTR *p );
328
329    [propput, id(DISPID_XMLELEMENT_TEXT)]
330    HRESULT text( [in] BSTR p );
331
332    [id(DISPID_XMLELEMENT_ADDCHILD)]
333    HRESULT addChild(
334            [in] IXMLElement *pChildElem,
335            [in] LONG lIndex,
336            [in] LONG lreserved );
337
338    [id(DISPID_XMLELEMENT_REMOVECHILD)]
339    HRESULT removeChild(
340            [in] IXMLElement *pChildElem );
341}
342
343[
344local,
345object,
346dual,
347oleautomation,
348uuid (2933BF80-7B36-11d2-B20E-00C04F983E60)
349]
350interface IXMLDOMNode : IDispatch
351{
352    [propget, id(DISPID_DOM_NODE_NODENAME)]
353    HRESULT nodeName([retval, out] BSTR *p);
354
355    [propget, id(DISPID_DOM_NODE_NODEVALUE)]
356    HRESULT nodeValue([retval, out] VARIANT *var1);
357
358    [propput, id(DISPID_DOM_NODE_NODEVALUE)]
359    HRESULT nodeValue([in] VARIANT var1);
360
361    [propget, id(DISPID_DOM_NODE_NODETYPE)]
362    HRESULT nodeType([retval, out] DOMNodeType *domNodeType);
363
364    [propget, id(DISPID_DOM_NODE_PARENTNODE)]
365    HRESULT parentNode([retval, out] IXMLDOMNode **parent);
366
367    [propget, id(DISPID_DOM_NODE_CHILDNODES)]
368    HRESULT childNodes([retval, out] IXMLDOMNodeList **outList);
369
370    [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
371    HRESULT firstChild([retval, out] IXMLDOMNode **domNode);
372
373    [propget, id(DISPID_DOM_NODE_LASTCHILD)]
374    HRESULT lastChild([retval, out] IXMLDOMNode **domNode);
375
376    [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
377    HRESULT previousSibling([retval, out] IXMLDOMNode **domNode);
378
379    [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
380    HRESULT nextSibling([retval, out] IXMLDOMNode **domNode);
381
382    [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
383    HRESULT attributes([retval, out] IXMLDOMNamedNodeMap **attributeMap);
384
385    [id(DISPID_DOM_NODE_INSERTBEFORE)]
386    HRESULT insertBefore(
387        [in] IXMLDOMNode *newNode,
388        [in] VARIANT var1,
389        [retval, out] IXMLDOMNode **outOldNode);
390
391    [id(DISPID_DOM_NODE_REPLACECHILD)]
392    HRESULT replaceChild(
393        [in] IXMLDOMNode *newNode,
394        [in] IXMLDOMNode *oldNode,
395        [retval, out] IXMLDOMNode **outOldNode);
396
397    [id(DISPID_DOM_NODE_REMOVECHILD)]
398    HRESULT removeChild(
399        [in] IXMLDOMNode *domNode,
400        [retval, out] IXMLDOMNode **oldNode);
401
402    [id(DISPID_DOM_NODE_APPENDCHILD)]
403    HRESULT appendChild(
404        [in] IXMLDOMNode *newNode,
405        [retval, out] IXMLDOMNode **outNewNode);
406
407    [id(DISPID_DOM_NODE_HASCHILDNODES)]
408    HRESULT hasChildNodes(
409        [retval, out] VARIANT_BOOL *pbool);
410
411    [propget, id(DISPID_DOM_NODE_OWNERDOC)]
412    HRESULT ownerDocument([retval, out] IXMLDOMDocument **domDocument);
413
414    [id(DISPID_DOM_NODE_CLONENODE)]
415    HRESULT cloneNode(
416        [in] VARIANT_BOOL pbool,
417        [retval, out] IXMLDOMNode **outNode);
418
419    [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
420    HRESULT nodeTypeString([retval, out] BSTR *p);
421
422    [propget, id(DISPID_XMLDOM_NODE_TEXT)]
423    HRESULT text([retval, out] BSTR *p);
424
425    [propput, id(DISPID_XMLDOM_NODE_TEXT)]
426    HRESULT text([in] BSTR p);
427
428    [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
429    HRESULT specified([retval, out] VARIANT_BOOL *pbool);
430
431    [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
432    HRESULT definition([retval,out] IXMLDOMNode **domNode);
433
434    [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
435    HRESULT nodeTypedValue([retval, out] VARIANT *var1);
436
437    [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
438    HRESULT nodeTypedValue([in] VARIANT var1);
439
440    [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
441    HRESULT dataType([retval, out] VARIANT *var1);
442
443    [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
444    HRESULT dataType([in] BSTR p);
445
446    [propget, id(DISPID_XMLDOM_NODE_XML)]
447    HRESULT xml([retval, out] BSTR *p);
448
449    [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
450    HRESULT transformNode(
451        [in] IXMLDOMNode *domNode,
452        [retval, out] BSTR *p);
453
454    [id(DISPID_XMLDOM_NODE_SELECTNODES)]
455    HRESULT selectNodes(
456        [in] BSTR p,
457        [retval, out] IXMLDOMNodeList **outList);
458
459    [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
460    HRESULT selectSingleNode(
461        [in] BSTR p,
462        [retval, out] IXMLDOMNode **outNode);
463
464    [propget,id(DISPID_XMLDOM_NODE_PARSED)]
465    HRESULT parsed([retval, out] VARIANT_BOOL *pbool);
466
467    [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
468    HRESULT namespaceURI([retval, out] BSTR *p);
469
470    [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
471    HRESULT prefix([retval, out] BSTR *p);
472
473    [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
474    HRESULT baseName([retval, out] BSTR *p);
475
476    [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
477    HRESULT transformNodeToObject(
478        [in] IXMLDOMNode *domNode,
479        [in] VARIANT var1);
480}
481
482[
483local,
484object,
485dual,
486oleautomation,
487uuid (2933BF81-7B36-11d2-B20E-00C04F983E60)
488]
489interface IXMLDOMDocument : IXMLDOMNode
490{
491    [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
492    HRESULT doctype([retval, out] IXMLDOMDocumentType **docType);
493
494    [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
495    HRESULT implementation([retval, out] IXMLDOMImplementation **impl);
496
497    [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
498    HRESULT documentElement([retval, out] IXMLDOMElement **domElement);
499
500    [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
501    HRESULT documentElement([in] IXMLDOMElement *domElement);
502
503    [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
504    HRESULT createElement(
505        [in] BSTR p,
506        [retval, out] IXMLDOMElement **domElement);
507
508    [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
509    HRESULT createDocumentFragment(
510        [retval, out] IXMLDOMDocumentFragment **docFrag);
511
512    [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
513    HRESULT createTextNode(
514        [in] BSTR p,
515        [retval, out] IXMLDOMText **text);
516
517    [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
518    HRESULT createComment(
519        [in] BSTR p,
520        [retval, out] IXMLDOMComment **comment);
521
522    [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
523    HRESULT createCDATASection(
524        [in] BSTR p,
525        [retval, out] IXMLDOMCDATASection **cdata);
526
527    [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
528    HRESULT createProcessingInstruction(
529        [in] BSTR target,
530        [in] BSTR data,
531        [retval, out] IXMLDOMProcessingInstruction **pi);
532
533    [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
534    HRESULT createAttribute(
535        [in] BSTR p,
536        [retval, out] IXMLDOMAttribute **attribute);
537
538    [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
539    HRESULT createEntityReference(
540        [in] BSTR p,
541        [retval, out] IXMLDOMEntityReference **entityRef);
542
543    [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
544    HRESULT getElementsByTagName(
545        [in] BSTR p,
546        [retval, out] IXMLDOMNodeList **resultList);
547
548    [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
549    HRESULT createNode(
550        [in] VARIANT var,
551        [in] BSTR name,
552        [in] BSTR uri,
553        [retval, out] IXMLDOMNode **node);
554
555    [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
556    HRESULT nodeFromID(
557        [in] BSTR id,
558        [retval, out] IXMLDOMNode **node);
559
560    [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
561    HRESULT load(
562        [in] VARIANT var1,
563        [retval, out] VARIANT_BOOL *pbool);
564
565    [propget, id(DISPID_READYSTATE)]
566    HRESULT readyState([retval, out] LONG *value);
567
568    [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
569    HRESULT parseError([retval, out] IXMLDOMParseError **err);
570
571    [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
572    HRESULT url([retval, out] BSTR *p);
573
574    [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
575    HRESULT async([retval, out] VARIANT_BOOL *pbool);
576
577    [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
578    HRESULT async([in] VARIANT_BOOL pbool);
579
580    [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
581    HRESULT abort();
582
583    [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
584    HRESULT loadXML(
585        [in] BSTR p,
586        [out, retval] VARIANT_BOOL *pbool);
587
588    [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
589    HRESULT save(
590        [in] VARIANT var1);
591
592    [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
593    HRESULT validateOnParse([retval, out] VARIANT_BOOL *pbool);
594
595    [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
596    HRESULT validateOnParse([in] VARIANT_BOOL pbool);
597
598    [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
599    HRESULT resolveExternals([retval,out] VARIANT_BOOL *pbool);
600
601    [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
602    HRESULT resolveExternals([in] VARIANT_BOOL pbool);
603
604    [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
605    HRESULT preserveWhiteSpace([retval,out] VARIANT_BOOL *pbool);
606
607    [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
608    HRESULT preserveWhiteSpace([in] VARIANT_BOOL pbool);
609
610    [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
611    HRESULT onreadystatechange([in] VARIANT var1);
612
613    [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
614    HRESULT ondataavailable([in] VARIANT var1);
615
616    [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
617    HRESULT ontransformnode([in] VARIANT var1);
618}
619
620[
621local,
622object,
623dual,
624oleautomation,
625uuid (373984c8-b845-449b-91e7-45ac83036ade)
626]
627interface IXMLDOMSchemaCollection : IDispatch
628{
629    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADD)]
630    HRESULT add(
631        [in] BSTR uri,
632        [in] VARIANT var);
633
634    [id(DISPID_XMLDOM_SCHEMACOLLECTION_GET)]
635    HRESULT get(
636        [in] BSTR uri,
637        [retval, out] IXMLDOMNode **node);
638
639    [id(DISPID_XMLDOM_SCHEMACOLLECTION_REMOVE)]
640    HRESULT remove(
641        [in] BSTR uri);
642
643    [propget, id(DISPID_XMLDOM_SCHEMACOLLECTION_LENGTH)]
644    HRESULT length(
645        [retval, out] LONG *length);
646
647    [propget, id(DISPID_VALUE)]
648    HRESULT namespaceURI([in] LONG index, [out, retval] BSTR *len);
649
650    [id(DISPID_XMLDOM_SCHEMACOLLECTION_ADDCOLLECTION)]
651    HRESULT addCollection(
652        [in] IXMLDOMSchemaCollection *otherCollection);
653
654    [propget, id(DISPID_NEWENUM)]
655    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
656}
657
658[
659    local,
660    object,
661    dual,
662    oleautomation,
663    uuid(50ea08b0-dd1b-4664-9a50-c2f40f4bd79a),
664]
665interface IXMLDOMSchemaCollection2 : IXMLDOMSchemaCollection
666{
667    [id(DISPID_SOM_VALIDATE)]
668    HRESULT validate();
669
670    [propput, id(DISPID_SOM_VALIDATEONLOAD)]
671    HRESULT validateOnLoad(
672        [in] VARIANT_BOOL validateOnLoad);
673
674    [propget, id(DISPID_SOM_VALIDATEONLOAD)]
675    HRESULT validateOnLoad(
676        [out,retval] VARIANT_BOOL* validateOnLoad);
677
678    [id(DISPID_SOM_GETSCHEMA)]
679    HRESULT getSchema(
680        [in] BSTR namespaceURI,
681        [out,retval] ISchema** schema);
682
683    [id(DISPID_SOM_GETDECLARATION)]
684    HRESULT getDeclaration(
685        [in] IXMLDOMNode* node,
686        [out,retval]ISchemaItem** item);
687};
688
689[
690local,
691object,
692dual,
693oleautomation,
694uuid (2933BF95-7B36-11d2-B20E-00C04F983E60)
695]
696interface IXMLDOMDocument2 : IXMLDOMDocument
697{
698    [propget, id(DISPID_XMLDOM_DOCUMENT2_NAMESPACES)]
699    HRESULT namespaces([retval, out] IXMLDOMSchemaCollection **schemaCollection);
700
701    [propget, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
702    HRESULT schemas([retval, out] VARIANT *var1);
703
704    [propputref, id(DISPID_XMLDOM_DOCUMENT2_SCHEMAS)]
705    HRESULT schemas([in] VARIANT var1);
706
707    [id(DISPID_XMLDOM_DOCUMENT2_VALIDATE)]
708    HRESULT validate(
709        [retval, out] IXMLDOMParseError **err);
710
711    [id(DISPID_XMLDOM_DOCUMENT2_SETPROPERTY)]
712    HRESULT setProperty(
713        [in] BSTR p,
714        [in] VARIANT var);
715
716    [id(DISPID_XMLDOM_DOCUMENT2_GETPROPERTY)]
717    HRESULT getProperty(
718        [in] BSTR p,
719        [retval, out] VARIANT *var);
720}
721
722[
723    local,
724    object,
725    dual,
726    uuid(2933bf96-7b36-11d2-b20e-00c04f983e60),
727    oleautomation,
728]
729interface IXMLDOMDocument3 : IXMLDOMDocument2
730{
731    [id(DISPID_XMLDOM_DOCUMENT3_VALIDATENODE)]
732    HRESULT validateNode(
733        [in] IXMLDOMNode *node,
734        [out, retval] IXMLDOMParseError **error);
735
736    [id(DISPID_XMLDOM_DOCUMENT3_IMPORTNODE)]
737    HRESULT importNode(
738        [in] IXMLDOMNode *node,
739        [in] VARIANT_BOOL deep,
740        [out, retval] IXMLDOMNode **clone);
741}
742
743[
744local,
745object,
746dual,
747oleautomation,
748uuid (2933BF82-7B36-11d2-B20E-00C04F983E60)
749]
750interface IXMLDOMNodeList : IDispatch
751{
752    [propget, id(DISPID_VALUE)]
753    HRESULT item([in] LONG lIndex, [retval, out] IXMLDOMNode **outNode);
754
755    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
756    HRESULT length([retval, out] LONG *lLength);
757
758    [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
759    HRESULT nextNode(
760        [retval, out] IXMLDOMNode **outNode);
761
762    [id(DISPID_XMLDOM_NODELIST_RESET)]
763    HRESULT reset();
764
765    [propget, id(DISPID_NEWENUM)]
766    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
767}
768
769[
770local,
771object,
772dual,
773oleautomation,
774uuid (AA634FC7-5888-44a7-A257-3A47150D3A0E)
775]
776interface IXMLDOMSelection : IXMLDOMNodeList
777{
778    [propget, id(DISPID_XMLDOM_SELECTION_EXPR)]
779    HRESULT expr([retval, out] BSTR *p);
780
781    [propput, id(DISPID_XMLDOM_SELECTION_EXPR)]
782    HRESULT expr([in] BSTR p);
783
784    [propget, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
785    HRESULT context([retval, out] IXMLDOMNode **ppNode);
786
787    [propputref, id(DISPID_XMLDOM_SELECTION_CONTEXT)]
788    HRESULT context([in] IXMLDOMNode * pNode);
789
790    [id(DISPID_XMLDOM_SELECTION_PEEKNODE)]
791    HRESULT peekNode(
792        [retval, out] IXMLDOMNode **ppNode);
793
794    [id(DISPID_XMLDOM_SELECTION_MATCHES)]
795    HRESULT matches(
796        [in] IXMLDOMNode *pNode,
797        [retval, out] IXMLDOMNode **ppNode);
798
799    [id(DISPID_XMLDOM_SELECTION_REMOVENEXT)]
800    HRESULT removeNext(
801        [retval, out] IXMLDOMNode **ppNode);
802
803    [id(DISPID_XMLDOM_SELECTION_REMOVEALL)]
804    HRESULT removeAll();
805
806    [id(DISPID_XMLDOM_SELECTION_CLONE)]
807    HRESULT clone(
808        [retval, out] IXMLDOMSelection **ppNode);
809
810    [id(DISPID_XMLDOM_SELECTION_GETPROPERTY)]
811    HRESULT getProperty(
812        [in] BSTR p,
813        [retval, out] VARIANT * var);
814
815    [id(DISPID_XMLDOM_SELECTION_SETPROPERTY)]
816    HRESULT setProperty(
817        [in] BSTR p,
818        [in] VARIANT var);
819}
820
821[
822local,
823object,
824dual,
825oleautomation,
826uuid (2933BF83-7B36-11d2-B20E-00C04F983E60)
827]
828interface IXMLDOMNamedNodeMap : IDispatch
829{
830    [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
831    HRESULT getNamedItem(
832        [in] BSTR p,
833        [retval, out] IXMLDOMNode **outNode);
834
835    [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
836    HRESULT setNamedItem(
837        [in] IXMLDOMNode *newNode,
838        [retval, out] IXMLDOMNode **outNode);
839
840    [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
841    HRESULT removeNamedItem(
842        [in] BSTR p,
843        [retval, out] IXMLDOMNode **outNode);
844
845    [propget, id(DISPID_VALUE)]
846    HRESULT item([in] LONG lIndex, [retval, out] IXMLDOMNode **outNode);
847
848    [propget, id(DISPID_DOM_NODELIST_LENGTH)]
849    HRESULT length([retval, out] LONG *lLength);
850
851    [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
852    HRESULT getQualifiedItem(
853        [in] BSTR name,
854        [in] BSTR uri,
855        [retval, out] IXMLDOMNode **outNode);
856
857    [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
858    HRESULT removeQualifiedItem(
859        [in] BSTR name,
860        [in] BSTR uri,
861        [retval, out] IXMLDOMNode **outNode);
862
863    [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
864    HRESULT nextNode(
865        [retval, out] IXMLDOMNode **outNode);
866
867    [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
868    HRESULT reset();
869
870    [propget, id(DISPID_NEWENUM)]
871    HRESULT _newEnum([retval, out] IUnknown **ppUnk);
872}
873
874[
875local,
876object,
877dual,
878oleautomation,
879uuid (3efaa413-272f-11d2-836f-0000f87a7782)
880]
881interface IXMLDOMDocumentFragment : IXMLDOMNode
882{
883}
884
885[
886local,
887object,
888dual,
889oleautomation,
890uuid (2933BF84-7B36-11d2-B20E-00C04F983E60)
891]
892interface IXMLDOMCharacterData : IXMLDOMNode
893{
894    [propget, id(DISPID_DOM_DATA_DATA)]
895    HRESULT data([retval, out] BSTR *p);
896
897    [propput, id(DISPID_DOM_DATA_DATA)]
898    HRESULT data([in] BSTR data);
899
900    [propget, id(DISPID_DOM_DATA_LENGTH)]
901    HRESULT length([retval, out] LONG *len);
902
903    [id(DISPID_DOM_DATA_SUBSTRING)]
904    HRESULT substringData(
905        [in] LONG offset,
906        [in] LONG count,
907        [retval, out] BSTR *p);
908
909    [id(DISPID_DOM_DATA_APPEND)]
910    HRESULT appendData(
911        [in] BSTR p);
912
913    [id(DISPID_DOM_DATA_INSERT)]
914    HRESULT insertData(
915        [in] LONG offset,
916        [in] BSTR p);
917
918    [id(DISPID_DOM_DATA_DELETE)]
919    HRESULT deleteData(
920        [in] LONG offset,
921        [in] LONG count);
922
923    [id(DISPID_DOM_DATA_REPLACE)]
924    HRESULT replaceData(
925        [in] LONG offset,
926        [in] LONG count,
927        [in] BSTR p);
928}
929
930[
931local,
932object,
933dual,
934oleautomation,
935uuid (2933BF85-7B36-11d2-B20E-00C04F983E60)
936]
937interface IXMLDOMAttribute : IXMLDOMNode
938{
939    [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME)]
940    HRESULT name([retval, out] BSTR *p);
941
942    [propget, id(DISPID_DOM_ATTRIBUTE_VALUE)]
943    HRESULT value([retval, out] VARIANT *var1);
944
945    [propput, id(DISPID_DOM_ATTRIBUTE_VALUE)]
946    HRESULT value([in] VARIANT var1);
947}
948
949[
950local,
951object,
952dual,
953oleautomation,
954uuid (2933BF86-7B36-11d2-B20E-00C04F983E60)
955]
956interface IXMLDOMElement : IXMLDOMNode
957{
958    [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)]
959    HRESULT tagName([retval, out] BSTR *p);
960
961    [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)]
962    HRESULT getAttribute(
963        [in] BSTR p,
964        [retval, out] VARIANT *var);
965
966    [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)]
967    HRESULT setAttribute(
968        [in] BSTR p,
969        [in] VARIANT var);
970
971    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)]
972    HRESULT removeAttribute(
973        [in] BSTR p);
974
975    [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)]
976    HRESULT getAttributeNode(
977        [in] BSTR p,
978        [retval, out] IXMLDOMAttribute **attributeNode);
979
980    [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)]
981    HRESULT setAttributeNode(
982        [in] IXMLDOMAttribute *domAttribute,
983        [retval, out] IXMLDOMAttribute **attributeNode);
984
985    [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)]
986    HRESULT removeAttributeNode(
987        [in] IXMLDOMAttribute *domAttribute,
988        [retval, out] IXMLDOMAttribute **attributeNode);
989
990    [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)]
991    HRESULT getElementsByTagName(
992        [in] BSTR p,
993        [retval, out] IXMLDOMNodeList **resultList);
994
995    [id(DISPID_DOM_ELEMENT_NORMALIZE)]
996    HRESULT normalize();
997}
998
999[
1000local,
1001object,
1002dual,
1003oleautomation,
1004uuid (2933BF87-7B36-11d2-B20E-00C04F983E60)
1005]
1006interface IXMLDOMText : IXMLDOMCharacterData
1007{
1008    [id(DISPID_DOM_TEXT_SPLITTEXT)]
1009    HRESULT splitText(
1010        [in] LONG offset,
1011        [retval, out] IXMLDOMText **txtNode);
1012}
1013
1014[
1015local,
1016object,
1017dual,
1018oleautomation,
1019uuid (2933BF88-7B36-11d2-B20E-00C04F983E60)
1020]
1021interface IXMLDOMComment : IXMLDOMCharacterData
1022{
1023}
1024
1025[
1026local,
1027object,
1028dual,
1029oleautomation,
1030uuid (2933BF89-7B36-11d2-B20E-00C04F983E60)
1031]
1032interface IXMLDOMProcessingInstruction : IXMLDOMNode
1033{
1034    [propget, id(DISPID_DOM_PI_TARGET)]
1035    HRESULT target([retval, out] BSTR *p);
1036
1037    [propget, id(DISPID_DOM_PI_DATA)]
1038    HRESULT data([retval, out] BSTR *p);
1039
1040    [propput, id(DISPID_DOM_PI_DATA)]
1041    HRESULT data([in] BSTR p);
1042}
1043
1044[
1045local,
1046object,
1047dual,
1048oleautomation,
1049uuid (2933BF8A-7B36-11d2-B20E-00C04F983E60)
1050]
1051interface IXMLDOMCDATASection : IXMLDOMText
1052{
1053}
1054
1055[
1056local,
1057object,
1058dual,
1059oleautomation,
1060uuid (2933BF8B-7B36-11d2-B20E-00C04F983E60)
1061]
1062interface IXMLDOMDocumentType : IXMLDOMNode
1063{
1064    [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
1065    HRESULT name([retval, out] BSTR *p);
1066
1067    [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
1068    HRESULT entities([retval, out] IXMLDOMNamedNodeMap **entityMap);
1069
1070    [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
1071    HRESULT notations([retval, out] IXMLDOMNamedNodeMap **notationMap);
1072}
1073
1074[
1075local,
1076object,
1077dual,
1078oleautomation,
1079uuid (2933BF8C-7B36-11d2-B20E-00C04F983E60)
1080]
1081interface IXMLDOMNotation : IXMLDOMNode
1082{
1083    [propget, id(DISPID_DOM_NOTATION_PUBLICID)]
1084    HRESULT publicId([retval, out] VARIANT *id);
1085
1086    [propget, id(DISPID_DOM_NOTATION_SYSTEMID)]
1087    HRESULT systemId([retval, out] VARIANT *id);
1088}
1089
1090[
1091local,
1092object,
1093dual,
1094oleautomation,
1095uuid (2933BF8D-7B36-11d2-B20E-00C04F983E60)
1096]
1097interface IXMLDOMEntity : IXMLDOMNode
1098{
1099    [propget, id(DISPID_DOM_ENTITY_PUBLICID)]
1100    HRESULT publicId([retval, out] VARIANT *id1);
1101
1102    [propget, id(DISPID_DOM_ENTITY_SYSTEMID)]
1103    HRESULT systemId([retval, out] VARIANT *id1);
1104
1105    [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)]
1106    HRESULT notationName([retval, out] BSTR *p);
1107}
1108
1109[
1110local,
1111object,
1112dual,
1113oleautomation,
1114uuid (2933BF8E-7B36-11d2-B20E-00C04F983E60)
1115]
1116interface IXMLDOMEntityReference : IXMLDOMNode
1117{
1118}
1119
1120[
1121local,
1122object,
1123dual,
1124oleautomation,
1125uuid (2933BF8F-7B36-11d2-B20E-00C04F983E60)
1126]
1127interface IXMLDOMImplementation : IDispatch
1128{
1129    [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
1130    HRESULT hasFeature(
1131        [in] BSTR feature,
1132        [in] BSTR version,
1133        [retval, out] VARIANT_BOOL *pbool);
1134}
1135
1136[
1137local,
1138object,
1139dual,
1140oleautomation,
1141uuid (3efaa425-272f-11d2-836f-0000f87a7782)
1142]
1143interface IXTLRuntime : IXMLDOMNode
1144{
1145    [id(DISPID_XTLRUNTIME_UNIQUEID)]
1146    HRESULT uniqueID(
1147        [in]IXMLDOMNode *pNode,
1148        [retval, out]LONG *pID);
1149
1150    [id(DISPID_XTLRUNTIME_DEPTH)]
1151    HRESULT depth(
1152        [in] IXMLDOMNode *pNode,
1153        [retval, out]LONG * pDepth);
1154
1155    [id(DISPID_XTLRUNTIME_CHILDNUMBER)]
1156    HRESULT childNumber(
1157        [in]IXMLDOMNode *pNode,
1158        [retval, out] LONG *pNumber);
1159
1160    [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER)]
1161    HRESULT ancestorChildNumber(
1162        [in]BSTR bstr,
1163        [in]IXMLDOMNode *pNode,
1164        [retval, out]LONG *pNumber);
1165
1166    [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER)]
1167    HRESULT absoluteChildNumber(
1168        [in]IXMLDOMNode *pNode,
1169        [retval, out]LONG *pNumber);
1170
1171    [id(DISPID_XTLRUNTIME_FORMATINDEX)]
1172    HRESULT formatIndex(
1173        [in] LONG lIndex,
1174        [in] BSTR bstr,
1175        [retval, out]BSTR *pbstr);
1176
1177    [id(DISPID_XTLRUNTIME_FORMATNUMBER)]
1178    HRESULT formatNumber(
1179        [in] double dblNumber,
1180        [in] BSTR bstr,
1181        [retval, out]BSTR *pbstr);
1182
1183    [id(DISPID_XTLRUNTIME_FORMATDATE)]
1184    HRESULT formatDate(
1185        [in] VARIANT var1,
1186        [in] BSTR bstr,
1187        [optional, in] VARIANT var2,
1188        [retval, out]BSTR *pbstr);
1189
1190    [id(DISPID_XTLRUNTIME_FORMATTIME)]
1191    HRESULT formatTime(
1192        [in] VARIANT var1,
1193        [in] BSTR bstr,
1194        [optional, in] VARIANT var2,
1195        [retval, out]BSTR *pbstr);
1196
1197}
1198
1199[
1200local,
1201object,
1202odl,
1203dual,
1204oleautomation,
1205uuid(310afa62-0575-11d2-9ca9-0060b0ec3d39),
1206pointer_default(unique)
1207]
1208interface IDSOControl : IDispatch
1209{
1210	[propget,id(DISPID_XMLDSO_DOCUMENT)]
1211        HRESULT XMLDocument([out, retval] IXMLDOMDocument** ppDoc);
1212
1213	[propput,id(DISPID_XMLDSO_DOCUMENT)]
1214        HRESULT XMLDocument([in] IXMLDOMDocument* ppDoc);
1215
1216	[propget,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)]
1217        HRESULT JavaDSOCompatible([out, retval] BOOL* fJavaDSOCompatible);
1218
1219	[propput,id(DISPID_XMLDSO_JAVADSOCOMPATIBLE)]
1220        HRESULT JavaDSOCompatible([in]  BOOL fJavaDSOCompatible);
1221
1222	[propget, id(DISPID_READYSTATE)]
1223        HRESULT readyState([out, retval] long *state);
1224}
1225
1226[
1227    uuid(3efaa427-272f-11d2-836f-0000f87a7782)
1228]
1229dispinterface XMLDOMDocumentEvents
1230{
1231    properties:
1232    methods:
1233    [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]
1234    HRESULT ondataavailable();
1235
1236    [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)]
1237    HRESULT onreadystatechange();
1238}
1239
1240[
1241local,
1242object,
1243dual,
1244oleautomation,
1245uuid (2933BF92-7B36-11d2-B20E-00C04F983E60)
1246]
1247interface IXSLProcessor : IDispatch
1248{
1249    [propput, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
1250    HRESULT input([in] VARIANT var);
1251
1252    [propget, id(DISPID_XMLDOM_PROCESSOR_INPUT)]
1253    HRESULT input([retval, out] VARIANT *var);
1254
1255    [propget, id(DISPID_XMLDOM_PROCESSOR_XSLTEMPLATE)]
1256    HRESULT ownerTemplate([retval, out] IXSLTemplate **ppTemplate);
1257
1258    [id(DISPID_XMLDOM_PROCESSOR_SETSTARTMODE)]
1259    HRESULT setStartMode(
1260        [in] BSTR p,
1261        [in] BSTR uri);
1262
1263    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODE)]
1264    HRESULT startMode([retval, out] BSTR *p);
1265
1266    [propget, id(DISPID_XMLDOM_PROCESSOR_STARTMODEURI)]
1267    HRESULT startModeURI([retval, out] BSTR *uri);
1268
1269    [propput, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
1270    HRESULT output([in] VARIANT var);
1271
1272    [propget, id(DISPID_XMLDOM_PROCESSOR_OUTPUT)]
1273    HRESULT output([retval, out] VARIANT *var);
1274
1275    [id(DISPID_XMLDOM_PROCESSOR_TRANSFORM)]
1276    HRESULT transform(
1277        [retval, out] VARIANT_BOOL *pbool);
1278
1279    [id(DISPID_XMLDOM_PROCESSOR_RESET)]
1280    HRESULT reset();
1281
1282    [propget, id(DISPID_XMLDOM_PROCESSOR_READYSTATE)]
1283    HRESULT readyState([retval, out] LONG *pstate);
1284
1285    [id(DISPID_XMLDOM_PROCESSOR_ADDPARAMETER)]
1286    HRESULT addParameter(
1287        [in] BSTR p,
1288        [in] VARIANT var,
1289#ifndef __REACTOS__
1290        [in, defaultvalue(L"")] BSTR uri);
1291#else
1292        [in] BSTR uri);
1293#endif
1294
1295    [id(DISPID_XMLDOM_PROCESSOR_ADDOBJECT)]
1296    HRESULT addObject(
1297        [in] IDispatch* obj,
1298        [in] BSTR uri);
1299
1300    [propget, id(DISPID_XMLDOM_PROCESSOR_STYLESHEET)]
1301    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
1302}
1303
1304[
1305local,
1306object,
1307dual,
1308oleautomation,
1309uuid (2933BF93-7B36-11d2-B20E-00C04F983E60)
1310]
1311interface IXSLTemplate : IDispatch
1312{
1313    [propputref, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
1314    HRESULT stylesheet([in] IXMLDOMNode *node);
1315
1316    [propget, id(DISPID_XMLDOM_TEMPLATE_STYLESHEET)]
1317    HRESULT stylesheet([retval, out] IXMLDOMNode **node);
1318
1319    [id(DISPID_XMLDOM_TEMPLATE_CREATEPROCESSOR)]
1320    HRESULT createProcessor(
1321        [retval, out] IXSLProcessor **ppProcessor);
1322}
1323
1324[
1325    object,
1326    uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
1327    odl,
1328    dual,
1329    oleautomation,
1330    pointer_default(unique)
1331]
1332interface IXMLHTTPRequest : IDispatch
1333{
1334    [id(1)]
1335    HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in, optional] VARIANT varAsync,
1336                 [in,optional] VARIANT username, [in,optional] VARIANT password);
1337
1338    [id(2)]
1339    HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
1340
1341    [id(3)]
1342    HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR * value);
1343
1344    [id(4)]
1345    HRESULT getAllResponseHeaders([out, retval] BSTR * pbstrHeaders);
1346
1347    [id(5)]
1348    HRESULT send([in, optional] VARIANT body);
1349
1350    [id(6)]
1351    HRESULT abort();
1352
1353    [propget, id(7)]
1354    HRESULT status([out, retval] LONG *pStatus);
1355
1356    [propget, id(8)]
1357    HRESULT statusText([out, retval] BSTR *pStatus);
1358
1359    [propget, id(9)]
1360    HRESULT responseXML([out, retval] IDispatch **pBody);
1361
1362    [propget, id(10)]
1363    HRESULT responseText([out, retval] BSTR *pBody);
1364
1365    [propget, id(11)]
1366    HRESULT responseBody([out, retval] VARIANT *pBody);
1367
1368    [propget, id(12)]
1369    HRESULT responseStream([out, retval] VARIANT *pBody);
1370
1371    [propget, id(13)]
1372    HRESULT readyState([out, retval] LONG *pState);
1373
1374    [propput, id(14)]
1375    HRESULT onreadystatechange([in] IDispatch *pReadyStateSink);
1376};
1377
1378[
1379object,
1380dual,
1381oleautomation,
1382uuid(2e9196bf-13ba-4dd4-91ca-6c571f281495)
1383]
1384interface IServerXMLHTTPRequest : IXMLHTTPRequest
1385{
1386    typedef enum _SERVERXMLHTTP_OPTION
1387    {
1388        SXH_OPTION_URL = -1,
1389        SXH_OPTION_URL_CODEPAGE,
1390        SXH_OPTION_ESCAPE_PERCENT_IN_URL,
1391        SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS,
1392        SXH_OPTION_SELECT_CLIENT_SSL_CERT
1393    } SERVERXMLHTTP_OPTION;
1394
1395    [id(15)]
1396    HRESULT setTimeouts(
1397        [in] long resolveTimeout,
1398        [in] long connectTimeout,
1399        [in] long sendTimeout,
1400        [in] long receiveTimeout);
1401
1402    [id(16)]
1403    HRESULT waitForResponse(
1404        [in, optional] VARIANT timeoutInSeconds,
1405        [out, retval] VARIANT_BOOL * isSuccessful);
1406
1407    [id(17)]
1408    HRESULT getOption(
1409        [in] SERVERXMLHTTP_OPTION option,
1410        [out, retval] VARIANT * value);
1411
1412    [id(18)]
1413    HRESULT setOption(
1414        [in] SERVERXMLHTTP_OPTION option,
1415        [in] VARIANT value);
1416}
1417
1418[
1419object,
1420dual,
1421oleautomation,
1422uuid(2e01311b-c322-4b0a-bd77-b90cfdc8dce7)
1423]
1424interface IServerXMLHTTPRequest2 : IServerXMLHTTPRequest
1425{
1426    typedef enum _SXH_PROXY_SETTING
1427    {
1428        SXH_PROXY_SET_DEFAULT = 0,
1429        SXH_PROXY_SET_PRECONFIG = 0,
1430        SXH_PROXY_SET_DIRECT,
1431        SXH_PROXY_SET_PROXY
1432    } SXH_PROXY_SETTING;
1433
1434    [id(19)]
1435    HRESULT setProxy(
1436        [in] SXH_PROXY_SETTING proxySetting,
1437        [in, optional] VARIANT varProxyServer,
1438        [in, optional] VARIANT varBypassList);
1439
1440    [id(20)]
1441    HRESULT setProxyCredentials(
1442        [in] BSTR bstrUserName,
1443        [in] BSTR bstrPassword);
1444}
1445
1446[
1447local,
1448object,
1449dual,
1450oleautomation,
1451uuid (3efaa426-272f-11d2-836f-0000f87a7782)
1452]
1453interface IXMLDOMParseError : IDispatch
1454{
1455    [propget, id(DISPID_VALUE)]
1456    HRESULT errorCode([retval, out] LONG *errCode);
1457
1458    [propget, id(DISPID_DOM_ERROR_URL)]
1459    HRESULT url([retval, out] BSTR *p);
1460
1461    [propget, id(DISPID_DOM_ERROR_REASON)]
1462    HRESULT reason([retval, out] BSTR *p);
1463
1464    [propget, id(DISPID_DOM_ERROR_SRCTEXT)]
1465    HRESULT srcText([retval, out] BSTR *p);
1466
1467    [propget, id(DISPID_DOM_ERROR_LINE)]
1468    HRESULT line([retval, out] LONG *lineNo);
1469
1470    [propget, id(DISPID_DOM_ERROR_LINEPOS)]
1471    HRESULT linepos([retval, out] LONG * linePos);
1472
1473    [propget, id(DISPID_DOM_ERROR_FILEPOS)]
1474    HRESULT filepos([retval, out] LONG * filePos);
1475}
1476
1477[
1478local,
1479object,
1480dual,
1481oleautomation,
1482uuid (3efaa428-272f-11d2-836f-0000f87a7782)
1483]
1484interface IXMLDOMParseError2 : IXMLDOMParseError
1485{
1486    [propget, id(DISPID_DOM_ERROR2_ERRORXPATH)]
1487    HRESULT errorXPath([retval, out] BSTR *xpathexpr);
1488
1489    [propget, id(DISPID_DOM_ERROR2_ALLERRORS)]
1490    HRESULT allErrors([retval, out] IXMLDOMParseErrorCollection **allErrors);
1491
1492    [id(DISPID_DOM_ERROR2_ERRORPARAMETERS)]
1493    HRESULT errorParameters(
1494        [in] long index,
1495        [retval, out] BSTR *param);
1496
1497    [propget, id(DISPID_DOM_ERROR2_ERRORPARAMETERSCOUNT)]
1498    HRESULT errorParametersCount([retval, out] long *count);
1499}
1500
1501[
1502local,
1503object,
1504dual,
1505oleautomation,
1506uuid (3efaa429-272f-11d2-836f-0000f87a7782)
1507]
1508interface IXMLDOMParseErrorCollection : IDispatch
1509{
1510    [propget, id(DISPID_VALUE)]
1511    HRESULT item(
1512        [in] long index,
1513        [retval, out] IXMLDOMParseError2 **error);
1514
1515    [propget, id(DISPID_DOM_ERRORCOLLECTION_LENGTH)]
1516    HRESULT length( [retval, out] long *length);
1517
1518    [propget, id(DISPID_DOM_ERRORCOLLECTION_NEXT)]
1519    HRESULT next( [retval, out] IXMLDOMParseError2 **error);
1520
1521    [id(DISPID_DOM_ERRORCOLLECTION_RESET)]
1522    HRESULT reset();
1523
1524    [propget, hidden, restricted, id(DISPID_NEWENUM)]
1525    HRESULT _newEnum( [retval, out] IUnknown **ppunk);
1526}
1527
1528[
1529    uuid(f5078f1b-c551-11d3-89b9-0000f81fe221)
1530]
1531coclass DOMDocument26
1532{
1533    [default] interface IXMLDOMDocument2;
1534    [default, source] dispinterface XMLDOMDocumentEvents;
1535}
1536
1537[
1538    helpstring("XML DOM Document 3.0"),
1539    progid("Msxml2.DOMDocument.3.0"),
1540    vi_progid("Msxml2.DOMDocument"),
1541    threading(both),
1542    uuid(f5078f32-c551-11d3-89b9-0000f81fe221)
1543]
1544coclass DOMDocument30
1545{
1546    [default] interface IXMLDOMDocument2;
1547    [default, source] dispinterface XMLDOMDocumentEvents;
1548}
1549
1550[
1551    uuid(88d969c0-f192-11d4-a65f-0040963251e5)
1552]
1553coclass DOMDocument40
1554{
1555    [default] interface IXMLDOMDocument2;
1556    [default, source] dispinterface XMLDOMDocumentEvents;
1557}
1558
1559[
1560    uuid(88d96a05-f192-11d4-a65f-0040963251e5)
1561]
1562coclass DOMDocument60
1563{
1564    [default] interface IXMLDOMDocument3;
1565    [default, source] dispinterface XMLDOMDocumentEvents;
1566}
1567
1568[
1569    helpstring("XML DOM Document"),
1570    progid("Msxml2.DOMDocument"),
1571    vi_progid("Msxml2.DOMDocument"),
1572    threading(both),
1573    uuid(f6d90f11-9c73-11d3-b32e-00c04f990bb4)
1574]
1575coclass DOMDocument
1576{
1577    [default] interface IXMLDOMDocument2;
1578    [default, source] dispinterface XMLDOMDocumentEvents;
1579}
1580
1581[
1582    uuid(f5078f1c-c551-11d3-89b9-0000f81fe221)
1583]
1584coclass FreeThreadedDOMDocument26
1585{
1586    [default] interface IXMLDOMDocument2;
1587    [default, source] dispinterface XMLDOMDocumentEvents;
1588}
1589
1590[
1591    helpstring("Free threaded XML DOM Document 3.0"),
1592    progid("Msxml2.FreeThreadedDOMDocument.3.0"),
1593    vi_progid("Msxml2.FreeThreadedDOMDocument"),
1594    threading(both),
1595    uuid(f5078f33-c551-11d3-89b9-0000f81fe221)
1596]
1597coclass FreeThreadedDOMDocument30
1598{
1599    [default] interface IXMLDOMDocument2;
1600    [default, source] dispinterface XMLDOMDocumentEvents;
1601}
1602
1603[
1604    uuid(88d969c1-f192-11d4-a65f-0040963251e5)
1605]
1606coclass FreeThreadedDOMDocument40
1607{
1608    [default] interface IXMLDOMDocument2;
1609    [default, source] dispinterface XMLDOMDocumentEvents;
1610}
1611
1612[
1613    uuid(88d96a06-f192-11d4-a65f-0040963251e5),
1614]
1615coclass FreeThreadedDOMDocument60
1616{
1617    [default] interface IXMLDOMDocument3;
1618    [default, source] dispinterface XMLDOMDocumentEvents;
1619}
1620
1621[
1622    helpstring("Free threaded XML DOM Document"),
1623    progid("Msxml2.FreeThreadedDOMDocument"),
1624    vi_progid("Msxml2.FreeThreadedDOMDocument"),
1625    threading(both),
1626    uuid(f6d90f12-9c73-11d3-b32e-00c04f990bb4)
1627]
1628coclass FreeThreadedDOMDocument
1629{
1630    [default] interface IXMLDOMDocument2;
1631    [default, source] dispinterface XMLDOMDocumentEvents;
1632}
1633
1634[
1635    uuid(f5078f1e-c551-11d3-89b9-0000f81fe221)
1636]
1637coclass XMLHTTP26
1638{
1639    [default] interface IXMLHTTPRequest;
1640}
1641
1642[
1643    helpstring("XML HTTP 3.0"),
1644    progid("Msxml2.XMLHTTP.3.0"),
1645    vi_progid("Msxml2.XMLHTTP"),
1646    threading(apartment),
1647    uuid(f5078f35-c551-11d3-89b9-0000f81fe221)
1648]
1649coclass XMLHTTP30
1650{
1651    [default] interface IXMLHTTPRequest;
1652}
1653
1654[
1655    uuid(88d969c5-f192-11d4-a65f-0040963251e5)
1656]
1657coclass XMLHTTP40
1658{
1659    [default] interface IXMLHTTPRequest;
1660}
1661
1662[
1663    uuid(88d96a0a-f192-11d4-a65f-0040963251e5)
1664]
1665coclass XMLHTTP60
1666{
1667    [default] interface IXMLHTTPRequest;
1668}
1669
1670[
1671    helpstring("XML HTTP"),
1672    progid("Msxml2.XMLHTTP"),
1673    vi_progid("Msxml2.XMLHTTP"),
1674    threading(apartment),
1675    uuid(f6d90f16-9c73-11d3-b32e-00c04f990bb4)
1676]
1677coclass XMLHTTP
1678{
1679    [default] interface IXMLHTTPRequest;
1680}
1681
1682[
1683    helpstring("Server XML HTTP 3.0"),
1684    progid("Msxml2.ServerXMLHTTP.3.0"),
1685    vi_progid("Msxml2.ServerXMLHTTP"),
1686    threading(apartment),
1687    uuid(afb40ffd-b609-40a3-9828-f88bbe11e4e3)
1688]
1689coclass ServerXMLHTTP30
1690{
1691    [default] interface IServerXMLHTTPRequest;
1692}
1693
1694[
1695    uuid(88d969c6-f192-11d4-a65f-0040963251e5)
1696]
1697coclass ServerXMLHTTP40
1698{
1699    [default] interface IServerXMLHTTPRequest2;
1700}
1701
1702[
1703    uuid(88d96a0b-f192-11d4-a65f-0040963251e5)
1704]
1705coclass ServerXMLHTTP60
1706{
1707    [default] interface IServerXMLHTTPRequest2;
1708}
1709
1710[
1711    helpstring("Server XML HTTP"),
1712    progid("Msxml2.ServerXMLHTTP"),
1713    vi_progid("Msxml2.ServerXMLHTTP"),
1714    threading(apartment),
1715    uuid(afba6b42-5692-48ea-8141-dc517dcf0ef1)
1716]
1717coclass ServerXMLHTTP
1718{
1719    [default] interface IServerXMLHTTPRequest;
1720}
1721
1722[
1723    uuid(f5078f1d-c551-11d3-89b9-0000f81fe221)
1724]
1725coclass XMLSchemaCache26
1726{
1727    [default] interface IXMLDOMSchemaCollection;
1728}
1729
1730[
1731    helpstring("XML Schema Cache 3.0"),
1732    progid("Msxml2.XMLSchemaCache.3.0"),
1733    vi_progid("Msxml2.XMLSchemaCache"),
1734    threading(both),
1735    uuid(f5078f34-c551-11d3-89b9-0000f81fe221)
1736]
1737coclass XMLSchemaCache30
1738{
1739    [default] interface IXMLDOMSchemaCollection;
1740}
1741
1742[
1743    uuid(88d969c2-f192-11d4-a65f-0040963251e5)
1744]
1745coclass XMLSchemaCache40
1746{
1747    [default] interface IXMLDOMSchemaCollection2;
1748}
1749
1750[
1751    uuid(88d96a07-f192-11d4-a65f-0040963251e5)
1752]
1753coclass XMLSchemaCache60
1754{
1755    [default] interface IXMLDOMSchemaCollection2;
1756}
1757
1758[
1759    helpstring("XML Schema Cache"),
1760    progid("Msxml2.XMLSchemaCache"),
1761    vi_progid("Msxml2.XMLSchemaCache"),
1762    threading(both),
1763    uuid(373984c9-b845-449b-91e7-45ac83036ade)
1764]
1765coclass XMLSchemaCache
1766{
1767    [default] interface IXMLDOMSchemaCollection;
1768}
1769
1770[
1771    uuid(f5078f21-c551-11d3-89b9-0000f81fe221)
1772]
1773coclass XSLTemplate26
1774{
1775    [default] interface IXSLTemplate;
1776}
1777
1778[
1779    helpstring("XSL Template 3.0"),
1780    progid("Msxml2.XSLTemplate.3.0"),
1781    vi_progid("Msxml2.XSLTemplate"),
1782    threading(both),
1783    uuid(f5078f36-c551-11d3-89b9-0000f81fe221)
1784]
1785coclass XSLTemplate30
1786{
1787    [default] interface IXSLTemplate;
1788}
1789
1790[
1791    uuid(88d969c3-f192-11d4-a65f-0040963251e5)
1792]
1793coclass XSLTemplate40
1794{
1795    [default] interface IXSLTemplate;
1796}
1797
1798[
1799    uuid(88d96a08-f192-11d4-a65f-0040963251e5)
1800]
1801coclass XSLTemplate60
1802{
1803    [default] interface IXSLTemplate;
1804}
1805
1806[
1807    helpstring("XSL Template"),
1808    progid("Msxml2.XSLTemplate"),
1809    vi_progid("Msxml2.XSLTemplate"),
1810    threading(both),
1811    uuid(2933BF94-7B36-11d2-B20E-00C04F983E60)
1812]
1813coclass XSLTemplate
1814{
1815    [default] interface IXSLTemplate;
1816}
1817
1818/*
1819 * Sax Interfaces
1820 */
1821[
1822    object,
1823    local,
1824    uuid(f078abe1-45d2-4832-91ea-4466ce2f25c9)
1825]
1826interface ISAXAttributes : IUnknown
1827{
1828    HRESULT getLength(
1829        [out, retval] int *length);
1830
1831    HRESULT getURI(
1832        [in] int nIndex,
1833        [out] const WCHAR **pUrl,
1834        [out] int *pUriSize);
1835
1836    HRESULT getLocalName(
1837        [in] int nIndex,
1838        [out] const WCHAR **pLocalName,
1839        [out] int *pLocalNameLength);
1840
1841    HRESULT getQName(
1842        [in] int nIndex,
1843        [out] const WCHAR **pQName,
1844        [out] int *pQNameLength);
1845
1846    HRESULT getName(
1847        [in] int nIndex,
1848        [out] const WCHAR **pUri,
1849        [out] int * pUriLength,
1850        [out] const WCHAR ** pLocalName,
1851        [out] int * pLocalNameSize,
1852        [out] const WCHAR ** pQName,
1853        [out] int * pQNameLength);
1854
1855    HRESULT getIndexFromName(
1856        [in] const WCHAR * pUri,
1857        [in] int cUriLength,
1858        [in] const WCHAR * pLocalName,
1859        [in] int cocalNameLength,
1860        [out, retval] int * index);
1861
1862    HRESULT getIndexFromQName(
1863        [in] const WCHAR * pQName,
1864        [in] int nQNameLength,
1865        [out, retval] int * index);
1866
1867    HRESULT getType(
1868        [in] int nIndex,
1869        [out] const WCHAR ** pType,
1870        [out] int * pTypeLength);
1871
1872    HRESULT getTypeFromName(
1873        [in] const WCHAR * pUri,
1874        [in] int nUri,
1875        [in] const WCHAR * pLocalName,
1876        [in] int nLocalName,
1877        [out] const WCHAR ** pType,
1878        [out] int * nType);
1879
1880    HRESULT getTypeFromQName(
1881        [in] const WCHAR * pQName,
1882        [in] int nQName,
1883        [out] const WCHAR ** pType,
1884        [out] int * nType);
1885
1886    HRESULT getValue(
1887        [in] int nIndex,
1888        [out] const WCHAR ** pValue,
1889        [out] int * nValue);
1890
1891    HRESULT getValueFromName(
1892        [in] const WCHAR * pUri,
1893        [in] int nUri,
1894        [in] const WCHAR * pLocalName,
1895        [in] int nLocalName,
1896        [out] const WCHAR ** pValue,
1897        [out] int * nValue);
1898
1899    HRESULT getValueFromQName(
1900        [in] const WCHAR * pQName,
1901        [in] int nQName,
1902        [out] const WCHAR ** pValue,
1903        [out] int * nValue);
1904};
1905
1906[
1907    object,
1908    local,
1909    uuid(1545cdfa-9e4e-4497-a8a4-2bf7d0112c44)
1910]
1911interface ISAXContentHandler : IUnknown
1912{
1913    HRESULT putDocumentLocator(
1914        [in] ISAXLocator * pLocator);
1915
1916    HRESULT startDocument();
1917
1918    HRESULT endDocument();
1919
1920    HRESULT startPrefixMapping(
1921        [in] const WCHAR * pPrefix,
1922        [in] int nPrefix,
1923        [in] const WCHAR * pUri,
1924        [in] int nUri);
1925
1926    HRESULT endPrefixMapping(
1927        [in] const WCHAR * pPrefix,
1928        [in] int nPrefix);
1929
1930    HRESULT startElement(
1931        [in] const WCHAR * pNamespaceUri,
1932        [in] int nNamespaceUri,
1933        [in] const WCHAR * pLocalName,
1934        [in] int nLocalName,
1935        [in] const WCHAR * pQName,
1936        [in] int nQName,
1937        [in] ISAXAttributes * pAttr);
1938
1939    HRESULT endElement(
1940        [in] const WCHAR * pNamespaceUri,
1941        [in] int nNamespaceUri,
1942        [in] const WCHAR * pLocalName,
1943        [in] int nLocalName,
1944        [in] const WCHAR * pQName,
1945        [in] int nQName);
1946
1947    HRESULT characters(
1948        [in] const WCHAR * pChars,
1949        [in] int nChars);
1950
1951    HRESULT ignorableWhitespace(
1952        [in] const WCHAR * pChars,
1953        [in] int nChars);
1954
1955    HRESULT processingInstruction(
1956        [in] const WCHAR * pTarget,
1957        [in] int nTarget,
1958        [in] const WCHAR * pData,
1959        [in] int nData);
1960
1961    HRESULT skippedEntity(
1962        [in] const WCHAR * pName,
1963        [in] int nName);
1964};
1965
1966[
1967    object,
1968    local,
1969    uuid(862629ac-771a-47b2-8337-4e6843c1be90)
1970]
1971interface ISAXDeclHandler : IUnknown
1972{
1973    HRESULT elementDecl(
1974        [in] const WCHAR * pName,
1975        [in] int nName,
1976        [in] const WCHAR * pModel,
1977        [in] int nModel);
1978
1979    HRESULT attributeDecl(
1980        [in] const WCHAR * pElementName,
1981        [in] int nElementName,
1982        [in] const WCHAR * pAttributeName,
1983        [in] int nAttributeName,
1984        [in] const WCHAR * pType,
1985        [in] int nType,
1986        [in] const WCHAR * pValueDefault,
1987        [in] int nValueDefault,
1988        [in] const WCHAR * pValue,
1989        [in] int nValue);
1990
1991    HRESULT internalEntityDecl(
1992        [in] const WCHAR * pName,
1993        [in] int nName,
1994        [in] const WCHAR * pValue,
1995        [in] int nValue);
1996
1997    HRESULT externalEntityDecl(
1998        [in] const WCHAR * pName,
1999        [in] int nName,
2000        [in] const WCHAR * pPublicId,
2001        [in] int nPublicId,
2002        [in] const WCHAR * pSystemId,
2003        [in] int nSystemId);
2004};
2005
2006[
2007    object,
2008    local,
2009    uuid(e15c1baf-afb3-4d60-8c36-19a8c45defed)
2010]
2011interface ISAXDTDHandler : IUnknown
2012{
2013    HRESULT notationDecl(
2014        [in] const WCHAR * pName,
2015        [in] int nName,
2016        [in] const WCHAR * pPublicId,
2017        [in] int nPublicId,
2018        [in] const WCHAR * pSystemId,
2019        [in] int nSystemId);
2020
2021    HRESULT unparsedEntityDecl(
2022        [in] const WCHAR * pName,
2023        [in] int nName,
2024        [in] const WCHAR * pPublicId,
2025        [in] int nPublicId,
2026        [in] const WCHAR * pSystemId,
2027        [in] int nSystemId,
2028        [in] const WCHAR * pNotationName,
2029        [in] int nNotationName);
2030};
2031
2032[
2033    object,
2034    local,
2035    uuid(99bca7bd-e8c4-4d5f-a0cf-6d907901ff07),
2036]
2037interface ISAXEntityResolver : IUnknown
2038{
2039    HRESULT resolveEntity(
2040        [in] const WCHAR * pPublicId,
2041        [in] const WCHAR * pSystemId,
2042        [out, retval] VARIANT * ret);
2043};
2044
2045[
2046    object,
2047    local,
2048    uuid(a60511c4-ccf5-479e-98a3-dc8dc545b7d0)
2049]
2050interface ISAXErrorHandler : IUnknown
2051{
2052    HRESULT error(
2053        [in] ISAXLocator * pLocator,
2054        [in] const WCHAR * pErrorMessage,
2055        [in] HRESULT hrErrorCode);
2056
2057    HRESULT fatalError(
2058        [in] ISAXLocator * pLocator,
2059        [in] const WCHAR * pErrorMessage,
2060        [in] HRESULT hrErrorCode);
2061
2062    HRESULT ignorableWarning(
2063        [in] ISAXLocator * pLocator,
2064        [in] const WCHAR * pErrorMessage,
2065        [in] HRESULT hrErrorCode);
2066};
2067
2068[
2069    object,
2070    local,
2071    uuid(7f85d5f5-47a8-4497-bda5-84ba04819ea6)
2072]
2073interface ISAXLexicalHandler : IUnknown
2074{
2075    HRESULT startDTD(
2076        [in] const WCHAR * pName,
2077        [in] int nName,
2078        [in] const WCHAR * pPublicId,
2079        [in] int nPublicId,
2080        [in] const WCHAR * pSystemId,
2081        [in] int nSystemId);
2082
2083    HRESULT endDTD();
2084
2085    HRESULT startEntity(
2086        [in] const WCHAR * pName,
2087        [in] int nName);
2088
2089    HRESULT endEntity(
2090        [in] const WCHAR * pName,
2091        [in] int nName);
2092
2093    HRESULT startCDATA();
2094
2095    HRESULT endCDATA();
2096
2097    HRESULT comment(
2098        [in] const WCHAR * pChars,
2099        [in] int nChars);
2100};
2101
2102[
2103    object,
2104    local,
2105    uuid(9b7e472a-0de4-4640-bff3-84d38a051c31)
2106]
2107interface ISAXLocator : IUnknown
2108{
2109    HRESULT getColumnNumber(
2110        [out, retval] int * nColumn);
2111
2112    HRESULT getLineNumber(
2113        [out, retval] int * nLine);
2114
2115    HRESULT getPublicId(
2116        [out, retval] const WCHAR ** publicId);
2117
2118    HRESULT getSystemId(
2119        [out, retval] const WCHAR ** systemId);
2120};
2121
2122[
2123local,
2124object,
2125uuid (a4f96ed0-f829-476e-81c0-cdc7bd2a0802)
2126]
2127interface ISAXXMLReader : IUnknown
2128{
2129    HRESULT getFeature(
2130        [in] const WCHAR * pFeature,
2131        [out, retval] VARIANT_BOOL * pValue);
2132    HRESULT putFeature(
2133        [in] const WCHAR * pFeature,
2134        [in] VARIANT_BOOL vfValue);
2135
2136    HRESULT getProperty(
2137        [in] const WCHAR * pProp,
2138        [out, retval] VARIANT * pValue);
2139    HRESULT putProperty(
2140        [in] const WCHAR * pProp,
2141        [in] VARIANT value);
2142
2143    HRESULT getEntityResolver(
2144        [out, retval] ISAXEntityResolver ** ppEntityResolver);
2145    HRESULT putEntityResolver(
2146        [in] ISAXEntityResolver * pEntityResolver);
2147
2148    HRESULT getContentHandler(
2149        [out, retval] ISAXContentHandler ** pContentHandler);
2150    HRESULT putContentHandler(
2151        [in] ISAXContentHandler * contentHandler);
2152
2153    HRESULT getDTDHandler(
2154        [out, retval] ISAXDTDHandler ** pDTDHandler);
2155    HRESULT putDTDHandler(
2156        [in] ISAXDTDHandler * pDTDHandler);
2157
2158    HRESULT getErrorHandler(
2159        [out, retval] ISAXErrorHandler ** pErrorHandler);
2160    HRESULT putErrorHandler(
2161        [in] ISAXErrorHandler * errorHandler);
2162
2163    HRESULT getBaseURL(
2164        [out, retval] const WCHAR ** pBaseUrl);
2165    HRESULT putBaseURL(
2166        [in] const WCHAR * pBaseUrl);
2167
2168    HRESULT getSecureBaseURL(
2169        [out, retval] const WCHAR ** pSecureBaseUrl);
2170    HRESULT putSecureBaseURL(
2171        [in] const WCHAR * secureBaseUrl);
2172
2173    HRESULT parse(
2174        [in] VARIANT varInput);
2175    HRESULT parseURL(
2176        [in] const WCHAR * url);
2177};
2178
2179[
2180    local,
2181    object,
2182    uuid(70409222-ca09-4475-acb8-40312fe8d145)
2183]
2184interface ISAXXMLFilter : ISAXXMLReader
2185{
2186    HRESULT getParent(
2187        [out, retval] ISAXXMLReader ** pReader);
2188    HRESULT putParent(
2189        [in] ISAXXMLReader * reader);
2190};
2191
2192[
2193    object,
2194    dual,
2195    oleautomation,
2196    uuid(10dc0586-132b-4cac-8bb3-db00ac8b7ee0)
2197]
2198interface IVBSAXAttributes : IDispatch
2199{
2200    [propget, id(DISPID_SAX_ATTRIBUTES_LENGTH)]
2201    HRESULT length( [out, retval] int * nLength);
2202
2203    [id(DISPID_SAX_ATTRIBUTES_GETURI)]
2204    HRESULT getURI( [in] int nIndex, [out, retval] BSTR * uri);
2205
2206    [id(DISPID_SAX_ATTRIBUTES_GETLOCALNAME)]
2207    HRESULT getLocalName( [in] int nIndex, [out, retval] BSTR * localName);
2208
2209    [id(DISPID_SAX_ATTRIBUTES_GETQNAME)]
2210    HRESULT getQName( [in] int nIndex, [out, retval] BSTR * QName);
2211
2212    [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMNAME)]
2213    HRESULT getIndexFromName( [in] BSTR uri,
2214                              [in] BSTR localName, [out, retval] int * nIndex);
2215
2216    [id(DISPID_SAX_ATTRIBUTES_GETINDEXFROMQNAME)]
2217    HRESULT getIndexFromQName( [in] BSTR QName, [out, retval] int * nIndex);
2218
2219    [id(DISPID_SAX_ATTRIBUTES_GETTYPE)]
2220    HRESULT getType( [in] int nIndex, [out, retval] BSTR * type);
2221
2222    [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMNAME)]
2223    HRESULT getTypeFromName( [in] BSTR uri, [in] BSTR localName,
2224                             [out, retval] BSTR * type);
2225
2226    [id(DISPID_SAX_ATTRIBUTES_GETTYPEFROMQNAME)]
2227    HRESULT getTypeFromQName( [in] BSTR QName, [out, retval] BSTR * type);
2228
2229    [id(DISPID_SAX_ATTRIBUTES_GETVALUE)]
2230    HRESULT getValue( [in] int nIndex, [out, retval] BSTR * value);
2231
2232    [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMNAME)]
2233    HRESULT getValueFromName( [in] BSTR uri,
2234                              [in] BSTR localName,
2235                              [out, retval] BSTR * value);
2236
2237    [id(DISPID_SAX_ATTRIBUTES_GETVALUEFROMQNAME)]
2238    HRESULT getValueFromQName( [in] BSTR QName, [out, retval] BSTR * value);
2239};
2240
2241[
2242    object,
2243    dual,
2244    oleautomation,
2245    uuid(2ed7290a-4dd5-4b46-bb26-4e4155e77faa)
2246]
2247interface IVBSAXContentHandler : IDispatch
2248{
2249    [propputref, id(DISPID_SAX_CONTENTHANDLER_DOCUMENTLOCATOR)]
2250    HRESULT documentLocator( [in] IVBSAXLocator * oLocator);
2251
2252    [id(DISPID_SAX_CONTENTHANDLER_STARTDOCUMENT)]
2253    HRESULT startDocument();
2254
2255    [id(DISPID_SAX_CONTENTHANDLER_ENDDOCUMENT)]
2256    HRESULT endDocument();
2257
2258    [id(DISPID_SAX_CONTENTHANDLER_STARTPREFIXMAPPING)]
2259    HRESULT startPrefixMapping( [in, out] BSTR * prefix, [in, out] BSTR * uri);
2260
2261    [id(DISPID_SAX_CONTENTHANDLER_ENDPREFIXMAPPING)]
2262    HRESULT endPrefixMapping( [in, out] BSTR * prefix);
2263
2264    [id(DISPID_SAX_CONTENTHANDLER_STARTELEMENT)]
2265    HRESULT startElement( [in, out] BSTR * namespaceURI,
2266                          [in, out] BSTR * localName,
2267                          [in, out] BSTR * QName,
2268                          [in] IVBSAXAttributes * oAttributes);
2269
2270    [id(DISPID_SAX_CONTENTHANDLER_ENDELEMENT)]
2271    HRESULT endElement( [in, out] BSTR * namespaceURI,
2272                        [in, out] BSTR * localName, [in, out] BSTR * strQName);
2273
2274    [id(DISPID_SAX_CONTENTHANDLER_CHARACTERS)]
2275    HRESULT characters( [in, out] BSTR * chars);
2276
2277    [id(DISPID_SAX_CONTENTHANDLER_IGNORABLEWHITESPACE)]
2278    HRESULT ignorableWhitespace( [in, out] BSTR * chars);
2279
2280    [id(DISPID_SAX_CONTENTHANDLER_PROCESSINGINSTRUCTION)]
2281    HRESULT processingInstruction( [in, out] BSTR * target,
2282                                   [in, out] BSTR * data);
2283
2284    [id(DISPID_SAX_CONTENTHANDLER_SKIPPEDENTITY)]
2285    HRESULT skippedEntity( [in, out] BSTR * name);
2286};
2287
2288[
2289    object,
2290    dual,
2291    oleautomation,
2292    uuid(e8917260-7579-4be1-b5dd-7afbfa6f077b)
2293]
2294interface IVBSAXDeclHandler : IDispatch
2295{
2296    [id(DISPID_SAX_DECLHANDLER_ELEMENTDECL)]
2297    HRESULT elementDecl(
2298        [in, out] BSTR * name,
2299        [in, out] BSTR * model);
2300
2301    [id(DISPID_SAX_DECLHANDLER_ATTRIBUTEDECL)]
2302    HRESULT attributeDecl(
2303        [in, out] BSTR * elementName,
2304        [in, out] BSTR * attributeName,
2305        [in, out] BSTR * type,
2306        [in, out] BSTR * valueDefault,
2307        [in, out] BSTR * value);
2308
2309    [id(DISPID_SAX_DECLHANDLER_INTERNALENTITYDECL)]
2310    HRESULT internalEntityDecl(
2311        [in, out] BSTR * name,
2312        [in, out] BSTR * value);
2313
2314    [id(DISPID_SAX_DECLHANDLER_EXTERNALENTITYDECL)]
2315    HRESULT externalEntityDecl(
2316        [in, out] BSTR * name,
2317        [in, out] BSTR * publicId,
2318        [in, out] BSTR * systemId);
2319};
2320
2321[
2322    object,
2323    dual,
2324    oleautomation,
2325    uuid(24fb3297-302d-4620-ba39-3a732d850558)
2326]
2327interface IVBSAXDTDHandler : IDispatch
2328{
2329    [id(DISPID_SAX_DTDHANDLER_NOTATIONDECL)]
2330    HRESULT notationDecl(
2331        [in, out] BSTR * name,
2332        [in, out] BSTR * publicId,
2333        [in, out] BSTR * systemId);
2334
2335    [id(DISPID_SAX_DTDHANDLER_UNPARSEDENTITYDECL)]
2336    HRESULT unparsedEntityDecl(
2337        [in, out] BSTR * name,
2338        [in, out] BSTR * publicId,
2339        [in, out] BSTR * systemId,
2340        [in, out] BSTR * notationName);
2341};
2342
2343[
2344    object,
2345    dual,
2346    oleautomation,
2347    uuid(0c05d096-f45b-4aca-ad1a-aa0bc25518dc)
2348]
2349interface IVBSAXEntityResolver : IDispatch
2350{
2351    [id(DISPID_SAX_ENTITYRESOLVER_RESOLVEENTITY)]
2352    HRESULT resolveEntity(
2353        [in, out] BSTR * publicId,
2354        [in, out] BSTR * systemId,
2355        [out, retval] VARIANT * ret);
2356};
2357
2358[
2359    object,
2360    dual,
2361    oleautomation,
2362    uuid(d963d3fe-173c-4862-9095-b92f66995f52)
2363]
2364interface IVBSAXErrorHandler : IDispatch
2365{
2366    [id(DISPID_SAX_ERRORHANDLER_ERROR)]
2367    HRESULT error(
2368            [in] IVBSAXLocator * locator,
2369	    [in, out] BSTR * errorMessage,
2370            [in] LONG errorCode);
2371
2372    [id(DISPID_SAX_ERRORHANDLER_FATALERROR)]
2373    HRESULT fatalError(
2374	    [in] IVBSAXLocator * locator,
2375	    [in, out] BSTR * errorMessage,
2376            [in] LONG errorCode);
2377
2378    [id(DISPID_SAX_ERRORHANDLER_IGNORABLEWARNING)]
2379    HRESULT ignorableWarning(
2380	    [in] IVBSAXLocator * locator,
2381	    [in, out] BSTR * errorMessage,
2382            [in] LONG errorCode);
2383};
2384
2385[
2386    object,
2387    dual,
2388    oleautomation,
2389    uuid(032aac35-8c0e-4d9d-979f-e3b702935576)
2390]
2391interface IVBSAXLexicalHandler : IDispatch
2392{
2393    [id(DISPID_SAX_LEXICALHANDLER_STARTDTD)]
2394    HRESULT startDTD(
2395        [in, out] BSTR * name,
2396        [in, out] BSTR * publicId,
2397        [in, out] BSTR * systemId);
2398    [id(DISPID_SAX_LEXICALHANDLER_ENDDTD)]
2399    HRESULT endDTD();
2400
2401    [id(DISPID_SAX_LEXICALHANDLER_STARTENTITY)]
2402    HRESULT startEntity([in, out] BSTR * name);
2403    [id(DISPID_SAX_LEXICALHANDLER_ENDENTITY)]
2404    HRESULT endEntity([in, out] BSTR * name);
2405
2406    [id(DISPID_SAX_LEXICALHANDLER_STARTCDATA)]
2407    HRESULT startCDATA();
2408    [id(DISPID_SAX_LEXICALHANDLER_ENDCDATA)]
2409    HRESULT endCDATA();
2410
2411    [id(DISPID_SAX_LEXICALHANDLER_COMMENT)]
2412    HRESULT comment( [in, out] BSTR * chars);
2413};
2414
2415[
2416    object,
2417    dual,
2418    oleautomation,
2419    uuid(796e7ac5-5aa2-4eff-acad-3faaf01a3288)
2420]
2421interface IVBSAXLocator : IDispatch
2422{
2423    [propget, id(DISPID_SAX_LOCATOR_COLUMNNUMBER)]
2424    HRESULT columnNumber( [out, retval] int * column);
2425
2426    [propget, id(DISPID_SAX_LOCATOR_LINENUMBER)]
2427    HRESULT lineNumber( [out, retval] int * line);
2428
2429    [propget, id(DISPID_SAX_LOCATOR_PUBLICID)]
2430    HRESULT publicId( [out, retval] BSTR * publicId);
2431
2432    [propget, id(DISPID_SAX_LOCATOR_SYSTEMID)]
2433    HRESULT systemId( [out, retval] BSTR * systemId);
2434};
2435
2436[
2437    object,
2438    dual,
2439    oleautomation,
2440    uuid(1299eb1b-5b88-433e-82de-82ca75ad4e04)
2441]
2442interface IVBSAXXMLFilter : IDispatch
2443{
2444    [propget, id(DISPID_SAX_XMLFILTER_PARENT)]
2445    HRESULT parent( [out, retval] IVBSAXXMLReader ** reader);
2446    [propputref, id(DISPID_SAX_XMLFILTER_PARENT)]
2447    HRESULT parent( [in] IVBSAXXMLReader * reader);
2448
2449};
2450
2451[
2452    dual,
2453    oleautomation,
2454    object,
2455    uuid (8c033caa-6cd6-4f73-b728-4531af74945f)
2456]
2457interface IVBSAXXMLReader : IDispatch
2458{
2459    [id(DISPID_SAX_XMLREADER_GETFEATURE)]
2460    HRESULT getFeature( [in] BSTR pFeature,
2461                        [out, retval] VARIANT_BOOL * pValue);
2462    [id(DISPID_SAX_XMLREADER_PUTFEATURE)]
2463    HRESULT putFeature( [in] BSTR pFeature,
2464                        [in] VARIANT_BOOL vfValue);
2465
2466    [id(DISPID_SAX_XMLREADER_GETPROPERTY)]
2467    HRESULT getProperty( [in] BSTR pProp,
2468                         [out, retval] VARIANT * pValue);
2469    [id(DISPID_SAX_XMLREADER_PUTPROPERTY)]
2470    HRESULT putProperty( [in] BSTR pProp, [in] VARIANT value);
2471
2472    [propget, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
2473    HRESULT entityResolver(
2474                    [out, retval] IVBSAXEntityResolver ** ppEntityResolver);
2475    [propputref, id(DISPID_SAX_XMLREADER_ENTITYRESOLVER)]
2476    HRESULT entityResolver( [in] IVBSAXEntityResolver * pEntityResolver);
2477
2478    [propget, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
2479    HRESULT contentHandler(
2480                        [out, retval] IVBSAXContentHandler ** pContentHandler);
2481    [propputref, id(DISPID_SAX_XMLREADER_CONTENTHANDLER)]
2482    HRESULT contentHandler([in] IVBSAXContentHandler * contentHandler);
2483
2484    [propget, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
2485    HRESULT dtdHandler([out, retval] IVBSAXDTDHandler ** pDTDHandler);
2486    [propputref, id(DISPID_SAX_XMLREADER_DTDHANDLER)]
2487    HRESULT dtdHandler([in] IVBSAXDTDHandler * pDTDHandler);
2488
2489    [propget, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
2490    HRESULT errorHandler([out, retval] IVBSAXErrorHandler ** pErrorHandler);
2491    [propputref, id(DISPID_SAX_XMLREADER_ERRORHANDLER)]
2492    HRESULT errorHandler([in] IVBSAXErrorHandler * errorHandler);
2493
2494    [propget, id(DISPID_SAX_XMLREADER_BASEURL)]
2495    HRESULT baseURL([out, retval] BSTR *pBaseUrl);
2496    [propput, id(DISPID_SAX_XMLREADER_BASEURL)]
2497    HRESULT baseURL([in] BSTR pBaseUrl);
2498
2499    [propget, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
2500    HRESULT secureBaseURL([out, retval] BSTR *pSecureBaseUrl);
2501    [propput, id(DISPID_SAX_XMLREADER_SECUREBASEURL)]
2502    HRESULT secureBaseURL([in] BSTR secureBaseUrl);
2503
2504    [id(DISPID_SAX_XMLREADER_PARSE)]
2505    HRESULT parse( [in] VARIANT varInput);
2506    [id(DISPID_SAX_XMLREADER_PARSEURL)]
2507    HRESULT parseURL([in] BSTR url);
2508}
2509
2510[
2511    object,
2512    dual,
2513    oleautomation,
2514    uuid(f10d27cc-3ec0-415c-8ed8-77ab1c5e7262)
2515]
2516interface IMXAttributes : IDispatch
2517{
2518    [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTE)]
2519    HRESULT addAttribute(
2520        [in] BSTR uri,
2521        [in] BSTR localName,
2522        [in] BSTR QName,
2523        [in] BSTR type,
2524        [in] BSTR value);
2525
2526    [id(DISPID_MX_ATTRIBUTES_ADDATTRIBUTEFROMINDEX)]
2527    HRESULT addAttributeFromIndex( [in] VARIANT atts,
2528                                   [in] int index);
2529
2530    [id(DISPID_MX_ATTRIBUTES_CLEAR)]
2531    HRESULT clear();
2532
2533    [id(DISPID_MX_ATTRIBUTES_REMOVEATTRIBUTE)]
2534    HRESULT removeAttribute( [in] int index);
2535
2536    [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTE)]
2537    HRESULT setAttribute(
2538        [in] int index,
2539        [in] BSTR uri,
2540        [in] BSTR localName,
2541        [in] BSTR QName,
2542        [in] BSTR type,
2543        [in] BSTR value);
2544
2545    [id(DISPID_MX_ATTRIBUTES_SETATTRIBUTES)]
2546    HRESULT setAttributes( [in] VARIANT atts);
2547
2548    [id(DISPID_MX_ATTRIBUTES_SETLOCALNAME)]
2549    HRESULT setLocalName( [in] int index,
2550        [in] BSTR localName);
2551
2552    [id(DISPID_MX_ATTRIBUTES_SETQNAME)]
2553    HRESULT setQName(
2554        [in] int index,
2555        [in] BSTR QName);
2556
2557    [id(DISPID_MX_ATTRIBUTES_SETTYPE)]
2558    HRESULT setType( [in] int index, [in] BSTR type);
2559
2560    [id(DISPID_MX_ATTRIBUTES_SETURI)]
2561    HRESULT setURI( [in] int index,  [in] BSTR uri);
2562
2563    [id(DISPID_MX_ATTRIBUTES_SETVALUE)]
2564    HRESULT setValue([in] int index, [in] BSTR value);
2565};
2566
2567[
2568    local,
2569    object,
2570    dual,
2571    oleautomation,
2572    uuid(fa4bb38c-faf9-4cca-9302-d1dd0fe520db)
2573]
2574interface IMXSchemaDeclHandler : IDispatch
2575{
2576    [id(DISPID_MX_SCHEMADECLHANDLER_SCHEMAELEMENTDECL)]
2577    HRESULT schemaElementDecl( [in] ISchemaElement *oSchemaElement );
2578}
2579
2580[
2581    object,
2582    dual,
2583    oleautomation,
2584    uuid(808f4e35-8d5a-4fbe-8466-33a41279ed30)
2585]
2586interface IMXReaderControl : IDispatch
2587{
2588    [id(DISPID_MX_READER_CONTROL_ABORT)]
2589    HRESULT abort();
2590
2591    [id(DISPID_MX_READER_CONTROL_RESUME)]
2592    HRESULT resume();
2593
2594    [id(DISPID_MX_READER_CONTROL_SUSPEND)]
2595    HRESULT suspend();
2596};
2597
2598[
2599    object,
2600    dual,
2601    oleautomation,
2602    uuid(4d7ff4ba-1565-4ea8-94e1-6e724a46f98d)
2603]
2604interface IMXWriter :  IDispatch
2605{
2606    [propput, id(DISPID_MX_WRITER_OUTPUT)]
2607    HRESULT output ( [in] VARIANT Destination);
2608    [propget, id(DISPID_MX_WRITER_OUTPUT)]
2609    HRESULT output ( [out, retval] VARIANT * Destination);
2610
2611    [propput, id(DISPID_MX_WRITER_ENCODING)]
2612    HRESULT encoding ([in] BSTR encoding);
2613    [propget, id(DISPID_MX_WRITER_ENCODING)]
2614    HRESULT encoding ([out, retval] BSTR * encoding);
2615
2616    [propput, id(DISPID_MX_WRITER_BYTEORDERMARK)]
2617    HRESULT byteOrderMark ([in] VARIANT_BOOL writeByteOrderMark);
2618    [propget, id(DISPID_MX_WRITER_BYTEORDERMARK)]
2619    HRESULT byteOrderMark ([out, retval] VARIANT_BOOL * writeByteOrderMark);
2620
2621    [propput, id(DISPID_MX_WRITER_INDENT)]
2622    HRESULT indent ([in] VARIANT_BOOL indentMode);
2623    [propget, id(DISPID_MX_WRITER_INDENT)]
2624    HRESULT indent ([out, retval] VARIANT_BOOL * indentMode);
2625
2626    [propput, id(DISPID_MX_WRITER_STANDALONE)]
2627    HRESULT standalone ([in] VARIANT_BOOL value);
2628    [propget, id(DISPID_MX_WRITER_STANDALONE)]
2629    HRESULT standalone ([out, retval] VARIANT_BOOL * value);
2630
2631    [propput, id(DISPID_MX_WRITER_OMITXMLDECLARATION)]
2632    HRESULT omitXMLDeclaration ([in] VARIANT_BOOL value);
2633    [propget, id(DISPID_MX_WRITER_OMITXMLDECLARATION)]
2634    HRESULT omitXMLDeclaration ([out, retval] VARIANT_BOOL * value);
2635
2636    [propput, id(DISPID_MX_WRITER_VERSION)]
2637    HRESULT version ([in] BSTR version);
2638    [propget, id(DISPID_MX_WRITER_VERSION)]
2639    HRESULT version ([out, retval] BSTR * version);
2640
2641    [propput, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING)]
2642    HRESULT disableOutputEscaping([in] VARIANT_BOOL value);
2643    [propget, id(DISPID_MX_WRITER_DISABLEOUTPUTESCAPING)]
2644    HRESULT disableOutputEscaping([out, retval] VARIANT_BOOL * value);
2645
2646    [id(DISPID_MX_WRITER_FLUSH)]
2647    HRESULT flush();
2648};
2649
2650[
2651    local,
2652    object,
2653    dual,
2654    oleautomation,
2655    uuid(c90352f4-643c-4fbc-bb23-e996eb2d51fd)
2656]
2657interface IMXNamespacePrefixes : IDispatch
2658{
2659    [propget, id(DISPID_VALUE)]
2660    HRESULT item(
2661        [in] long index,
2662        [out, retval] BSTR *prefix);
2663
2664    [propget, id(DISPID_MX_NSMGR_LENGTH)]
2665    HRESULT length( [out,retval] long *length );
2666
2667    [propget, restricted, hidden, id(DISPID_NEWENUM)]
2668    HRESULT _newEnum( [out, retval] IUnknown **ppUnk );
2669}
2670
2671[
2672    local,
2673    object,
2674    hidden,
2675    uuid(c90352f6-643c-4fbc-bb23-e996eb2d51fd)
2676]
2677interface IMXNamespaceManager : IUnknown
2678{
2679    HRESULT putAllowOverride([in] VARIANT_BOOL fOverride);
2680
2681    HRESULT getAllowOverride([out, retval] VARIANT_BOOL *fOverride);
2682
2683    HRESULT reset();
2684
2685    HRESULT pushContext();
2686
2687    HRESULT pushNodeContext(
2688        [in] IXMLDOMNode *contextNode,
2689        [in] VARIANT_BOOL fDeep);
2690
2691    HRESULT popContext();
2692
2693    HRESULT declarePrefix(
2694        [in] const WCHAR *prefix,
2695        [in] const WCHAR *namespaceURI);
2696
2697    HRESULT getDeclaredPrefix(
2698        [in] long nIndex,
2699        [in, out] WCHAR *pwchPrefix,
2700        [in, out] int *pcchPrefix);
2701
2702    HRESULT getPrefix(
2703        [in] const WCHAR *pwszNamespaceURI,
2704        [in] long nIndex,
2705        [in, out] WCHAR *pwchPrefix,
2706        [in, out] int *pcchPrefix);
2707
2708    HRESULT getURI(
2709        [in] const WCHAR *pwchPrefix,
2710        [in] IXMLDOMNode* pContextNode,
2711        [in, out] WCHAR *pwchUri,
2712        [in, out] int *pcchUri);
2713}
2714
2715[
2716    local,
2717    object,
2718    dual,
2719    oleautomation,
2720    uuid(c90352f5-643c-4fbc-bb23-e996eb2d51fd)
2721]
2722interface IVBMXNamespaceManager : IDispatch
2723{
2724    [propput, id(DISPID_MX_NSMGR_ALLOWOVERRIDE)]
2725    HRESULT allowOverride([in] VARIANT_BOOL fOverride);
2726
2727    [propget, id(DISPID_MX_NSMGR_ALLOWOVERRIDE)]
2728    HRESULT allowOverride([out,retval] VARIANT_BOOL* fOverride);
2729
2730    [id(DISPID_MX_NSMGR_RESET)]
2731    HRESULT reset();
2732
2733    [id(DISPID_MX_NSMGR_PUSHCONTEXT)]
2734    HRESULT pushContext();
2735
2736    [id(DISPID_MX_NSMGR_PUSHNODECONTEXT)]
2737    HRESULT pushNodeContext(
2738        [in] IXMLDOMNode* contextNode,
2739        [in, defaultvalue(-1)] VARIANT_BOOL fDeep);
2740
2741    [id(DISPID_MX_NSMGR_POPCONTEXT)]
2742    HRESULT popContext();
2743
2744    [id(DISPID_MX_NSMGR_DECLAREPREFIX)]
2745    HRESULT declarePrefix(
2746        [in] BSTR prefix,
2747        [in] BSTR namespaceURI);
2748
2749    [id(DISPID_MX_NSMGR_GETDECLAREDPREFIXES)]
2750    HRESULT getDeclaredPrefixes([out, retval] IMXNamespacePrefixes** prefixes);
2751
2752    [id(DISPID_MX_NSMGR_GETPREFIXES)]
2753    HRESULT getPrefixes(
2754        [in] BSTR namespaceURI,
2755        [out, retval] IMXNamespacePrefixes** prefixes);
2756
2757    [id(DISPID_MX_NSMGR_GETURI)]
2758    HRESULT getURI(
2759        [in] BSTR prefix,
2760        [out, retval] VARIANT* uri);
2761
2762    [id(DISPID_MX_NSMGR_GETURIFROMNODE)]
2763    HRESULT getURIFromNode(
2764        [in] BSTR strPrefix,
2765        [in] IXMLDOMNode* contextNode,
2766        [out, retval] VARIANT* uri);
2767}
2768
2769[
2770    local,
2771    object,
2772    dual,
2773    oleautomation,
2774    uuid(c90352f7-643c-4fbc-bb23-e996eb2d51fd)
2775]
2776interface IMXXMLFilter : IDispatch
2777{
2778    [id(DISPID_MXXML_FILTER_GETFEATURE)]
2779    HRESULT getFeature(
2780        [in] BSTR strName,
2781        [out, retval] VARIANT_BOOL * fValue);
2782
2783    [id(DISPID_MXXML_FILTER_PUTFEATURE)]
2784    HRESULT putFeature(
2785        [in] BSTR strName,
2786        [in] VARIANT_BOOL fValue);
2787
2788    [id(DISPID_MXXML_FILTER_GETPROPERTY)]
2789    HRESULT getProperty(
2790        [in] BSTR strName,
2791        [out, retval] VARIANT * varValue);
2792
2793    [id(DISPID_MXXML_FILTER_PUTPROPERTY)]
2794    HRESULT putProperty(
2795        [in] BSTR strName,
2796        [in] VARIANT varValue);
2797
2798    [id(DISPID_MXXML_FILTER_ENTITYRESOLVER), propget]
2799    HRESULT entityResolver( [out, retval] IUnknown **oResolver );
2800
2801    [id(DISPID_MXXML_FILTER_ENTITYRESOLVER), propputref]
2802    HRESULT entityResolver( [in] IUnknown *oResolver );
2803
2804    [id(DISPID_MXXML_FILTER_CONTENTHANDLER), propget]
2805    HRESULT contentHandler( [out, retval] IUnknown **oHandler );
2806
2807    [id(DISPID_MXXML_FILTER_CONTENTHANDLER), propputref]
2808    HRESULT contentHandler( [in] IUnknown *oHandler );
2809
2810    [id(DISPID_MXXML_FILTER_DTDHANDLER), propget]
2811    HRESULT dtdHandler( [out, retval] IUnknown **oHandler );
2812
2813    [id(DISPID_MXXML_FILTER_DTDHANDLER), propputref]
2814    HRESULT dtdHandler( [in] IUnknown *oHandler );
2815
2816    [id(DISPID_MXXML_FILTER_ERRORHANDLER), propget]
2817    HRESULT errorHandler( [out, retval] IUnknown **oHandler );
2818
2819    [id(DISPID_MXXML_FILTER_ERRORHANDLER), propputref]
2820    HRESULT errorHandler( [in] IUnknown *oHandler );
2821}
2822
2823[
2824    local,
2825    object,
2826    uuid(50ea08b1-dd1b-4664-9a50-c2f40f4bd79a),
2827    oleautomation,
2828    dual
2829]
2830interface ISchemaStringCollection : IDispatch
2831{
2832    [id(DISPID_VALUE), propget]
2833    HRESULT item(
2834        [in] long index,
2835        [out,retval] BSTR* bstr);
2836
2837    [id(DISPID_SOM_LENGTH), propget]
2838    HRESULT length(
2839        [out,retval] long* length);
2840
2841    [id(DISPID_NEWENUM), hidden, restricted, propget]
2842    HRESULT _newEnum(
2843        [out,retval] IUnknown** ppunk);
2844};
2845
2846[
2847    local,
2848    object,
2849    uuid(50ea08b2-dd1b-4664-9a50-c2f40f4bd79a),
2850    oleautomation,
2851    dual
2852]
2853interface ISchemaItemCollection : IDispatch
2854{
2855    [id(DISPID_VALUE), propget]
2856    HRESULT item(
2857        [in] long index,
2858        [out,retval]ISchemaItem** item);
2859
2860    [id(DISPID_SOM_ITEMBYNAME)]
2861    HRESULT itemByName(
2862        [in] BSTR name,
2863        [out,retval] ISchemaItem** item);
2864
2865    [id(DISPID_SOM_ITEMBYQNAME)]
2866    HRESULT itemByQName(
2867        [in] BSTR name,
2868        [in] BSTR namespaceURI,
2869        [out,retval] ISchemaItem** item);
2870
2871    [id(DISPID_SOM_LENGTH), propget]
2872    HRESULT length(
2873        [out,retval]long* length);
2874
2875    [id(DISPID_NEWENUM), hidden, restricted, propget]
2876    HRESULT _newEnum(
2877        [out,retval]IUnknown** ppunk);
2878};
2879
2880[
2881    local,
2882    object,
2883    uuid(50ea08b3-dd1b-4664-9a50-c2f40f4bd79a),
2884    oleautomation,
2885    dual
2886]
2887interface ISchemaItem : IDispatch
2888{
2889    [id(DISPID_SOM_NAME), propget]
2890    HRESULT name(
2891        [out,retval] BSTR* name);
2892
2893    [id(DISPID_SOM_NAMESPACEURI), propget]
2894    HRESULT namespaceURI(
2895        [out,retval] BSTR* namespaceURI);
2896
2897    [id(DISPID_SOM_SCHEMA), propget]
2898    HRESULT schema(
2899        [out,retval] ISchema** schema);
2900
2901    [id(DISPID_SOM_ID), propget]
2902    HRESULT id(
2903        [out,retval] BSTR* id);
2904
2905    [id(DISPID_SOM_ITEMTYPE), propget]
2906    HRESULT itemType(
2907        [out,retval] SOMITEMTYPE* itemType);
2908
2909    [id(DISPID_SOM_UNHANDLEDATTRS), propget]
2910    HRESULT unhandledAttributes(
2911        [out,retval] IVBSAXAttributes** attributes);
2912
2913    [id(DISPID_SOM_WRITEANNOTATION)]
2914    HRESULT writeAnnotation(
2915        [in] IUnknown* annotationSink,
2916        [out,retval] VARIANT_BOOL* isWritten);
2917};
2918
2919[
2920    local,
2921    object,
2922    uuid(50ea08b4-dd1b-4664-9a50-c2f40f4bd79a),
2923    oleautomation,
2924    dual
2925]
2926interface ISchema : ISchemaItem
2927{
2928    [id(DISPID_SOM_TARGETNAMESPACE), propget]
2929    HRESULT targetNamespace(
2930        [out,retval] BSTR* targetNamespace);
2931
2932    [id(DISPID_SOM_VERSION), propget]
2933    HRESULT version(
2934        [out,retval] BSTR* version);
2935
2936    [id(DISPID_SOM_TYPES), propget]
2937    HRESULT types(
2938        [out,retval] ISchemaItemCollection** types);
2939
2940    [id(DISPID_SOM_ELEMENTS), propget]
2941    HRESULT elements(
2942        [out,retval] ISchemaItemCollection** elements);
2943
2944    [id(DISPID_SOM_ATTRIBUTES), propget]
2945    HRESULT attributes(
2946        [out,retval] ISchemaItemCollection** attributes);
2947
2948    [id(DISPID_SOM_ATTRIBUTEGROUPS), propget]
2949    HRESULT attributeGroups(
2950        [out,retval] ISchemaItemCollection** attributeGroups);
2951
2952    [id(DISPID_SOM_MODELGROUPS), propget]
2953    HRESULT modelGroups(
2954        [out,retval] ISchemaItemCollection** modelGroups);
2955
2956    [id(DISPID_SOM_NOTATIONS), propget]
2957    HRESULT notations(
2958        [out,retval] ISchemaItemCollection** notations);
2959
2960    [id(DISPID_SOM_SCHEMALOCATIONS), propget]
2961    HRESULT schemaLocations(
2962        [out,retval] ISchemaStringCollection** schemaLocations);
2963};
2964
2965[
2966    local,
2967    object,
2968    uuid(50ea08b5-dd1b-4664-9a50-c2f40f4bd79a),
2969    oleautomation,
2970    dual
2971]
2972interface ISchemaParticle : ISchemaItem
2973{
2974    [id(DISPID_SOM_MINOCCURS), propget]
2975    HRESULT minOccurs(
2976        [out,retval] VARIANT* minOccurs);
2977
2978    [id(DISPID_SOM_MAXOCCURS), propget]
2979    HRESULT maxOccurs(
2980        [out,retval] VARIANT* maxOccurs);
2981};
2982
2983[
2984    object,
2985    uuid(50ea08b6-dd1b-4664-9a50-c2f40f4bd79a),
2986    oleautomation,
2987    dual,
2988]
2989interface ISchemaAttribute : ISchemaItem
2990{
2991    [id(DISPID_SOM_TYPE), propget]
2992    HRESULT type(
2993        [out,retval] ISchemaType** type);
2994
2995    [id(DISPID_SOM_SCOPE), propget]
2996    HRESULT scope(
2997        [out,retval] ISchemaComplexType** scope);
2998
2999    [id(DISPID_SOM_DEFAULTVALUE), propget]
3000    HRESULT defaultValue(
3001        [out,retval]BSTR* defaultValue);
3002
3003    [id(DISPID_SOM_FIXEDVALUE), propget]
3004    HRESULT fixedValue(
3005        [out,retval] BSTR* fixedValue);
3006
3007    [id(DISPID_SOM_USE), propget]
3008    HRESULT use(
3009        [out,retval] SCHEMAUSE* use);
3010
3011    [id(DISPID_SOM_ISREFERENCE), propget]
3012    HRESULT isReference(
3013        [out,retval] VARIANT_BOOL* reference);
3014};
3015
3016[
3017    local,
3018    object,
3019    uuid(50ea08b7-dd1b-4664-9a50-c2f40f4bd79a),
3020    oleautomation,
3021    dual
3022]
3023interface ISchemaElement : ISchemaParticle
3024{
3025    [id(DISPID_SOM_TYPE), propget]
3026    HRESULT type(
3027        [out,retval] ISchemaType** type);
3028
3029    [id(DISPID_SOM_SCOPE), propget]
3030    HRESULT scope(
3031        [out,retval] ISchemaComplexType** scope);
3032
3033    [id(DISPID_SOM_DEFAULTVALUE), propget]
3034    HRESULT defaultValue(
3035        [out,retval] BSTR* defaultValue);
3036
3037    [id(DISPID_SOM_FIXEDVALUE), propget]
3038    HRESULT fixedValue(
3039        [out,retval] BSTR* fixedValue);
3040
3041    [id(DISPID_SOM_ISNILLABLE), propget]
3042    HRESULT isNillable(
3043        [out,retval] VARIANT_BOOL* nillable);
3044
3045    [id(DISPID_SOM_IDCONSTRAINTS), propget]
3046    HRESULT identityConstraints(
3047        [out,retval] ISchemaItemCollection** constraints);
3048
3049    [id(DISPID_SOM_SUBSTITUTIONGROUP), propget]
3050    HRESULT substitutionGroup(
3051        [out,retval] ISchemaElement** element);
3052
3053    [id(DISPID_SOM_EXCLUSIONS), propget]
3054    HRESULT substitutionGroupExclusions(
3055        [out,retval] SCHEMADERIVATIONMETHOD* exclusions);
3056
3057    [id(DISPID_SOM_DISALLOWED), propget]
3058    HRESULT disallowedSubstitutions(
3059        [out,retval] SCHEMADERIVATIONMETHOD* disallowed);
3060
3061    [id(DISPID_SOM_ISABSTRACT), propget]
3062    HRESULT isAbstract(
3063        [out,retval] VARIANT_BOOL* abstract);
3064
3065    [id(DISPID_SOM_ISREFERENCE), propget]
3066    HRESULT isReference(
3067        [out,retval] VARIANT_BOOL* reference);
3068};
3069
3070[
3071    local,
3072    object,
3073    uuid(50ea08b8-dd1b-4664-9a50-c2f40f4bd79a),
3074    oleautomation,
3075    dual
3076]
3077interface ISchemaType : ISchemaItem
3078{
3079    [id(DISPID_SOM_BASETYPES), propget]
3080    HRESULT baseTypes(
3081        [out,retval] ISchemaItemCollection** baseTypes);
3082
3083    [id(DISPID_SOM_FINAL), propget]
3084    HRESULT final(
3085        [out,retval] SCHEMADERIVATIONMETHOD* final);
3086
3087    [id(DISPID_SOM_VARIETY), propget]
3088    HRESULT variety(
3089        [out,retval] SCHEMATYPEVARIETY* variety);
3090
3091    [id(DISPID_SOM_DERIVEDBY), propget]
3092    HRESULT derivedBy(
3093        [out,retval] SCHEMADERIVATIONMETHOD* derivedBy);
3094
3095    [id(DISPID_SOM_ISVALID)]
3096    HRESULT isValid(
3097        [in] BSTR data,
3098        [out,retval] VARIANT_BOOL* valid);
3099
3100    [id(DISPID_SOM_MINEXCLUSIVE), propget]
3101    HRESULT minExclusive(
3102        [out,retval]BSTR* minExclusive);
3103
3104    [id(DISPID_SOM_MININCLUSIVE), propget]
3105    HRESULT minInclusive(
3106        [out,retval] BSTR* minInclusive);
3107
3108    [id(DISPID_SOM_MAXEXCLUSIVE), propget]
3109    HRESULT maxExclusive(
3110        [out,retval] BSTR* maxExclusive);
3111
3112    [id(DISPID_SOM_MAXINCLUSIVE), propget]
3113    HRESULT maxInclusive(
3114        [out,retval] BSTR* maxInclusive);
3115
3116    [id(DISPID_SOM_TOTALDIGITS), propget]
3117    HRESULT totalDigits(
3118        [out,retval] VARIANT* totalDigits);
3119
3120    [id(DISPID_SOM_FRACTIONDIGITS), propget]
3121    HRESULT fractionDigits(
3122        [out,retval] VARIANT* fractionDigits);
3123
3124    [id(DISPID_SOM_LENGTH), propget]
3125    HRESULT length(
3126        [out,retval] VARIANT* length);
3127
3128    [id(DISPID_SOM_MINLENGTH), propget]
3129    HRESULT minLength(
3130        [out,retval]VARIANT* minLength);
3131
3132    [id(DISPID_SOM_MAXLENGTH), propget]
3133    HRESULT maxLength(
3134        [out,retval]VARIANT* maxLength);
3135
3136    [id(DISPID_SOM_ENUMERATION), propget]
3137    HRESULT enumeration(
3138        [out,retval] ISchemaStringCollection** enumeration);
3139
3140    [id(DISPID_SOM_WHITESPACE), propget]
3141    HRESULT whitespace(
3142        [out,retval]SCHEMAWHITESPACE* whitespace);
3143
3144    [id(DISPID_SOM_PATTERNS), propget]
3145    HRESULT patterns(
3146        [out,retval] ISchemaStringCollection** patterns);
3147};
3148
3149[
3150    local,
3151    object,
3152    uuid(50ea08b9-dd1b-4664-9a50-c2f40f4bd79a),
3153    oleautomation,
3154    dual,
3155]
3156interface ISchemaComplexType : ISchemaType
3157{
3158    [id(DISPID_SOM_ISABSTRACT), propget]
3159    HRESULT isAbstract(
3160        [out,retval] VARIANT_BOOL* abstract);
3161
3162    [id(DISPID_SOM_ANYATTRIBUTE), propget]
3163    HRESULT anyAttribute(
3164        [out,retval] ISchemaAny** anyAttribute);
3165
3166    [id(DISPID_SOM_ATTRIBUTES), propget]
3167    HRESULT attributes(
3168        [out,retval] ISchemaItemCollection** attributes);
3169
3170    [id(DISPID_SOM_CONTENTTYPE), propget]
3171    HRESULT contentType(
3172        [out,retval] SCHEMACONTENTTYPE* contentType);
3173
3174    [id(DISPID_SOM_CONTENTMODEL), propget]
3175    HRESULT contentModel(
3176        [out,retval] ISchemaModelGroup** contentModel);
3177
3178    [id(DISPID_SOM_PROHIBITED), propget]
3179    HRESULT prohibitedSubstitutions(
3180        [out,retval] SCHEMADERIVATIONMETHOD* prohibited);
3181};
3182
3183[
3184    local,
3185    object,
3186    uuid(50ea08ba-dd1b-4664-9a50-c2f40f4bd79a),
3187    oleautomation,
3188    dual,
3189]
3190interface ISchemaAttributeGroup : ISchemaItem
3191{
3192    [id(DISPID_SOM_ANYATTRIBUTE), propget]
3193    HRESULT anyAttribute(
3194        [out,retval] ISchemaAny** anyAttribute);
3195
3196    [id(DISPID_SOM_ATTRIBUTES), propget]
3197        HRESULT attributes(
3198            [out,retval] ISchemaItemCollection** attributes);
3199};
3200
3201[
3202    local,
3203    object,
3204    uuid(50ea08bb-dd1b-4664-9a50-c2f40f4bd79a),
3205    oleautomation,
3206    dual,
3207]
3208interface ISchemaModelGroup : ISchemaParticle
3209{
3210    [id(DISPID_SOM_PARTICLES), propget]
3211    HRESULT particles(
3212        [out,retval] ISchemaItemCollection** particles);
3213};
3214
3215[
3216    local,
3217    object,
3218    uuid(50ea08bc-dd1b-4664-9a50-c2f40f4bd79a),
3219    oleautomation,
3220    dual
3221]
3222interface ISchemaAny : ISchemaParticle
3223{
3224    [id(DISPID_SOM_NAMESPACES), propget]
3225    HRESULT namespaces(
3226        [out,retval] ISchemaStringCollection** namespaces);
3227
3228    [id(DISPID_SOM_PROCESSCONTENTS), propget]
3229    HRESULT processContents(
3230        [out,retval] SCHEMAPROCESSCONTENTS* processContents);
3231};
3232
3233[
3234    local,
3235    object,
3236    uuid(50ea08bd-dd1b-4664-9a50-c2f40f4bd79a),
3237    oleautomation,
3238    dual
3239]
3240interface ISchemaIdentityConstraint : ISchemaItem
3241{
3242    [id(DISPID_SOM_SELECTOR), propget]
3243    HRESULT selector(
3244        [out,retval] BSTR* selector);
3245
3246    [id(DISPID_SOM_FIELDS), propget]
3247        HRESULT fields(
3248            [out,retval] ISchemaStringCollection** fields);
3249
3250    [id(DISPID_SOM_REFERENCEDKEY), propget]
3251    HRESULT referencedKey(
3252        [out,retval] ISchemaIdentityConstraint** key);
3253};
3254
3255[
3256    local,
3257    object,
3258    uuid(50ea08be-dd1b-4664-9a50-c2f40f4bd79a),
3259    oleautomation,
3260    dual
3261]
3262interface ISchemaNotation : ISchemaItem
3263{
3264    [id(DISPID_SOM_SYSTEMIDENTIFIER), propget]
3265    HRESULT systemIdentifier(
3266        [out,retval] BSTR* uri);
3267
3268    [id(DISPID_SOM_PUBLICIDENTIFIER), propget]
3269    HRESULT publicIdentifier(
3270        [out,retval] BSTR* uri);
3271};
3272
3273
3274[
3275    helpstring("SAX XML Reader 3.0"),
3276    progid("Msxml2.SAXXMLReader.3.0"),
3277    vi_progid("Msxml2.SAXXMLReader"),
3278    threading(both),
3279    uuid(3124c396-fb13-4836-a6ad-1317f1713688)
3280]
3281coclass SAXXMLReader30
3282{
3283    [default] interface IVBSAXXMLReader;
3284    interface ISAXXMLReader;
3285    interface IMXReaderControl;
3286};
3287
3288[
3289    uuid(7c6e29bc-8b8b-4c3d-859e-af6cd158be0f)
3290]
3291coclass SAXXMLReader40
3292{
3293    [default] interface IVBSAXXMLReader;
3294    interface ISAXXMLReader;
3295}
3296
3297[
3298    uuid(88d96a0c-f192-11d4-a65f-0040963251e5)
3299]
3300coclass SAXXMLReader60
3301{
3302    [default] interface IVBSAXXMLReader;
3303    interface ISAXXMLReader;
3304}
3305
3306[
3307    helpstring("SAX XML Reader"),
3308    progid("Msxml2.SAXXMLReader"),
3309    vi_progid("Msxml2.SAXXMLReader"),
3310    threading(both),
3311    uuid(079aa557-4a18-424a-8eee-e39f0a8d41b9)
3312]
3313coclass SAXXMLReader
3314{
3315    [default] interface IVBSAXXMLReader;
3316    interface ISAXXMLReader;
3317    interface IMXReaderControl;
3318}
3319
3320[
3321    uuid(a4c23ec3-6b70-4466-9127-550077239978)
3322]
3323coclass MXHTMLWriter
3324{
3325    [default] interface IMXWriter;
3326
3327    interface ISAXContentHandler;
3328    interface ISAXErrorHandler;
3329    interface ISAXDTDHandler;
3330    interface ISAXLexicalHandler;
3331    interface ISAXDeclHandler;
3332
3333    interface IVBSAXContentHandler;
3334    interface IVBSAXDeclHandler;
3335    interface IVBSAXDTDHandler;
3336    interface IVBSAXErrorHandler;
3337    interface IVBSAXLexicalHandler;
3338}
3339
3340[
3341    uuid(853d1540-c1a7-4aa9-a226-4d3bd301146d)
3342]
3343coclass MXHTMLWriter30
3344{
3345    [default] interface IMXWriter;
3346
3347    interface ISAXContentHandler;
3348    interface ISAXDeclHandler;
3349    interface ISAXDTDHandler;
3350    interface ISAXErrorHandler;
3351    interface ISAXLexicalHandler;
3352
3353    interface IVBSAXContentHandler;
3354    interface IVBSAXDeclHandler;
3355    interface IVBSAXDTDHandler;
3356    interface IVBSAXErrorHandler;
3357    interface IVBSAXLexicalHandler;
3358}
3359
3360[
3361    uuid(88d969c9-f192-11d4-a65f-0040963251e5)
3362]
3363coclass MXHTMLWriter40
3364{
3365    [default] interface IMXWriter;
3366
3367    interface ISAXContentHandler;
3368    interface ISAXDeclHandler;
3369    interface ISAXDTDHandler;
3370    interface ISAXErrorHandler;
3371    interface ISAXLexicalHandler;
3372
3373    interface IVBSAXContentHandler;
3374    interface IVBSAXDeclHandler;
3375    interface IVBSAXDTDHandler;
3376    interface IVBSAXErrorHandler;
3377    interface IVBSAXLexicalHandler;
3378}
3379
3380[
3381    uuid(88d96a10-f192-11d4-a65f-0040963251e5)
3382]
3383coclass MXHTMLWriter60
3384{
3385    [default] interface IMXWriter;
3386
3387    interface ISAXContentHandler;
3388    interface ISAXDeclHandler;
3389    interface ISAXDTDHandler;
3390    interface ISAXErrorHandler;
3391    interface ISAXLexicalHandler;
3392
3393    interface IVBSAXContentHandler;
3394    interface IVBSAXDeclHandler;
3395    interface IVBSAXDTDHandler;
3396    interface IVBSAXErrorHandler;
3397    interface IVBSAXLexicalHandler;
3398}
3399
3400[
3401    helpstring("MXXMLWriter 3.0"),
3402    progid("Msxml2.MXXMLWriter.3.0"),
3403    vi_progid("Msxml2.MXXMLWriter"),
3404    threading(both),
3405    uuid(3d813dfe-6c91-4a4e-8f41-04346a841d9c)
3406]
3407coclass MXXMLWriter30
3408{
3409    [default] interface IMXWriter;
3410
3411    interface ISAXContentHandler;
3412    interface ISAXDeclHandler;
3413    interface ISAXDTDHandler;
3414    interface ISAXErrorHandler;
3415    interface ISAXLexicalHandler;
3416
3417    interface IVBSAXContentHandler;
3418    interface IVBSAXDeclHandler;
3419    interface IVBSAXDTDHandler;
3420    interface IVBSAXErrorHandler;
3421    interface IVBSAXLexicalHandler;
3422};
3423
3424[
3425    uuid(88d969c8-f192-11d4-a65f-0040963251e5),
3426]
3427coclass MXXMLWriter40
3428{
3429    [default] interface IMXWriter;
3430
3431    interface ISAXContentHandler;
3432    interface ISAXDeclHandler;
3433    interface ISAXDTDHandler;
3434    interface ISAXErrorHandler;
3435    interface ISAXLexicalHandler;
3436
3437    interface IVBSAXContentHandler;
3438    interface IVBSAXDeclHandler;
3439    interface IVBSAXDTDHandler;
3440    interface IVBSAXErrorHandler;
3441    interface IVBSAXLexicalHandler;
3442}
3443
3444[
3445    uuid(88d96a0f-f192-11d4-a65f-0040963251e5)
3446]
3447coclass MXXMLWriter60
3448{
3449    [default] interface IMXWriter;
3450
3451    interface ISAXContentHandler;
3452    interface ISAXDeclHandler;
3453    interface ISAXDTDHandler;
3454    interface ISAXErrorHandler;
3455    interface ISAXLexicalHandler;
3456
3457    interface IVBSAXContentHandler;
3458    interface IVBSAXDeclHandler;
3459    interface IVBSAXDTDHandler;
3460    interface IVBSAXErrorHandler;
3461    interface IVBSAXLexicalHandler;
3462}
3463
3464[
3465    helpstring("MXXMLWriter"),
3466    progid("Msxml2.MXXMLWriter"),
3467    vi_progid("Msxml2.MXXMLWriter"),
3468    threading(both),
3469    uuid(fc220ad8-a72a-4ee8-926e-0b7ad152a020)
3470]
3471coclass MXXMLWriter
3472{
3473    [default] interface IMXWriter;
3474
3475    interface ISAXContentHandler;
3476    interface ISAXErrorHandler;
3477    interface ISAXDTDHandler;
3478    interface ISAXLexicalHandler;
3479    interface ISAXDeclHandler;
3480
3481    interface IVBSAXContentHandler;
3482    interface IVBSAXDeclHandler;
3483    interface IVBSAXDTDHandler;
3484    interface IVBSAXErrorHandler;
3485    interface IVBSAXLexicalHandler;
3486}
3487
3488[
3489    uuid(88d969d5-f192-11d4-a65f-0040963251e5)
3490]
3491coclass MXNamespaceManager
3492{
3493    [default] interface IVBMXNamespaceManager;
3494    interface IMXNamespaceManager;
3495}
3496
3497[
3498    uuid(88d969d6-f192-11d4-a65f-0040963251e5)
3499]
3500coclass MXNamespaceManager40
3501{
3502    [default] interface IVBMXNamespaceManager;
3503    interface IMXNamespaceManager;
3504}
3505
3506[
3507    uuid(88d96a11-f192-11d4-a65f-0040963251e5)
3508]
3509coclass MXNamespaceManager60
3510{
3511    [default] interface IVBMXNamespaceManager;
3512    interface IMXNamespaceManager;
3513}
3514
3515[
3516    helpstring("SAXAttributes 3.0"),
3517    progid("Msxml2.SAXAttributes.3.0"),
3518    vi_progid("Msxml2.SAXAttributes"),
3519    threading(both),
3520    uuid(3e784a01-f3ae-4dc0-9354-9526b9370eba)
3521]
3522coclass SAXAttributes30
3523{
3524    [default] interface IMXAttributes;
3525    interface IVBSAXAttributes;
3526    interface ISAXAttributes;
3527}
3528
3529[
3530    uuid(88d969ca-f192-11d4-a65f-0040963251e5),
3531]
3532coclass SAXAttributes40
3533{
3534    [default] interface IMXAttributes;
3535    interface IVBSAXAttributes;
3536    interface ISAXAttributes;
3537}
3538
3539[
3540    uuid(88d96a0e-f192-11d4-a65f-0040963251e5)
3541]
3542coclass SAXAttributes60
3543{
3544    [default] interface IMXAttributes;
3545    interface IVBSAXAttributes;
3546    interface ISAXAttributes;
3547}
3548
3549[
3550    helpstring("SAXAttributes"),
3551    progid("Msxml2.SAXAttributes"),
3552    vi_progid("Msxml2.SAXAttributes"),
3553    threading(both),
3554    uuid(4dd441ad-526d-4a77-9f1b-9841ed802fb0)
3555]
3556coclass SAXAttributes
3557{
3558    [default] interface IMXAttributes;
3559    interface IVBSAXAttributes;
3560    interface ISAXAttributes;
3561}
3562
3563/*
3564 * Error Codes
3565 */
3566cpp_quote("#define E_XML_NOTWF              0xC00CE223")
3567cpp_quote("#define E_XML_NODTD              0xC00CE224")
3568cpp_quote("#define E_XML_INVALID            0xC00CE225")
3569cpp_quote("#define E_XML_BUFFERTOOSMALL     0xC00CE226")
3570
3571} /* Library MSXML */
3572