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