|  | /* | 
|  | * Copyright (C) 2005 Mike McCormack | 
|  | * Copyright (C) 2005 Vijay Kiran Kamuju | 
|  | * | 
|  | * 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 <msxmldid.h> | 
|  |  | 
|  | import "unknwn.idl"; | 
|  | import "wtypes.idl"; | 
|  | import "objidl.idl"; | 
|  | import "oaidl.idl"; | 
|  |  | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | odl, | 
|  | dual, | 
|  | oleautomation, | 
|  | uuid(65725580-9b5d-11d0-9bfe-00c04fc99c8e) | 
|  | ] | 
|  | interface IXMLElementCollection : IDispatch | 
|  | { | 
|  | [propput, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)] | 
|  | HRESULT length( [in] long v ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENTCOLLECTION_LENGTH)] | 
|  | HRESULT length( [retval, out] long *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENTCOLLECTION_NEWENUM)] | 
|  | HRESULT _newEnum( [retval, out] IUnknown ** ppUnk ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENTCOLLECTION_ITEM)] | 
|  | HRESULT item( | 
|  | [optional, in] VARIANT var1, | 
|  | [optional, in] VARIANT var2, | 
|  | [retval, out] IDispatch ** ppDisp ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(3f7f31ac-e15f-11d0-9c25-00c04fc99c8e) | 
|  | ] | 
|  | interface IXMLElement : IDispatch | 
|  | { | 
|  | [propget, id(DISPID_XMLELEMENT_TAGNAME)] | 
|  | HRESULT tagName( [retval, out] BSTR *p); | 
|  |  | 
|  | [propput, id(DISPID_XMLELEMENT_TAGNAME)] | 
|  | HRESULT tagName( [in] BSTR p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_PARENT)] | 
|  | HRESULT parent( [retval, out] IXMLElement **parent ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_SETATTRIBUTE)] | 
|  | HRESULT setAttribute( | 
|  | [in] BSTR strPropertyName, | 
|  | [in] VARIANT PropertyValue ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_GETATTRIBUTE)] | 
|  | HRESULT getAttribute( | 
|  | [in] BSTR strPropertyName, | 
|  | [retval, out] VARIANT *PropertyValue ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)] | 
|  | HRESULT removeAttribute( | 
|  | [in] BSTR strPropertyName ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_CHILDREN)] | 
|  | HRESULT children( [retval, out] IXMLElementCollection **p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_TYPE)] | 
|  | HRESULT type( [retval, out] long *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_TEXT)] | 
|  | HRESULT text( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propput, id(DISPID_XMLELEMENT_TEXT)] | 
|  | HRESULT text( [in] BSTR p ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_ADDCHILD)] | 
|  | HRESULT addChild( | 
|  | [in] IXMLElement *pChildElem, | 
|  | [in] long lIndex, | 
|  | [in] long lreserved ); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_REMOVECHILD)] | 
|  | HRESULT removeChild( | 
|  | [in] IXMLElement *pChildElem ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(f52e2b61-18a1-11d1-b105-00805f49916b) | 
|  | ] | 
|  | interface IXMLDocument : IDispatch | 
|  | { | 
|  | [propget, id(DISPID_XMLDOCUMENT_ROOT)] | 
|  | HRESULT root( [retval, out] IXMLElement **p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILESIZE)] | 
|  | HRESULT fileSize( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] | 
|  | HRESULT fileModifiedDate( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] | 
|  | HRESULT fileUpdatedDate( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_URL)] | 
|  | HRESULT URL( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propput, id(DISPID_XMLDOCUMENT_URL)] | 
|  | HRESULT URL( [in] BSTR p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)] | 
|  | HRESULT mimeType( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_READYSTATE)] | 
|  | HRESULT readyState( [retval, out] long *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_CHARSET)] | 
|  | HRESULT charset( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propput, id(DISPID_XMLDOCUMENT_CHARSET)] | 
|  | HRESULT charset( [in] BSTR p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_VERSION)] | 
|  | HRESULT version( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)] | 
|  | HRESULT doctype( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_DTDURL)] | 
|  | HRESULT dtdURl( [retval, out] BSTR *p ); | 
|  |  | 
|  | [id(DISPID_XMLDOCUMENT_CREATEELEMENT)] | 
|  | HRESULT createElement( | 
|  | [in] VARIANT vType, | 
|  | [optional, in] VARIANT var1, | 
|  | [retval, out] IXMLElement **ppElem ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(2B8DE2FF-8D2D-11d1-B2FC-00C04FD915A9) | 
|  | ] | 
|  | interface IXMLElement2 : IDispatch | 
|  | { | 
|  | [propget, id(DISPID_XMLELEMENT_TAGNAME)] | 
|  | HRESULT tagName([retval, out] BSTR *p); | 
|  |  | 
|  | [propput, id(DISPID_XMLELEMENT_TAGNAME)] | 
|  | HRESULT tagName([in] BSTR p); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_PARENT)] | 
|  | HRESULT parent([retval, out]IXMLElement2 **ppParent); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_SETATTRIBUTE)] | 
|  | HRESULT setAttribute( | 
|  | [in] BSTR strPropertyName, | 
|  | [in] VARIANT PropertyValue); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_GETATTRIBUTE)] | 
|  | HRESULT getAttribute( | 
|  | [in] BSTR strPropertyName, | 
|  | [retval, out] VARIANT *PropertyValue); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_REMOVEATTRIBUTE)] | 
|  | HRESULT removeAttribute([in] BSTR strPropertyName); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_CHILDREN)] | 
|  | HRESULT children([retval, out] IXMLElementCollection **pp); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_TYPE)] | 
|  | HRESULT type([retval, out] long *plType); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_TEXT)] | 
|  | HRESULT text([retval, out] BSTR *p); | 
|  |  | 
|  | [propput, id(DISPID_XMLELEMENT_TEXT)] | 
|  | HRESULT text([in] BSTR p); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_ADDCHILD)] | 
|  | HRESULT addChild( | 
|  | [in] IXMLElement2 *pChildElem, | 
|  | [in] long lIndex, | 
|  | [in] long lReserved); | 
|  |  | 
|  | [id(DISPID_XMLELEMENT_REMOVECHILD)] | 
|  | HRESULT removeChild([in]IXMLElement2 *pChildElem); | 
|  |  | 
|  | [propget, id(DISPID_XMLELEMENT_ATTRIBUTES)] | 
|  | HRESULT attributes([retval, out] IXMLElementCollection **pp); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(2B8DE2FE-8D2D-11d1-B2FC-00C04FD915A9) | 
|  | ] | 
|  | interface IXMLDocument2 : IDispatch | 
|  | { | 
|  | [propget, id(DISPID_XMLDOCUMENT_ROOT)] | 
|  | HRESULT root([retval, out] IXMLElement2 **p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILESIZE)] | 
|  | HRESULT fileSize([retval, out] BSTR *p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILEMODIFIEDDATE)] | 
|  | HRESULT fileModifiedDate([retval, out] BSTR *p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_FILEUPDATEDDATE)] | 
|  | HRESULT fileUpdatedDate([retval, out] BSTR *p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_URL)] | 
|  | HRESULT URL([retval, out] BSTR *p); | 
|  |  | 
|  | [propput, id(DISPID_XMLDOCUMENT_URL)] | 
|  | HRESULT URL([in] BSTR p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_MIMETYPE)] | 
|  | HRESULT mimeType([retval, out] BSTR *p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_READYSTATE)] | 
|  | HRESULT readyState([retval, out]long *pl); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_CHARSET)] | 
|  | HRESULT charset([retval, out]BSTR *p); | 
|  |  | 
|  | [propput, id(DISPID_XMLDOCUMENT_CHARSET)] | 
|  | HRESULT charset([in]BSTR p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_VERSION)] | 
|  | HRESULT version([retval, out]BSTR *p); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_DOCTYPE)] | 
|  | HRESULT doctype([retval, out]BSTR *p); | 
|  |  | 
|  | [propget, restricted, id(DISPID_XMLDOCUMENT_DTDURL)] | 
|  | HRESULT dtdURL([retval, out]BSTR *p); | 
|  |  | 
|  | [id(DISPID_XMLDOCUMENT_CREATEELEMENT)] | 
|  | HRESULT createElement( | 
|  | [in] VARIANT vType, | 
|  | [optional, in] VARIANT var, | 
|  | [retval, out] IXMLElement2 **ppElem); | 
|  |  | 
|  | [propget, id(DISPID_XMLDOCUMENT_ASYNC)] | 
|  | HRESULT async([retval, out] VARIANT_BOOL *pf); | 
|  |  | 
|  | [propput, id(DISPID_XMLDOCUMENT_ASYNC)] | 
|  | HRESULT async([in] VARIANT_BOOL f); | 
|  | } | 
|  |  | 
|  | typedef enum tagXMLEMEM_TYPE { | 
|  | XMLELEMTYPE_ELEMENT	= 0, | 
|  | XMLELEMTYPE_TEXT 	= 1, | 
|  | XMLELEMTYPE_COMMENT	= 2, | 
|  | XMLELEMTYPE_DOCUMENT	= 3, | 
|  | XMLELEMTYPE_DTD		= 4, | 
|  | XMLELEMTYPE_PI		= 5, | 
|  | XMLELEMTYPE_OTHER	= 6 | 
|  | } XMLELEM_TYPE; | 
|  |  | 
|  | typedef struct _xml_error { | 
|  | UINT _nLine; | 
|  | BSTR _pchBuf; | 
|  | BSTR _cchBuf; | 
|  | UINT _ich; | 
|  | BSTR _pszFound; | 
|  | BSTR _pszExpected; | 
|  | DWORD _reserved1; | 
|  | DWORD _reserved2; | 
|  | } XML_ERROR; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(d4d4a0fc-3b73-11d1-b2b4-00c04fb92596) | 
|  | ] | 
|  | interface IXMLAttribute : IDispatch | 
|  | { | 
|  | [propget, id(DISPID_XMLATTRIBUTE_NAME)] | 
|  | HRESULT name( [retval, out] BSTR *p ); | 
|  |  | 
|  | [propget, id(DISPID_XMLATTRIBUTE_VALUE)] | 
|  | HRESULT value( [retval, out] BSTR *p ); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(948c5ad3-c58d-11d0-9c0b-00c04fc99c8e) | 
|  | ] | 
|  | interface IXMLError : IUnknown | 
|  | { | 
|  | HRESULT GetErrorInfo([out]XML_ERROR *pErrorReturn); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | local, | 
|  | uuid(D9F1E15A-CCDB-11d0-9C0C-00C04FC99C8E) | 
|  | ] | 
|  | interface IXMLElementNotificationSink : IDispatch | 
|  | { | 
|  | [id(DISPID_XMLNOTIFSINK_CHILDADDED)] | 
|  | HRESULT ChildAdded([in]IDispatch *pChildElem); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(cfc399af-d876-11d0-9c10-00c04fc99c8e) | 
|  | ] | 
|  | coclass XMLDocument | 
|  | { | 
|  | [default] interface IXMLDocument; | 
|  | } |