Added some idl definitions.
[wine] / include / xmldom.idl
1 /*
2  * Copyright (C) 2005 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #include "xmldomdid.h"
20 #include "idispids.h"
21
22 import "ocidl.idl";
23
24 interface IXMLDOMImplementation;
25 interface IXMLDOMNode;
26 interface IXMLDOMDocumentFragment;
27 interface IXMLDOMDocument;
28 interface IXMLDOMNodeList;
29 interface IXMLDOMNamedNodeMap;
30 interface IXMLDOMCharacterData;
31 interface IXMLDOMAttribute;
32 interface IXMLDOMElement;
33 interface IXMLDOMText;
34 interface IXMLDOMComment;
35 interface IXMLDOMProcessingInstruction;
36 interface IXMLDOMCDATASection;
37 interface IXMLDOMDocumentType;
38 interface IXMLDOMNotation;
39 interface IXMLDOMEntity;
40 interface IXMLDOMEntityReference;
41 interface IXMLDOMParseError;
42 interface IXTLRuntime;
43
44 typedef enum tagDOMNodeType {
45     NODE_INVALID,
46     NODE_ELEMENT,
47     NODE_ATTRIBUTE,
48     NODE_TEXT,
49     NODE_CDATA_SECTION,
50     NODE_ENTITY_REFERENCE,
51     NODE_ENTITY,
52     NODE_PROCESSING_INSTRUCTION,
53     NODE_COMMENT,
54     NODE_DOCUMENT,
55     NODE_DOCUMENT_TYPE,
56     NODE_DOCUMENT_FRAGMENT,
57     NODE_NOTATION
58 } DOMNodeType;
59
60 [
61 local,
62 object,
63 odl,
64 dual,
65 oleautomation,
66 /*nonextensible,*/
67 uuid(2933bf80-7b36-11d2-b20e-00c04f983e60),
68 pointer_default(unique)
69 ]
70 interface IXMLDOMNode : IDispatch
71 {
72     [propget, id(DISPID_DOM_NODE_NODENAME)]
73     HRESULT nodeName( [out,retval] BSTR *name );
74
75     [propget, id(DISPID_DOM_NODE_NODEVALUE)]
76     HRESULT nodeValue( [out,retval] VARIANT *value );
77
78     [propput, id(DISPID_DOM_NODE_NODEVALUE)]
79     HRESULT noveValue( [in] VARIANT value );
80
81     [propget, id(DISPID_DOM_NODE_NODETYPE)]
82     HRESULT nodeType( [out,retval] DOMNodeType *type );
83
84     [propget, id(DISPID_DOM_NODE_PARENTNODE)]
85     HRESULT parentNode( [out,retval] IXMLDOMNode *parent );
86
87     [propget, id(DISPID_DOM_NODE_CHILDNODES)]
88     HRESULT childNodes( [out,retval] IXMLDOMNodeList *childList );
89
90     [propget, id(DISPID_DOM_NODE_FIRSTCHILD)]
91     HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild );
92
93     [propget, id(DISPID_DOM_NODE_LASTCHILD)]
94     HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild );
95
96     [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)]
97     HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling );
98
99     [propget, id(DISPID_DOM_NODE_NEXTSIBLING)]
100     HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling );
101
102     [propget, id(DISPID_DOM_NODE_ATTRIBUTES)]
103     HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap );
104
105     [id(DISPID_DOM_NODE_INSERTBEFORE)]
106     HRESULT insertBefore( [in] IXMLDOMNode * newChild,
107                           [in] VARIANT refChild,
108                           [out,retval] IXMLDOMNode **outNewChild );
109
110     [id(DISPID_DOM_NODE_REPLACECHILD)]
111     HRESULT replaceChild( [in] IXMLDOMNode *newChild,
112                           [in] IXMLDOMNode *oldChild,
113                           [out,retval] IXMLDOMNode **outOldChild );
114
115     [id(DISPID_DOM_NODE_REMOVECHILD)]
116     HRESULT removeChild( [in] IXMLDOMNode *childNode,
117                          [out,retval] IXMLDOMNode **oldChild );
118
119     [id(DISPID_DOM_NODE_APPENDCHILD)]
120     HRESULT appendChild( [in] IXMLDOMNode *newChild,
121                          [out,retval] IXMLDOMNode **outNewChild );
122
123     [id(DISPID_DOM_NODE_HASCHILDNODES)]
124     HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild );
125
126     [id(DISPID_DOM_NODE_OWNERDOC)]
127     HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument );
128
129     [id(DISPID_DOM_NODE_CLONENODE)]
130     HRESULT cloneNode( [in] VARIANT_BOOL deep,
131                        [out,retval] IXMLDOMNode **cloneRoot );
132
133     [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)]
134     HRESULT nodeTypeString( [out,retval] BSTR *nodeType );
135
136     [propget, id(DISPID_XMLDOM_NODE_TEXT)]
137     HRESULT text( [out,retval] BSTR *text );
138
139     [propput, id(DISPID_XMLDOM_NODE_TEXT)]
140     HRESULT text( [in] BSTR text );
141
142     [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)]
143     HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified );
144
145     [propget, id(DISPID_XMLDOM_NODE_DEFINITION)]
146     HRESULT definition( [out,retval] IXMLDOMNode **definitionNode );
147
148     [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
149     HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue );
150
151     [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)]
152     HRESULT nodeTypedValue( [in] VARIANT typedValue );
153
154     [propget, id(DISPID_XMLDOM_NODE_DATATYPE)]
155     HRESULT dataType( [out,retval] VARIANT *dataTypeName );
156
157     [propput, id(DISPID_XMLDOM_NODE_DATATYPE)]
158     HRESULT dataType( [in] BSTR dataTypeName );
159
160     [propget, id(DISPID_XMLDOM_NODE_XML)]
161     HRESULT xml( [out,retval] BSTR *xmlString );
162
163     [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)]
164     HRESULT transformNode( [in] IXMLDOMNode *styleSheet,
165                            [out,retval] BSTR *xmlString );
166
167     [id(DISPID_XMLDOM_NODE_SELECTNODES)]
168     HRESULT selectNodes( [in] BSTR queryString,
169                          [out,retval] IXMLDOMNodeList **resultList );
170
171     [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)]
172     HRESULT selectSingleNode( [in] BSTR queryString,
173                               [out,retval] IXMLDOMNode **resultNode );
174
175     [propget, id(DISPID_XMLDOM_NODE_PARSED)]
176     HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed );
177
178     [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)]
179     HRESULT namespaceURI( [out,retval] BSTR *namespaceURI );
180
181     [propget, id(DISPID_XMLDOM_NODE_PREFIX)]
182     HRESULT prefix( [out,retval] BSTR *prefixString );
183
184     [propget, id(DISPID_XMLDOM_NODE_BASENAME)]
185     HRESULT baseName( [out,retval] BSTR *nameString );
186
187     [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)]
188     HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet,
189                                    [in] VARIANT outputObject );
190 };
191
192 [
193 local,
194 object,
195 odl,
196 dual,
197 /*nonextensible,*/
198 oleautomation,
199 uuid(2933bf81-7b36-11d2-b20e-00c04f983e60),
200 pointer_default(unique)
201 ]
202 interface IXMLDOMDocument : IXMLDOMNode
203 {
204     [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)]
205     HRESULT doctype( [out,retval] IXMLDOMDocument **documentType );
206
207     [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)]
208     HRESULT implementation( [out,retval] IXMLDOMImplementation **impl );
209
210     [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
211     HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement );
212
213     [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)]
214     HRESULT documentElement( [in] IXMLDOMElement *DOMElement );
215
216     [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)]
217     HRESULT createElement( [in] BSTR tagname,
218                            [out,retval] IXMLDOMElement **element );
219
220     [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)]
221     HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag );
222
223     [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)]
224     HRESULT createTextNode( [in] BSTR data,
225                             [out,retval] IXMLDOMText **text );
226
227     [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)]
228     HRESULT createComment( [in] BSTR data,
229                            [out,retval] IXMLDOMComment **comment );
230
231     [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)]
232     HRESULT createCDATASection( [in] BSTR data,
233                                 [out,retval] IXMLDOMCDATASection **cdata );
234
235     [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)]
236     HRESULT createProcessingInstruction( [in] BSTR target,
237                                          [in] BSTR data,
238                                          [out,retval] IXMLDOMProcessingInstruction **pi );
239
240     [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)]
241     HRESULT createAttribute( [in] BSTR name,
242                              [out,retval] IXMLDOMAttribute **attribute );
243
244     [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)]
245     HRESULT createEntityReference( [in] BSTR name,
246                                    [out,retval] IXMLDOMEntityReference **entityRef );
247
248     [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)]
249     HRESULT getElementsByTagName( [in] BSTR tagName,
250                                   [out,retval] IXMLDOMNodeList **resultList );
251
252     [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)]
253     HRESULT createNode( [in] VARIANT Type,
254                         [in] BSTR name,
255                         [in] BSTR namespaceURI,
256                         [out,retval] IXMLDOMNode **node );
257
258     [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)]
259     HRESULT nodeFromID( [in] BSTR idString,
260                         [out,retval] IXMLDOMNode **node );
261
262     [id(DISPID_XMLDOM_DOCUMENT_LOAD)]
263     HRESULT load( [in] VARIANT xmlSource,
264                   [out,retval] VARIANT_BOOL *isSuccessful );
265
266     [propget, id(DISPID_READYSTATE)]
267     HRESULT readyState( [out,retval] long *value );
268
269     [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)]
270     HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj );
271
272     [propget, id(DISPID_XMLDOM_DOCUMENT_URL)]
273     HRESULT url( [out,retval] BSTR *urlString );
274
275     /* FIXME: these is meant to be async, but widl parses that as a keyword */
276     [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
277     HRESULT async( [out,retval] VARIANT_BOOL *isAsync );
278
279     [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)]
280     HRESULT async( [in] VARIANT_BOOL isAsync );
281
282     [id(DISPID_XMLDOM_DOCUMENT_ABORT)]
283     HRESULT abort();
284
285     [id(DISPID_XMLDOM_DOCUMENT_LOADXML)]
286     HRESULT loadXML( [in] BSTR bstrXML,
287                      [out,retval] VARIANT_BOOL *isSuccessful );
288
289     [id(DISPID_XMLDOM_DOCUMENT_SAVE)]
290     HRESULT save( [in] VARIANT destination );
291
292     [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
293     HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating );
294
295     [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)]
296     HRESULT validateOnParse( [in] VARIANT_BOOL isValidating );
297
298     [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
299     HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving );
300
301     [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)]
302     HRESULT resolveExternals( [in] VARIANT_BOOL isValidating );
303
304     [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
305     HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving );
306
307     [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)]
308     HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving );
309
310     [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)]
311     HRESULT onreadystatechange( [in] VARIANT readystatechangeSink );
312
313     [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)]
314     HRESULT ondataavailable( [in] VARIANT ondataavailableSink );
315
316     [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)]
317     HRESULT ontransformnode( [in] VARIANT ontransformnodeSink );
318 };
319
320 [
321 local,
322 object,
323 odl,
324 dual,
325 /*nonextensible,*/
326 oleautomation,
327 uuid(2933bf82-7b36-11d2-b20e-00c04f983e60),
328 pointer_default(unique)
329 ]
330 interface IXMLDOMNodeList : IDispatch
331 {
332     [propget, id(DISPID_VALUE)]
333     HRESULT item( [in] long index,
334                   [out,retval] IXMLDOMNode **listItem );
335
336     [propget, id(DISPID_DOM_NODELIST_LENGTH)]
337     HRESULT length( [out,retval] long *listLength );
338
339     [id(DISPID_XMLDOM_NODELIST_NEXTNODE)]
340     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
341
342     [id(DISPID_XMLDOM_NODELIST_RESET)]
343     HRESULT reset();
344
345     [id(DISPID_NEWENUM)]
346     HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
347 };
348
349 [
350 local,
351 object,
352 odl,
353 dual,
354 /*nonextensible,*/
355 oleautomation,
356 uuid(2933bf83-7b36-11d2-b20e-00c04f983e60),
357 pointer_default(unique)
358 ]
359 interface IXMLDOMNamedNodeMap : IDispatch
360 {
361     [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)]
362     HRESULT getNamedItem( [in] BSTR name,
363                           [out,retval] IXMLDOMNode **namedItem );
364
365     [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)]
366     HRESULT setNamedItem( [in] IXMLDOMNode *newItem,
367                           [out,retval] IXMLDOMNode **namedItem );
368
369     [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)]
370     HRESULT removeNamedItem( [in] BSTR name,
371                              [out,retval] IXMLDOMNode **namedItem );
372
373     [propget, id(DISPID_VALUE)]
374     HRESULT item( [in] long index,
375                   [out,retval] IXMLDOMNode **listItem );
376
377     [propget, id(DISPID_DOM_NODELIST_LENGTH)]
378     HRESULT length( [out,retval] long *listLength );
379
380     [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)]
381     HRESULT getQualifiedItem( [in] BSTR baseName,
382                               [in] BSTR namespaceURI,
383                               [out,retval] IXMLDOMNode **qualifiedItem );
384
385     [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)]
386     HRESULT removeQualifiedItem( [in] BSTR baseName,
387                                  [in] BSTR namespaceURI,
388                                  [out,retval] IXMLDOMNode **qualifiedItem );
389
390     [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)]
391     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem );
392
393     [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)]
394     HRESULT reset();
395
396     [id(DISPID_NEWENUM)]
397     HRESULT _newEnum( [out,retval] IUnknown **ppUnk );
398 };
399
400 [
401 local,
402 object,
403 odl,
404 dual,
405 /*nonextensible,*/
406 oleautomation,
407 uuid(3efaa413-272f-11d2-836f-0000f87a7782),
408 pointer_default(unique)
409 ]
410 interface IXMLDOMDocumentFragment : IXMLDOMNode
411 {
412     /* empty */
413 };
414
415 [
416 local,
417 object,
418 odl,
419 dual,
420 /*nonextensible,*/
421 oleautomation,
422 uuid(2933bf84-7b36-11d2-b20e-00c04f983e60),
423 pointer_default(unique)
424 ]
425 interface IXMLDOMCharacterData : IXMLDOMNode
426 {
427     [propget, id(DISPID_DOM_DATA_DATA)]
428     HRESULT data( [out,retval] BSTR *data );
429
430     [propput, id(DISPID_DOM_DATA_DATA)]
431     HRESULT data( [in] BSTR data );
432
433     [propget, id(DISPID_DOM_DATA_LENGTH)]
434     HRESULT length( [out,retval] long *dataLength );
435
436     [id(DISPID_DOM_DATA_SUBSTRING)]
437     HRESULT substringData( [in] long offset,
438                            [in] long count,
439                            [out,retval] BSTR *data );
440
441     [id(DISPID_DOM_DATA_APPEND)]
442     HRESULT appendData( [in] BSTR data );
443
444     [id(DISPID_DOM_DATA_INSERT)]
445     HRESULT insertData( [in] long offset,
446                         [in] BSTR data );
447
448     [id(DISPID_DOM_DATA_DELETE)]
449     HRESULT deleteData( [in] long offset,
450                         [in] long count );
451
452     [id(DISPID_DOM_DATA_REPLACE)]
453     HRESULT replaceData( [in] long offset,
454                          [in] long count,
455                          [in] BSTR data );
456 };
457
458 [
459 local,
460 object,
461 odl,
462 dual,
463 /*nonextensible,*/
464 oleautomation,
465 uuid(2933bf85-7b36-11d2-b20e-00c04f983e60),
466 pointer_default(unique)
467 ]
468 interface IXMLDOMAttribute : IXMLDOMNode
469 {
470     [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)]
471     HRESULT name( [out,retval] BSTR *attributeName );
472
473     [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)]
474     HRESULT value( [out,retval] VARIANT *attributeValue );
475
476     [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)]
477     HRESULT value( [in] VARIANT attributeValue );
478 };
479
480 /* FIXME: interface IXMLDOMElement */
481
482 [
483 local,
484 object,
485 odl,
486 dual,
487 /*nonextensible,*/
488 oleautomation,
489 uuid(2933bf87-7b36-11d2-b20e-00c04f983e60),
490 pointer_default(unique)
491 ]
492 interface IXMLDOMText : IXMLDOMCharacterData
493 {
494     [id(DISPID_DOM_TEXT_SPLITTEXT)]
495     HRESULT splitText( [in] long offset,
496                        [out,retval] IXMLDOMText **rightHandTextNode );
497 };
498
499 [
500 local,
501 object,
502 odl,
503 dual,
504 /*nonextensible,*/
505 oleautomation,
506 uuid(2933bf88-7b36-11d2-b20e-00c04f983e60),
507 pointer_default(unique)
508 ]
509 interface IXMLDOMComment : IXMLDOMNode
510 {
511     /* empty */
512 };
513
514 [
515 local,
516 object,
517 odl,
518 dual,
519 /*nonextensible,*/
520 oleautomation,
521 uuid(2933bf89-7b36-11d2-b20e-00c04f983e60),
522 pointer_default(unique)
523 ]
524 interface IXMLDOMProcessingInstruction : IXMLDOMNode
525 {
526     [propget, id(DISPID_DOM_PI_TARGET)]
527     HRESULT target( [out, retval] BSTR *name );
528
529     [propget, id(DISPID_DOM_PI_DATA)]
530     HRESULT data( [out, retval] BSTR *value );
531
532     [propput, id(DISPID_DOM_PI_DATA)]
533     HRESULT data( [in] BSTR value );
534 };
535
536 [
537 local,
538 object,
539 odl,
540 dual,
541 /*nonextensible,*/
542 oleautomation,
543 uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60),
544 pointer_default(unique)
545 ]
546 interface IXMLDOMCDATASection : IXMLDOMText
547 {
548     /* empty */
549 };
550 [
551 local,
552 object,
553 odl,
554 dual,
555 /*nonextensible,*/
556 oleautomation,
557 uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60),
558 pointer_default(unique)
559 ]
560 interface IXMLDOMDocumentType : IXMLDOMNode
561 {
562     [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)]
563     HRESULT name( [out,retval] BSTR *rootName );
564
565     [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)]
566     HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap );
567
568     [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)]
569     HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap );
570 };
571
572
573 [
574 uuid(2933bf90-7b36-11d2-b20e-00c04f983e60)
575 ]
576 coclass DOMDocument
577 {
578     [default] interface IXMLDOMDocument;
579     [default, source] dispinterface XMLDOMDocumentEvents;
580 };
581
582 [
583 uuid(2933bf91-7b36-11d2-b20e-00c04f983e60)
584 ]
585 coclass DOMFreeThreadedDocument
586 {
587     [default] interface IXMLDOMDocument;
588     [default, source] dispinterface XMLDOMDocumentEvents;
589 }