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