| /* | 
 |  * Copyright (C) 2005 Mike McCormack | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | #include <xmldomdid.h> | 
 | #include <idispids.h> | 
 |  | 
 | #if !defined(progid) && !defined(__WIDL__) | 
 | #define threading(model) | 
 | #define progid(str) | 
 | #define vi_progid(str) | 
 | #endif | 
 |  | 
 | interface IXMLDOMImplementation; | 
 | interface IXMLDOMNode; | 
 | interface IXMLDOMDocumentFragment; | 
 | interface IXMLDOMDocument; | 
 | interface IXMLDOMNodeList; | 
 | interface IXMLDOMNamedNodeMap; | 
 | interface IXMLDOMCharacterData; | 
 | interface IXMLDOMAttribute; | 
 | interface IXMLDOMElement; | 
 | interface IXMLDOMText; | 
 | interface IXMLDOMComment; | 
 | interface IXMLDOMProcessingInstruction; | 
 | interface IXMLDOMCDATASection; | 
 | interface IXMLDOMDocumentType; | 
 | interface IXMLDOMNotation; | 
 | interface IXMLDOMEntity; | 
 | interface IXMLDOMEntityReference; | 
 | interface IXMLDOMParseError; | 
 |  | 
 | cpp_quote("#ifndef __MSXML_DOMNODETYPE_DEFINED") | 
 | cpp_quote("#define __MSXML_DOMNODETYPE_DEFINED") | 
 | typedef enum tagDOMNodeType { | 
 |     NODE_INVALID, | 
 |     NODE_ELEMENT, | 
 |     NODE_ATTRIBUTE, | 
 |     NODE_TEXT, | 
 |     NODE_CDATA_SECTION, | 
 |     NODE_ENTITY_REFERENCE, | 
 |     NODE_ENTITY, | 
 |     NODE_PROCESSING_INSTRUCTION, | 
 |     NODE_COMMENT, | 
 |     NODE_DOCUMENT, | 
 |     NODE_DOCUMENT_TYPE, | 
 |     NODE_DOCUMENT_FRAGMENT, | 
 |     NODE_NOTATION | 
 | } DOMNodeType; | 
 | cpp_quote("#endif") | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | oleautomation, | 
 | /*nonextensible,*/ | 
 | uuid(2933bf80-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMNode : IDispatch | 
 | { | 
 |     [propget, id(DISPID_DOM_NODE_NODENAME)] | 
 |     HRESULT nodeName( [out,retval] BSTR *name ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_NODEVALUE)] | 
 |     HRESULT nodeValue( [out,retval] VARIANT *value ); | 
 |  | 
 |     [propput, id(DISPID_DOM_NODE_NODEVALUE)] | 
 |     HRESULT nodeValue( [in] VARIANT value ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_NODETYPE)] | 
 |     HRESULT nodeType( [out,retval] DOMNodeType *type ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_PARENTNODE)] | 
 |     HRESULT parentNode( [out,retval] IXMLDOMNode **parent ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_CHILDNODES)] | 
 |     HRESULT childNodes( [out,retval] IXMLDOMNodeList **childList ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_FIRSTCHILD)] | 
 |     HRESULT firstChild( [out,retval] IXMLDOMNode **firstChild ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_LASTCHILD)] | 
 |     HRESULT lastChild( [out,retval] IXMLDOMNode **lastChild ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_PREVIOUSSIBLING)] | 
 |     HRESULT previousSibling( [out,retval] IXMLDOMNode **previousSibling ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_NEXTSIBLING)] | 
 |     HRESULT nextSibling( [out,retval] IXMLDOMNode **nextSibling ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_ATTRIBUTES)] | 
 |     HRESULT attributes( [out,retval] IXMLDOMNamedNodeMap **attributeMap ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_INSERTBEFORE)] | 
 |     HRESULT insertBefore( [in] IXMLDOMNode * newChild, | 
 |                           [in] VARIANT refChild, | 
 |                           [out,retval] IXMLDOMNode **outNewChild ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_REPLACECHILD)] | 
 |     HRESULT replaceChild( [in] IXMLDOMNode *newChild, | 
 |                           [in] IXMLDOMNode *oldChild, | 
 |                           [out,retval] IXMLDOMNode **outOldChild ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_REMOVECHILD)] | 
 |     HRESULT removeChild( [in] IXMLDOMNode *childNode, | 
 |                          [out,retval] IXMLDOMNode **oldChild ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_APPENDCHILD)] | 
 |     HRESULT appendChild( [in] IXMLDOMNode *newChild, | 
 |                          [out,retval] IXMLDOMNode **outNewChild ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_HASCHILDNODES)] | 
 |     HRESULT hasChildNodes( [out,retval] VARIANT_BOOL *hasChild ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODE_OWNERDOC)] | 
 |     HRESULT ownerDocument( [out,retval] IXMLDOMDocument **DOMDocument ); | 
 |  | 
 |     [id(DISPID_DOM_NODE_CLONENODE)] | 
 |     HRESULT cloneNode( [in] VARIANT_BOOL deep, | 
 |                        [out,retval] IXMLDOMNode **cloneRoot ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE)] | 
 |     HRESULT nodeTypeString( [out,retval] BSTR *nodeType ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_TEXT)] | 
 |     HRESULT text( [out,retval] BSTR *text ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_NODE_TEXT)] | 
 |     HRESULT text( [in] BSTR text ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_SPECIFIED)] | 
 |     HRESULT specified( [out,retval] VARIANT_BOOL *isSpecified ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_DEFINITION)] | 
 |     HRESULT definition( [out,retval] IXMLDOMNode **definitionNode ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] | 
 |     HRESULT nodeTypedValue( [out,retval] VARIANT *typedValue ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE)] | 
 |     HRESULT nodeTypedValue( [in] VARIANT typedValue ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_DATATYPE)] | 
 |     HRESULT dataType( [out,retval] VARIANT *dataTypeName ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_NODE_DATATYPE)] | 
 |     HRESULT dataType( [in] BSTR dataTypeName ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_XML)] | 
 |     HRESULT xml( [out,retval] BSTR *xmlString ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODE_TRANSFORMNODE)] | 
 |     HRESULT transformNode( [in] IXMLDOMNode *styleSheet, | 
 |                            [out,retval] BSTR *xmlString ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODE_SELECTNODES)] | 
 |     HRESULT selectNodes( [in] BSTR queryString, | 
 |                          [out,retval] IXMLDOMNodeList **resultList ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE)] | 
 |     HRESULT selectSingleNode( [in] BSTR queryString, | 
 |                               [out,retval] IXMLDOMNode **resultNode ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_PARSED)] | 
 |     HRESULT parsed( [out,retval] VARIANT_BOOL *isParsed ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_NAMESPACE)] | 
 |     HRESULT namespaceURI( [out,retval] BSTR *namespaceURI ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_PREFIX)] | 
 |     HRESULT prefix( [out,retval] BSTR *prefixString ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_NODE_BASENAME)] | 
 |     HRESULT baseName( [out,retval] BSTR *nameString ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT)] | 
 |     HRESULT transformNodeToObject( [in] IXMLDOMNode *stylesheet, | 
 |                                    [in] VARIANT outputObject ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf81-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMDocument : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE)] | 
 |     HRESULT doctype( [out,retval] IXMLDOMDocumentType **documentType ); | 
 |  | 
 |     [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION)] | 
 |     HRESULT implementation( [out,retval] IXMLDOMImplementation **impl ); | 
 |  | 
 |     [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] | 
 |     HRESULT documentElement( [out,retval] IXMLDOMElement **DOMElement ); | 
 |  | 
 |     [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT)] | 
 |     HRESULT documentElement( [in] IXMLDOMElement *DOMElement ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATEELEMENT)] | 
 |     HRESULT createElement( [in] BSTR tagname, | 
 |                            [out,retval] IXMLDOMElement **element ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT)] | 
 |     HRESULT createDocumentFragment( [out,retval] IXMLDOMDocumentFragment **docFrag ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE)] | 
 |     HRESULT createTextNode( [in] BSTR data, | 
 |                             [out,retval] IXMLDOMText **text ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATECOMMENT)] | 
 |     HRESULT createComment( [in] BSTR data, | 
 |                            [out,retval] IXMLDOMComment **comment ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION)] | 
 |     HRESULT createCDATASection( [in] BSTR data, | 
 |                                 [out,retval] IXMLDOMCDATASection **cdata ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION)] | 
 |     HRESULT createProcessingInstruction( [in] BSTR target, | 
 |                                          [in] BSTR data, | 
 |                                          [out,retval] IXMLDOMProcessingInstruction **pi ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE)] | 
 |     HRESULT createAttribute( [in] BSTR name, | 
 |                              [out,retval] IXMLDOMAttribute **attribute ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE)] | 
 |     HRESULT createEntityReference( [in] BSTR name, | 
 |                                    [out,retval] IXMLDOMEntityReference **entityRef ); | 
 |  | 
 |     [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME)] | 
 |     HRESULT getElementsByTagName( [in] BSTR tagName, | 
 |                                   [out,retval] IXMLDOMNodeList **resultList ); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_CREATENODE)] | 
 |     HRESULT createNode( [in] VARIANT Type, | 
 |                         [in] BSTR name, | 
 |                         [in] BSTR namespaceURI, | 
 |                         [out,retval] IXMLDOMNode **node ); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID)] | 
 |     HRESULT nodeFromID( [in] BSTR idString, | 
 |                         [out,retval] IXMLDOMNode **node ); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_LOAD)] | 
 |     HRESULT load( [in] VARIANT xmlSource, | 
 |                   [out,retval] VARIANT_BOOL *isSuccessful ); | 
 |  | 
 |     [propget, id(DISPID_READYSTATE)] | 
 |     HRESULT readyState( [out,retval] LONG *value ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR)] | 
 |     HRESULT parseError( [out,retval] IXMLDOMParseError **errorObj ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_URL)] | 
 |     HRESULT url( [out,retval] BSTR *urlString ); | 
 |  | 
 |     /* FIXME: these is meant to be async, but widl parses that as a keyword */ | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] | 
 |     HRESULT async( [out,retval] VARIANT_BOOL *isAsync ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC)] | 
 |     HRESULT async( [in] VARIANT_BOOL isAsync ); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_ABORT)] | 
 |     HRESULT abort(); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_LOADXML)] | 
 |     HRESULT loadXML( [in] BSTR bstrXML, | 
 |                      [out,retval] VARIANT_BOOL *isSuccessful ); | 
 |  | 
 |     [id(DISPID_XMLDOM_DOCUMENT_SAVE)] | 
 |     HRESULT save( [in] VARIANT destination ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] | 
 |     HRESULT validateOnParse( [out,retval] VARIANT_BOOL *isValidating ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE)] | 
 |     HRESULT validateOnParse( [in] VARIANT_BOOL isValidating ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] | 
 |     HRESULT resolveExternals( [out,retval] VARIANT_BOOL *isResolving ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE)] | 
 |     HRESULT resolveExternals( [in] VARIANT_BOOL isValidating ); | 
 |  | 
 |     [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] | 
 |     HRESULT preserveWhiteSpace( [out,retval] VARIANT_BOOL *isPreserving ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE)] | 
 |     HRESULT preserveWhiteSpace( [in] VARIANT_BOOL isPreserving ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE)] | 
 |     HRESULT onreadystatechange( [in] VARIANT readystatechangeSink ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE)] | 
 |     HRESULT ondataavailable( [in] VARIANT ondataavailableSink ); | 
 |  | 
 |     [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE)] | 
 |     HRESULT ontransformnode( [in] VARIANT ontransformnodeSink ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf82-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMNodeList : IDispatch | 
 | { | 
 |     [propget, id(DISPID_VALUE)] | 
 |     HRESULT item( [in] LONG index, | 
 |                   [out,retval] IXMLDOMNode **listItem ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODELIST_LENGTH)] | 
 |     HRESULT length( [out,retval] LONG *listLength ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODELIST_NEXTNODE)] | 
 |     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NODELIST_RESET)] | 
 |     HRESULT reset(); | 
 |  | 
 |     [id(DISPID_NEWENUM)] | 
 |     HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf83-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMNamedNodeMap : IDispatch | 
 | { | 
 |     [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM)] | 
 |     HRESULT getNamedItem( [in] BSTR name, | 
 |                           [out,retval] IXMLDOMNode **namedItem ); | 
 |  | 
 |     [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM)] | 
 |     HRESULT setNamedItem( [in] IXMLDOMNode *newItem, | 
 |                           [out,retval] IXMLDOMNode **namedItem ); | 
 |  | 
 |     [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM)] | 
 |     HRESULT removeNamedItem( [in] BSTR name, | 
 |                              [out,retval] IXMLDOMNode **namedItem ); | 
 |  | 
 |     [propget, id(DISPID_VALUE)] | 
 |     HRESULT item( [in] LONG index, | 
 |                   [out,retval] IXMLDOMNode **listItem ); | 
 |  | 
 |     [propget, id(DISPID_DOM_NODELIST_LENGTH)] | 
 |     HRESULT length( [out,retval] LONG *listLength ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM)] | 
 |     HRESULT getQualifiedItem( [in] BSTR baseName, | 
 |                               [in] BSTR namespaceURI, | 
 |                               [out,retval] IXMLDOMNode **qualifiedItem ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM)] | 
 |     HRESULT removeQualifiedItem( [in] BSTR baseName, | 
 |                                  [in] BSTR namespaceURI, | 
 |                                  [out,retval] IXMLDOMNode **qualifiedItem ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE)] | 
 |     HRESULT nextNode( [out,retval] IXMLDOMNode **nextItem ); | 
 |  | 
 |     [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET)] | 
 |     HRESULT reset(); | 
 |  | 
 |     [id(DISPID_NEWENUM)] | 
 |     HRESULT _newEnum( [out,retval] IUnknown **ppUnk ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(3efaa413-272f-11d2-836f-0000f87a7782), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMDocumentFragment : IXMLDOMNode | 
 | { | 
 |     /* empty */ | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf84-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMCharacterData : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_DATA_DATA)] | 
 |     HRESULT data( [out,retval] BSTR *data ); | 
 |  | 
 |     [propput, id(DISPID_DOM_DATA_DATA)] | 
 |     HRESULT data( [in] BSTR data ); | 
 |  | 
 |     [propget, id(DISPID_DOM_DATA_LENGTH)] | 
 |     HRESULT length( [out,retval] LONG *dataLength ); | 
 |  | 
 |     [id(DISPID_DOM_DATA_SUBSTRING)] | 
 |     HRESULT substringData( [in] LONG offset, | 
 |                            [in] LONG count, | 
 |                            [out,retval] BSTR *data ); | 
 |  | 
 |     [id(DISPID_DOM_DATA_APPEND)] | 
 |     HRESULT appendData( [in] BSTR data ); | 
 |  | 
 |     [id(DISPID_DOM_DATA_INSERT)] | 
 |     HRESULT insertData( [in] LONG offset, | 
 |                         [in] BSTR data ); | 
 |  | 
 |     [id(DISPID_DOM_DATA_DELETE)] | 
 |     HRESULT deleteData( [in] LONG offset, | 
 |                         [in] LONG count ); | 
 |  | 
 |     [id(DISPID_DOM_DATA_REPLACE)] | 
 |     HRESULT replaceData( [in] LONG offset, | 
 |                          [in] LONG count, | 
 |                          [in] BSTR data ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf85-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMAttribute : IXMLDOMNode | 
 | { | 
 |     [propget,id(DISPID_DOM_ATTRIBUTE_GETNAME)] | 
 |     HRESULT name( [out,retval] BSTR *attributeName ); | 
 |  | 
 |     [propget,id(DISPID_DOM_ATTRIBUTE_VALUE)] | 
 |     HRESULT value( [out,retval] VARIANT *attributeValue ); | 
 |  | 
 |     [propput,id(DISPID_DOM_ATTRIBUTE_VALUE)] | 
 |     HRESULT value( [in] VARIANT attributeValue ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf86-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMElement : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME)] | 
 |     HRESULT tagName( [out,retval] BSTR *tagName ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_GETATTRIBUTE)] | 
 |     HRESULT getAttribute( [in] BSTR name, | 
 |                           [out,retval] VARIANT * value ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_SETATTRIBUTE)] | 
 |     HRESULT setAttribute( [in] BSTR name, | 
 |                           [in] VARIANT value ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE)] | 
 |     HRESULT removeAttribute( [in] BSTR name ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE)] | 
 |     HRESULT getAttributeNode( [in] BSTR name, | 
 |                               [out, retval] IXMLDOMAttribute ** attributeNode ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE)] | 
 |     HRESULT setAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, | 
 |                               [out, retval] IXMLDOMAttribute ** attributeNode ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE)] | 
 |     HRESULT removeAttributeNode( [in] IXMLDOMAttribute *DOMAttribute, | 
 |                               [out, retval] IXMLDOMAttribute ** attributeNode ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME)] | 
 |     HRESULT getElementsByTagName( [in] BSTR tagName, | 
 |                               [out, retval] IXMLDOMNodeList ** resultList ); | 
 |  | 
 |     [id(DISPID_DOM_ELEMENT_NORMALIZE)] | 
 |     HRESULT normalize(); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf87-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMText : IXMLDOMCharacterData | 
 | { | 
 |     [id(DISPID_DOM_TEXT_SPLITTEXT)] | 
 |     HRESULT splitText( [in] LONG offset, | 
 |                        [out,retval] IXMLDOMText **rightHandTextNode ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf88-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMComment : IXMLDOMCharacterData | 
 | { | 
 |     /* empty */ | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf89-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMProcessingInstruction : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_PI_TARGET)] | 
 |     HRESULT target( [out, retval] BSTR *name ); | 
 |  | 
 |     [propget, id(DISPID_DOM_PI_DATA)] | 
 |     HRESULT data( [out, retval] BSTR *value ); | 
 |  | 
 |     [propput, id(DISPID_DOM_PI_DATA)] | 
 |     HRESULT data( [in] BSTR value ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf8a-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMCDATASection : IXMLDOMText | 
 | { | 
 |     /* empty */ | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | /*nonextensible,*/ | 
 | oleautomation, | 
 | uuid(2933bf8b-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMDocumentType : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME)] | 
 |     HRESULT name( [out,retval] BSTR *rootName ); | 
 |  | 
 |     [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES)] | 
 |     HRESULT entities( [out,retval] IXMLDOMNamedNodeMap **entityMap ); | 
 |  | 
 |     [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS)] | 
 |     HRESULT notations( [out,retval] IXMLDOMNamedNodeMap **notationMap ); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | nonextensible, | 
 | oleautomation, | 
 | uuid(2933bf8c-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMNotation : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_NOTATION_PUBLICID)] | 
 |     HRESULT publicId([out, retval] VARIANT *publicId); | 
 |  | 
 |     [propget, id(DISPID_DOM_NOTATION_SYSTEMID)] | 
 |     HRESULT systemId([out, retval] VARIANT *systemId); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | nonextensible, | 
 | oleautomation, | 
 | uuid(2933bf8d-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMEntity : IXMLDOMNode | 
 | { | 
 |     [propget, id(DISPID_DOM_ENTITY_PUBLICID)] | 
 |     HRESULT publicId([out, retval] VARIANT *publicId); | 
 |  | 
 |     [propget, id(DISPID_DOM_ENTITY_SYSTEMID)] | 
 |     HRESULT systemId([out, retval] VARIANT *systemId); | 
 |  | 
 |     [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME)] | 
 |     HRESULT notationName([out, retval] BSTR *name); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | nonextensible, | 
 | oleautomation, | 
 | uuid(2933bf8e-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMEntityReference : IXMLDOMNode | 
 | { | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | nonextensible, | 
 | oleautomation, | 
 | uuid(2933bf8f-7b36-11d2-b20e-00c04f983e60), | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLDOMImplementation : IDispatch | 
 | { | 
 |     [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)] | 
 |     HRESULT hasFeature([in] BSTR feature, [in] BSTR version, [out, retval] VARIANT_BOOL *pbool); | 
 | } | 
 |  | 
 | [ | 
 | local, | 
 | object, | 
 | odl, | 
 | dual, | 
 | oleautomation, | 
 | /*nonextensible,*/ | 
 | helpstring("structure for reporting parse errors"), | 
 | pointer_default(unique), | 
 | uuid (3efaa426-272f-11d2-836f-0000f87a7782) | 
 | ] | 
 | interface IXMLDOMParseError : IDispatch | 
 | { | 
 |     [propget, id(DISPID_VALUE)] | 
 |     HRESULT errorCode([retval, out] LONG *errCode); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_URL)] | 
 |     HRESULT url([retval, out] BSTR *p); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_REASON)] | 
 |     HRESULT reason([retval, out] BSTR *p); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_SRCTEXT)] | 
 |     HRESULT srcText([retval, out] BSTR *p); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_LINE)] | 
 |     HRESULT line([retval, out] LONG *lineNo); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_LINEPOS)] | 
 |     HRESULT linepos([retval, out] LONG * linePos); | 
 |  | 
 |     [propget, id(DISPID_DOM_ERROR_FILEPOS)] | 
 |     HRESULT filepos([retval, out] LONG * filePos); | 
 | } | 
 |  | 
 | [ | 
 |     hidden, | 
 |     uuid(3efaa427-272f-11d2-836f-0000f87a7782) | 
 | ] | 
 | dispinterface XMLDOMDocumentEvents | 
 | { | 
 |     properties: | 
 |     methods: | 
 |     [id(DISPID_XMLDOMEVENT_ONDATAAVAILABLE)] | 
 |     HRESULT ondataavailable(); | 
 |  | 
 |     [id(DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)] | 
 |     HRESULT onreadystatechange(); | 
 | } | 
 |  | 
 | [ | 
 |     helpstring("XML DOM Document"), | 
 |     progid("Microsoft.XMLDOM.1.0"), | 
 |     vi_progid("Microsoft.XMLDOM"), | 
 |     threading(both), | 
 |     version(1.0), | 
 |     uuid(2933bf90-7b36-11d2-b20e-00c04f983e60) | 
 | ] | 
 | coclass DOMDocument | 
 | { | 
 |     [default] interface IXMLDOMDocument; | 
 |     [default, source] dispinterface XMLDOMDocumentEvents; | 
 | } | 
 |  | 
 | [ | 
 |     helpstring("Free Threaded XML DOM Document"), | 
 |     progid("Microsoft.FreeThreadedXMLDOM.1.0"), | 
 |     vi_progid("Microsoft.FreeThreadedXMLDOM"), | 
 |     threading(both), | 
 |     version(1.0), | 
 |     uuid(2933bf91-7b36-11d2-b20e-00c04f983e60) | 
 | ] | 
 | coclass DOMFreeThreadedDocument | 
 | { | 
 |     [default] interface IXMLDOMDocument; | 
 |     [default, source] dispinterface XMLDOMDocumentEvents; | 
 | } | 
 |  | 
 | [ | 
 | object, | 
 | uuid(ed8c108d-4349-11d2-91a4-00c04f7969e8), | 
 | odl, | 
 | dual, | 
 | oleautomation, | 
 | pointer_default(unique) | 
 | ] | 
 | interface IXMLHttpRequest : IDispatch | 
 | { | 
 |     [id(1)] | 
 |     HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, | 
 |                  [in, optional] VARIANT varAsync, | 
 |                  [in, optional] VARIANT varUser, | 
 |                  [in, optional] VARIANT varPassword); | 
 |     [id(2)] | 
 |     HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue); | 
 |  | 
 |     [id(3)] | 
 |     HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR *pbstrValue); | 
 |  | 
 |     [id(4)] | 
 |     HRESULT getAllResponseHeaders([out, retval] BSTR *pbstrHeaders); | 
 |  | 
 |     [id(5)] | 
 |     HRESULT send([in, optional] VARIANT varBody); | 
 |  | 
 |     [id(6)] | 
 |     HRESULT abort(); | 
 |  | 
 |     [propget, id(7)] | 
 |     HRESULT status([out, retval] LONG *plStatus); | 
 |  | 
 |     [propget, id(8)] | 
 |     HRESULT statusText([out, retval] BSTR *bstrStatus); | 
 |  | 
 |     [propget, id(9)] | 
 |     HRESULT responseXML([out, retval] IDispatch **ppBody); | 
 |  | 
 |     [propget, id(10)] | 
 |     HRESULT responseText([out, retval] BSTR *pbstrBody); | 
 |  | 
 |     [propget, id(11)] | 
 |     HRESULT responseBody([out, retval] VARIANT *pvarBody); | 
 |  | 
 |     [propget, id(12)] | 
 |     HRESULT responseStream([out, retval] VARIANT *pvarBody); | 
 |  | 
 |     [propget, id(13)] | 
 |     HRESULT readyState([out, retval] LONG *plState); | 
 |  | 
 |     [propput, id(14)] | 
 |     HRESULT onreadystatechange([in] IDispatch *pReadyStateSink); | 
 | } | 
 |  | 
 | [ | 
 |     helpstring("XML HTTP Request"), | 
 |     progid("Microsoft.XMLHTTP.1.0"), | 
 |     vi_progid("Microsoft.XMLHTTP"), | 
 |     threading(apartment), | 
 |     version(1.0), | 
 |     uuid(ed8c108e-4349-11d2-91a4-00c04f7969e8) | 
 | ] | 
 | coclass XMLHTTPRequest | 
 | { | 
 |     [default] interface IXMLHttpRequest; | 
 | } |