XmlDom.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:39k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1998.
  5. //
  6. //  File: xmldom.idl
  7. //
  8. //--------------------------------------------------------------------------
  9. #ifdef UNIX
  10. import "ocidl.idl";
  11. #endif
  12. cpp_quote("//+-------------------------------------------------------------------------")
  13. cpp_quote("//")
  14. cpp_quote("//  Microsoft Windows")
  15. cpp_quote("//  Copyright (C) Microsoft Corporation, 1998.")
  16. cpp_quote("//")
  17. cpp_quote("//--------------------------------------------------------------------------")
  18. #include "xmldomdid.h"
  19. #include <idispids.h>
  20. interface IXMLDOMImplementation;
  21. interface IXMLDOMNode;
  22. interface IXMLDOMDocumentFragment;
  23. interface IXMLDOMDocument;
  24. interface IXMLDOMNodeList;
  25. interface IXMLDOMNamedNodeMap;
  26. interface IXMLDOMCharacterData;
  27. interface IXMLDOMAttribute;
  28. interface IXMLDOMElement;
  29. interface IXMLDOMText;
  30. interface IXMLDOMComment;
  31. interface IXMLDOMProcessingInstruction;
  32. interface IXMLDOMCDATASection;
  33. interface IXMLDOMDocumentType;
  34. interface IXMLDOMNotation;
  35. interface IXMLDOMEntity;
  36. interface IXMLDOMEntityReference;
  37. interface IXMLDOMParseError;
  38. interface IXTLRuntime;
  39. typedef [
  40. helpstring("Constants that define a node's type")
  41. ] enum tagDOMNodeType 
  42. {  
  43.     NODE_INVALID, // = 0
  44.     NODE_ELEMENT, // = 1
  45.     NODE_ATTRIBUTE, // = 2
  46.     NODE_TEXT, // = 3
  47.     NODE_CDATA_SECTION, // = 4
  48.     NODE_ENTITY_REFERENCE, // = 5
  49.     NODE_ENTITY, // = 6
  50.     NODE_PROCESSING_INSTRUCTION, // = 7
  51.     NODE_COMMENT, // = 8
  52.     NODE_DOCUMENT, // = 9
  53.     NODE_DOCUMENT_TYPE, // = 10
  54.     NODE_DOCUMENT_FRAGMENT, // = 11
  55.     NODE_NOTATION // = 12
  56. } DOMNodeType; 
  57. [
  58.     local, object,
  59.     uuid(2933BF80-7B36-11d2-B20E-00C04F983E60), // IID_INode
  60.     odl, 
  61.     dual,
  62.     oleautomation,
  63.     nonextensible,
  64.     helpstring("Core DOM node interface"),
  65.     pointer_default(unique)
  66. ]
  67. interface IXMLDOMNode : IDispatch
  68. {
  69.     // readonly attribute  wstring              nodeName;
  70.     [propget, id(DISPID_DOM_NODE_NODENAME), 
  71.      helpstring("name of the node")]
  72.     HRESULT nodeName(
  73.         [out, retval] BSTR * name);
  74.     //          attribute  wstring              nodeValue;
  75.     [propget, id(DISPID_DOM_NODE_NODEVALUE), 
  76.      helpstring("value stored in the node")]
  77.     HRESULT nodeValue(
  78.         [out, retval] VARIANT * value);
  79.     [propput, id(DISPID_DOM_NODE_NODEVALUE), 
  80.      helpstring("value stored in the node")]
  81.     HRESULT nodeValue(
  82.         [in] VARIANT value);
  83.     // readonly attribute  unsigned short       nodeType;
  84.     [propget, id(DISPID_DOM_NODE_NODETYPE), 
  85.      helpstring("the node's type")]
  86.     HRESULT nodeType(
  87.         [out, retval] DOMNodeType * type);
  88.     // readonly attribute  Node                 parentNode;
  89.     [propget, id(DISPID_DOM_NODE_PARENTNODE), 
  90.      helpstring("parent of the node")]
  91.     HRESULT parentNode(
  92.         [out, retval] IXMLDOMNode ** parent);
  93.     // readonly attribute  NodeList             childNodes;
  94.     [propget, id(DISPID_DOM_NODE_CHILDNODES), 
  95.      helpstring("the collection of the node's children")]
  96.     HRESULT childNodes(
  97.         [out, retval] IXMLDOMNodeList ** childList);
  98.     // readonly attribute  Node                 firstChild;
  99.     [propget,id(DISPID_DOM_NODE_FIRSTCHILD),
  100.      helpstring("first child of the node")]
  101.     HRESULT firstChild(
  102.         [out, retval] IXMLDOMNode ** firstChild);
  103.     // readonly attribute  Node                 lastChild;
  104.     [propget,id(DISPID_DOM_NODE_LASTCHILD),
  105.      helpstring("first child of the node")]
  106.     HRESULT lastChild(
  107.         [out, retval] IXMLDOMNode ** lastChild);
  108.     // readonly attribute  Node                 previousSibling;
  109.     [propget,id(DISPID_DOM_NODE_PREVIOUSSIBLING),
  110.      helpstring("left sibling of the node")]
  111.     HRESULT previousSibling(
  112.         [out, retval] IXMLDOMNode ** previousSibling);
  113.     // readonly attribute  Node                 nextSibling;
  114.     [propget,id(DISPID_DOM_NODE_NEXTSIBLING),
  115.      helpstring("right sibling of the node")]
  116.     HRESULT nextSibling(
  117.         [out, retval] IXMLDOMNode ** nextSibling);
  118.     // readonly attribute  NamedNodeMap         attributes;
  119.     [propget, id(DISPID_DOM_NODE_ATTRIBUTES), 
  120.      helpstring("the collection of the node's attributes")]
  121.     HRESULT attributes(
  122.         [out, retval] IXMLDOMNamedNodeMap ** attributeMap);
  123.     // Node                      insertBefore(in Node newChild, 
  124.     //                                        in Node refChild)
  125.     //                                        raises(DOMException);
  126.     [id(DISPID_DOM_NODE_INSERTBEFORE),
  127.      helpstring("insert a child node")]
  128.     HRESULT insertBefore(
  129.         [in] IXMLDOMNode * newChild,
  130.         [in] VARIANT refChild,
  131.         [out, retval] IXMLDOMNode ** outNewChild);
  132.     // Node                      replaceChild(in Node newChild, 
  133.     //                                        in Node oldChild)
  134.     //                                        raises(DOMException);
  135.     [id(DISPID_DOM_NODE_REPLACECHILD),
  136.      helpstring("replace a child node")]
  137.     HRESULT replaceChild(
  138.         [in] IXMLDOMNode * newChild,
  139.         [in] IXMLDOMNode * oldChild,
  140.         [out, retval] IXMLDOMNode ** outOldChild);
  141.   
  142.     // Node                      removeChild(in Node childNode)
  143.     //                                       raises(DOMException);
  144.     [id(DISPID_DOM_NODE_REMOVECHILD),
  145.      helpstring("remove a child node")]
  146.     HRESULT removeChild(
  147.         [in] IXMLDOMNode * childNode,
  148.         [out, retval] IXMLDOMNode ** oldChild);
  149.     // Node                      appendChild(in Node newChild);
  150.     [id(DISPID_DOM_NODE_APPENDCHILD),
  151.      helpstring("append a child node")]
  152.     HRESULT appendChild(
  153.         [in] IXMLDOMNode * newChild,
  154.         [out, retval] IXMLDOMNode ** outNewChild);
  155.     // boolean                   hasChildNodes();
  156.     [id(DISPID_DOM_NODE_HASCHILDNODES),
  157.      helpstring("")]
  158.     HRESULT hasChildNodes(
  159.         [out, retval] VARIANT_BOOL * hasChild);
  160.     // readonly attribute  Node                 ownerDocument;
  161.     [propget, id(DISPID_DOM_NODE_OWNERDOC), 
  162.      helpstring("document that contains the node")]
  163.     HRESULT ownerDocument(
  164.         [out, retval] IXMLDOMDocument ** DOMDocument);
  165.     // Node                      cloneNode(in boolean deep);
  166.     [id(DISPID_DOM_NODE_CLONENODE),
  167.      helpstring("")]
  168.     HRESULT cloneNode(
  169.         [in] VARIANT_BOOL deep,
  170.         [out, retval] IXMLDOMNode ** cloneRoot);
  171.     [propget, id(DISPID_XMLDOM_NODE_STRINGTYPE),
  172.      helpstring("the type of node in string form")] 
  173.     HRESULT nodeTypeString(
  174.         [retval, out] BSTR * nodeType);
  175.     [propget, id(DISPID_XMLDOM_NODE_TEXT),
  176.      helpstring("text content of the node and subtree")] 
  177.     HRESULT text(
  178.         [retval, out] BSTR * text);
  179.     [propput, id(DISPID_XMLDOM_NODE_TEXT),
  180.      helpstring("text content of the node and subtree")] 
  181.     HRESULT text(
  182.         [in] BSTR text);
  183.     [propget, id(DISPID_XMLDOM_NODE_SPECIFIED),
  184.      helpstring("indicates whether node is a default value")]
  185.     HRESULT specified(
  186.         [out, retval] VARIANT_BOOL * isSpecified);
  187.     // DTD Navigation.
  188.     [propget, id(DISPID_XMLDOM_NODE_DEFINITION), 
  189.      helpstring("pointer to the definition of the node in the DTD or schema")] 
  190.     HRESULT definition(
  191.         [retval,out] IXMLDOMNode ** definitionNode);
  192.     [propget, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE), 
  193.      helpstring("get the strongly typed value of the node")] 
  194.     HRESULT nodeTypedValue(
  195.         [retval, out] VARIANT * typedValue);
  196.     [propput, id(DISPID_XMLDOM_NODE_NODETYPEDVALUE), 
  197.      helpstring("get the strongly typed value of the node")] 
  198.     HRESULT nodeTypedValue(
  199.         [in] VARIANT typedValue);
  200.     [propget, id(DISPID_XMLDOM_NODE_DATATYPE), 
  201.      helpstring("the data type of the node")] 
  202.     HRESULT dataType(
  203.         [retval, out] VARIANT * dataTypeName); // BSTR or VT_NULL
  204.     [propput, id(DISPID_XMLDOM_NODE_DATATYPE), 
  205.      helpstring("the data type of the node")] 
  206.     HRESULT dataType(
  207.         [in] BSTR dataTypeName);
  208.     [propget, id(DISPID_XMLDOM_NODE_XML), 
  209.      helpstring("return the XML source for the node and each of its descendants")] 
  210.     HRESULT xml(
  211.         [retval, out] BSTR * xmlString);
  212.     [id(DISPID_XMLDOM_NODE_TRANSFORMNODE), 
  213.      helpstring("apply the stylesheet to the subtree")] 
  214.     HRESULT transformNode(
  215.         [in] IXMLDOMNode * stylesheet,
  216.         [retval, out] BSTR * xmlString);
  217.     [id(DISPID_XMLDOM_NODE_SELECTNODES), 
  218.      helpstring("execute query on the subtree")]
  219.     HRESULT selectNodes(
  220.         [in] BSTR queryString,
  221.         [retval, out] IXMLDOMNodeList** resultList);
  222.     [id(DISPID_XMLDOM_NODE_SELECTSINGLENODE), 
  223.      helpstring("execute query on the subtree")]
  224.     HRESULT selectSingleNode(
  225.         [in] BSTR queryString,
  226.         [retval, out] IXMLDOMNode** resultNode);
  227.     [propget,id(DISPID_XMLDOM_NODE_PARSED), 
  228.      helpstring("has sub-tree been completely parsed")]
  229. HRESULT parsed(
  230.         [retval, out] VARIANT_BOOL * isParsed);
  231.     [propget, id(DISPID_XMLDOM_NODE_NAMESPACE), 
  232.      helpstring("the URI for the namespace applying to the node")] 
  233.     HRESULT namespaceURI(
  234.         [retval, out] BSTR * namespaceURI);
  235.     [propget, id(DISPID_XMLDOM_NODE_PREFIX), 
  236.      helpstring("the prefix for the namespace applying to the node")] 
  237.     HRESULT prefix(
  238.         [retval, out] BSTR * prefixString);
  239.     [propget, id(DISPID_XMLDOM_NODE_BASENAME), 
  240.      helpstring("the base name of the node (nodename with the prefix stripped off)")] 
  241.     HRESULT baseName(
  242.         [retval, out] BSTR * nameString);
  243.     [id(DISPID_XMLDOM_NODE_TRANSFORMNODETOOBJECT), 
  244.      helpstring("apply the stylesheet to the subtree, returning the result through a document or a stream")] 
  245.     HRESULT transformNodeToObject(
  246.         [in] IXMLDOMNode * stylesheet,
  247.         [in] VARIANT outputObject);
  248. };
  249. [
  250.     local, object,
  251.     uuid(2933BF81-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMDocument
  252.     odl, 
  253.     dual,
  254.     oleautomation,
  255.     nonextensible,
  256.     pointer_default(unique)
  257. ]
  258. interface IXMLDOMDocument : IXMLDOMNode 
  259. {
  260.     // readonly attribute  DocumentType         doctype;
  261.     [propget, id(DISPID_DOM_DOCUMENT_DOCTYPE),
  262.      helpstring("node corresponding to the DOCTYPE")]
  263.     HRESULT doctype(
  264.         [out, retval] IXMLDOMDocumentType ** documentType); 
  265.     // readonly attribute  DOMImplementation    implementation;
  266.     [propget, id(DISPID_DOM_DOCUMENT_IMPLEMENTATION),
  267.      helpstring("info on this DOM implementation")]
  268.     HRESULT implementation(
  269.         [out, retval] IXMLDOMImplementation ** impl);
  270.     // attribute  Element              documentElement;
  271.     [propget, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT),
  272.      helpstring("the root of the tree")]
  273.     HRESULT documentElement(
  274.         [out, retval] IXMLDOMElement ** DOMElement);
  275.     [propputref, id(DISPID_DOM_DOCUMENT_DOCUMENTELEMENT),
  276.      helpstring("the root of the tree")]
  277.     HRESULT documentElement(
  278.         [in] IXMLDOMElement * DOMElement);
  279.     // Element                   createElement(in wstring tagName);
  280.     [id(DISPID_DOM_DOCUMENT_CREATEELEMENT),
  281.      helpstring("create an Element node")]
  282.     HRESULT createElement(
  283.         [in] BSTR tagName,
  284.         [out, retval] IXMLDOMElement ** element);
  285.     // DocumentFragment          createDocumentFragment();
  286.     [id(DISPID_DOM_DOCUMENT_CREATEDOCUMENTFRAGMENT),
  287.      helpstring("create a DocumentFragment node")]
  288.     HRESULT createDocumentFragment(
  289.         [out, retval] IXMLDOMDocumentFragment ** docFrag );
  290.     // Text                      createTextNode(in wstring data);
  291.     [id(DISPID_DOM_DOCUMENT_CREATETEXTNODE),
  292.      helpstring("create a text node")]
  293.     HRESULT createTextNode(
  294.         [in] BSTR data,
  295.         [out, retval] IXMLDOMText ** text);
  296.     // Comment                   createComment(in wstring data);
  297.     [id(DISPID_DOM_DOCUMENT_CREATECOMMENT),
  298.      helpstring("create a comment node")]
  299.     HRESULT createComment(
  300.         [in] BSTR data,
  301.         [out, retval] IXMLDOMComment ** comment);
  302.     // CDATASection              createCDATASection(in wstring data);
  303.     [id(DISPID_DOM_DOCUMENT_CREATECDATASECTION),
  304.      helpstring("create a CDATA section node")]
  305.     HRESULT createCDATASection(
  306.         [in] BSTR data,
  307.         [out, retval] IXMLDOMCDATASection ** cdata);
  308.     // ProcessingInstruction     createProcessingInstruction(in wstring target, 
  309.     //                                                       in wstring data);
  310.     [id(DISPID_DOM_DOCUMENT_CREATEPROCESSINGINSTRUCTION),
  311.      helpstring("create a processing instruction node")]
  312.     HRESULT createProcessingInstruction(
  313.         [in] BSTR target,
  314.         [in] BSTR data,
  315.         [out, retval] IXMLDOMProcessingInstruction ** pi);
  316.     // Attribute                 createAttribute(in wstring name);
  317.     [id(DISPID_DOM_DOCUMENT_CREATEATTRIBUTE),
  318.      helpstring("create an attribute node")]
  319.     HRESULT createAttribute(
  320.         [in] BSTR name,
  321.         [out, retval] IXMLDOMAttribute ** attribute);
  322.     // EntityReference           createEntityReference(in wstring name);
  323.     [id(DISPID_DOM_DOCUMENT_CREATEENTITYREFERENCE),
  324.      helpstring("create an entity reference node")]
  325.     HRESULT createEntityReference(
  326.         [in] BSTR name,
  327.         [out, retval] IXMLDOMEntityReference ** entityRef);
  328.     // NodeList                  getElementsByTagName(in wstring tagname);
  329.     [id(DISPID_DOM_DOCUMENT_GETELEMENTSBYTAGNAME),
  330.      helpstring("build a list of elements by name")]
  331.     HRESULT getElementsByTagName(
  332.         [in] BSTR tagName,
  333.         [out, retval] IXMLDOMNodeList ** resultList);
  334.     [id(DISPID_XMLDOM_DOCUMENT_CREATENODE), 
  335.      helpstring("create a node of the specified node type and name")] 
  336.     HRESULT createNode(
  337.         [in] VARIANT Type, 
  338.         [in] BSTR name, 
  339.         [in] BSTR namespaceURI,
  340.         [retval, out] IXMLDOMNode ** node);
  341.     [id(DISPID_XMLDOM_DOCUMENT_NODEFROMID), 
  342.      helpstring("retrieve node from it's ID")]
  343.     HRESULT nodeFromID( 
  344.         [in] BSTR idString,
  345.         [retval, out] IXMLDOMNode ** node);
  346.     [id(DISPID_XMLDOM_DOCUMENT_LOAD), 
  347.      helpstring("load document from the specified XML source")] 
  348.     HRESULT load(
  349.         [in] VARIANT xmlSource,
  350.         [out, retval] VARIANT_BOOL * isSuccessful);
  351.     [propget, id(DISPID_READYSTATE), 
  352.      helpstring("get the state of the XML document")] 
  353.     HRESULT readyState(
  354.         [retval, out] long * value);
  355.     [propget, id(DISPID_XMLDOM_DOCUMENT_PARSEERROR), 
  356.      helpstring("get the last parser error")] 
  357.     HRESULT parseError(
  358.         [retval, out] IXMLDOMParseError ** errorObj);
  359.     [propget, id(DISPID_XMLDOM_DOCUMENT_URL), 
  360.      helpstring("get the URL for the loaded XML document")] 
  361.     HRESULT url(
  362.         [retval, out] BSTR * urlString);
  363.     [propget, id(DISPID_XMLDOM_DOCUMENT_ASYNC), 
  364.      helpstring("flag for asynchronous download")] 
  365.     HRESULT async(
  366.         [retval, out] VARIANT_BOOL * isAsync);
  367.     [propput, id(DISPID_XMLDOM_DOCUMENT_ASYNC), 
  368.      helpstring("flag for asynchronous download")] 
  369.     HRESULT async(
  370.         [in] VARIANT_BOOL isAsync);
  371.     [id(DISPID_XMLDOM_DOCUMENT_ABORT), 
  372.      helpstring("abort an asynchronous download")] 
  373.     HRESULT abort();
  374.     [id(DISPID_XMLDOM_DOCUMENT_LOADXML), 
  375.      helpstring("load the document from a string")] 
  376.     HRESULT loadXML( 
  377.         [in] BSTR bstrXML,
  378.         [out, retval] VARIANT_BOOL * isSuccessful);
  379.     [id(DISPID_XMLDOM_DOCUMENT_SAVE), 
  380.      helpstring("save the document to a specified desination")] 
  381.     HRESULT save( 
  382.         [in] VARIANT desination);
  383.     [propget, id(DISPID_XMLDOM_DOCUMENT_VALIDATE), 
  384.      helpstring("indicates whether the parser performs validation")] 
  385.     HRESULT validateOnParse(
  386.         [retval, out] VARIANT_BOOL * isValidating);
  387.     [propput, id(DISPID_XMLDOM_DOCUMENT_VALIDATE), 
  388.      helpstring("indicates whether the parser performs validation")] 
  389.     HRESULT validateOnParse(
  390.         [in] VARIANT_BOOL isValidating);
  391.     [propget, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE),
  392.      helpstring("indicates whether the parser resolves references to external DTD/Entities/Schema")]
  393.     HRESULT resolveExternals(
  394.         [retval,out] VARIANT_BOOL * isResolving);
  395.     [propput, id(DISPID_XMLDOM_DOCUMENT_RESOLVENAMESPACE),
  396.      helpstring("indicates whether the parser resolves references to external DTD/Entities/Schema")]
  397.     HRESULT resolveExternals(
  398.         [in] VARIANT_BOOL isResolving);
  399.     [propget, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE),
  400.      helpstring("indicates whether the parser preserves whitespace")]
  401.     HRESULT preserveWhiteSpace(
  402.         [retval,out] VARIANT_BOOL * isPreserving);
  403.     [propput, id(DISPID_XMLDOM_DOCUMENT_PRESERVEWHITESPACE),
  404.      helpstring("indicates whether the parser preserves whitespace")]
  405.     HRESULT preserveWhiteSpace(
  406.         [in] VARIANT_BOOL isPreserving);
  407.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONREADYSTATECHANGE), 
  408.      helpstring("register a readystatechange event handler")]
  409.     HRESULT onreadystatechange(
  410.         [in] VARIANT readystatechangeSink);
  411.  
  412.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONDATAAVAILABLE), 
  413.      helpstring("register an ondataavailable event handler")]
  414.     HRESULT ondataavailable(
  415.         [in] VARIANT ondataavailableSink);
  416.     [propput, id(DISPID_XMLDOM_DOCUMENT_ONTRANSFORMNODE), 
  417.      helpstring("register an ontransformnode event handler")]
  418.     HRESULT ontransformnode(
  419.         [in] VARIANT ontransformnodeSink);
  420. };
  421. [
  422.     local, object,
  423.     uuid(2933BF82-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNodeList
  424.     odl, 
  425.     dual,
  426.     oleautomation,
  427.     nonextensible,
  428.     pointer_default(unique)
  429. ]
  430. interface IXMLDOMNodeList : IDispatch
  431. {
  432.     // Node                      item(in unsigned long index);
  433.     [propget, id(DISPID_VALUE),
  434.      helpstring("collection of nodes")]
  435.     HRESULT item(
  436.         [in] long index,
  437.         [out, retval] IXMLDOMNode ** listItem);
  438.     // readonly attribute  unsigned long        length;
  439.     [propget, id(DISPID_DOM_NODELIST_LENGTH),
  440.      helpstring("number of nodes in the collection")]
  441.     HRESULT length(
  442.         [out, retval] long * listLength);
  443.     [id(DISPID_XMLDOM_NODELIST_NEXTNODE),
  444.      helpstring("get next node from iterator")]
  445.     HRESULT nextNode(
  446.         [out, retval] IXMLDOMNode ** nextItem);
  447.     [id(DISPID_XMLDOM_NODELIST_RESET),
  448.      helpstring("reset the position of iterator")]
  449.     HRESULT reset();
  450.     [propget, restricted, hidden, 
  451.      id(DISPID_NEWENUM)] 
  452.     HRESULT _newEnum(
  453.         [retval, out] IUnknown ** ppUnk);
  454. };
  455. [
  456.     local, object,
  457.     uuid(2933BF83-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNamedNodeMap
  458.     odl, 
  459.     dual,
  460.     oleautomation,
  461.     nonextensible,
  462.     pointer_default(unique)
  463. ]
  464. interface IXMLDOMNamedNodeMap : IDispatch
  465. {
  466.     // Node                      getNamedItem(in wstring name);
  467.     [id(DISPID_DOM_NAMEDNODEMAP_GETNAMEDITEM),
  468.      helpstring("lookup item by name")]
  469.     HRESULT getNamedItem(
  470.         [in] BSTR name,
  471.         [out, retval] IXMLDOMNode ** namedItem);
  472.     // void                      setNamedItem(in Node arg);
  473.     [id(DISPID_DOM_NAMEDNODEMAP_SETNAMEDITEM),
  474.      helpstring("set item by name")]
  475.     HRESULT setNamedItem(
  476.         [in] IXMLDOMNode * newItem,
  477.         [out, retval] IXMLDOMNode ** nameItem);
  478.     // Node                      removeNamedItem(in wstring name);
  479.     [id(DISPID_DOM_NAMEDNODEMAP_REMOVENAMEDITEM),
  480.      helpstring("remove item by name")]
  481.     HRESULT removeNamedItem(
  482.         [in] BSTR name,
  483.         [out, retval] IXMLDOMNode ** namedItem);
  484.     // Node                      item(in unsigned long index);
  485.     [propget, id(DISPID_VALUE),
  486.      helpstring("collection of nodes")]
  487.     HRESULT item(
  488.         [in] long index,
  489.         [out, retval] IXMLDOMNode ** listItem);
  490.     // readonly attribute  unsigned long        length;
  491.     [propget, id(DISPID_DOM_NODELIST_LENGTH),
  492.      helpstring("number of nodes in the collection")]
  493.     HRESULT length(
  494.         [out, retval] long * listLength);
  495.     // Node                      getQualifiedItem(in wstring name,in Node namespace);
  496.     [id(DISPID_XMLDOM_NAMEDNODEMAP_GETQUALIFIEDITEM),
  497.      helpstring("lookup the item by name and namespace")]
  498.     HRESULT getQualifiedItem(
  499.         [in] BSTR baseName,
  500.         [in] BSTR namespaceURI,
  501.         [out, retval] IXMLDOMNode ** qualifiedItem);
  502.     // Node                      removeQualifiedItem(in wstring name,in Node namespace);
  503.     [id(DISPID_XMLDOM_NAMEDNODEMAP_REMOVEQUALIFIEDITEM),
  504.      helpstring("remove the item by name and namespace")]
  505.     HRESULT removeQualifiedItem(
  506.         [in] BSTR baseName,
  507.         [in] BSTR namespaceURI,
  508.         [out, retval] IXMLDOMNode ** qualifiedItem);
  509.     [id(DISPID_XMLDOM_NAMEDNODEMAP_NEXTNODE),
  510.      helpstring("get next node from iterator")]
  511.     HRESULT nextNode(
  512.         [out, retval] IXMLDOMNode ** nextItem);
  513.     [id(DISPID_XMLDOM_NAMEDNODEMAP_RESET),
  514.      helpstring("reset the position of iterator")]
  515.     HRESULT reset();
  516.     [propget, restricted, hidden, 
  517.      id(DISPID_NEWENUM)] 
  518.     HRESULT _newEnum(
  519.         [retval, out] IUnknown ** ppUnk);
  520. };
  521. [
  522.     local, object,
  523.     uuid(3efaa413-272f-11d2-836f-0000f87a7782), // IID_IXMLDOMDocumentFragment
  524.     odl, 
  525.     dual,
  526.     oleautomation,
  527.     nonextensible,
  528.     pointer_default(unique)
  529. ]
  530. interface IXMLDOMDocumentFragment : IXMLDOMNode 
  531. {
  532. };
  533. [
  534.     local, object,
  535.     uuid(2933BF84-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMCharacterData
  536.     odl, 
  537.     dual,
  538.     oleautomation,
  539.     nonextensible,
  540.     pointer_default(unique)
  541. ]
  542. interface IXMLDOMCharacterData : IXMLDOMNode 
  543. {
  544.     //          attribute  wstring              data;
  545.     [propget, id(DISPID_DOM_DATA_DATA),
  546.      helpstring("value of the node")]
  547.     HRESULT data(
  548.         [out, retval] BSTR * data);
  549.     [propput, id(DISPID_DOM_DATA_DATA),
  550.      helpstring("value of the node")]
  551.     HRESULT data(
  552.         [in] BSTR data);
  553.     
  554.     // readonly attribute  unsigned long        length;
  555.     [propget, id(DISPID_DOM_DATA_LENGTH),
  556.      helpstring("number of characters in value")]
  557.     HRESULT length(
  558.         [out, retval] long * dataLength);
  559.     // wstring                   substring(in unsigned long offset, 
  560.     //                                     in unsigned long count)
  561.     //                                     raises(DOMException);
  562.     [id(DISPID_DOM_DATA_SUBSTRING),
  563.      helpstring("retrieve substring of value")]
  564.     HRESULT substringData(
  565.         [in] long offset,
  566.         [in] long count,
  567.         [out, retval] BSTR * data);
  568.     // void                      append(in wstring arg);
  569.     [id(DISPID_DOM_DATA_APPEND),
  570.      helpstring("append string to value")]
  571.     HRESULT appendData(
  572.         [in] BSTR data);
  573.     // void                      insert(in unsigned long offset, 
  574.     //                                  in wstring arg)
  575.     //                                  raises(DOMException);
  576.     [id(DISPID_DOM_DATA_INSERT),
  577.      helpstring("insert string into value")]
  578.     HRESULT insertData(
  579.         [in] long offset,
  580.         [in] BSTR data);
  581.     // void                      delete(in unsigned long offset, 
  582.     //                                  in unsigned long count)
  583.     //                                  raises(DOMException);
  584.     [id(DISPID_DOM_DATA_DELETE),
  585.      helpstring("delete string within the value")]
  586.     HRESULT deleteData(
  587.         [in] long offset,
  588.         [in] long count);
  589.     // void                      replace(in unsigned long offset, 
  590.     //                                   in unsigned long count, 
  591.     //                                   in wstring arg)
  592.     //                                   raises(DOMException);
  593.     [id(DISPID_DOM_DATA_REPLACE),
  594.      helpstring("replace string within the value")]
  595.     HRESULT replaceData(
  596.         [in] long offset,
  597.         [in] long count,
  598.         [in] BSTR data);
  599. };
  600. [
  601.     local, object,
  602.     uuid(2933BF85-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMAttribute
  603.     odl, 
  604.     dual,
  605.     oleautomation,
  606.     nonextensible,
  607.     pointer_default(unique)
  608. ]
  609. interface IXMLDOMAttribute : IXMLDOMNode 
  610. {
  611.     // wstring                   name;
  612.     [propget, id(DISPID_DOM_ATTRIBUTE_GETNAME),
  613.      helpstring("get name of the attribute")]
  614.     HRESULT name(
  615.         [out, retval] BSTR * attributeName);
  616.     //         attribute  boolean              specified;
  617.     // ! This is defined as an extended property on IXMLDOMNode
  618.     // attribute wstring                   value;
  619.     [propget, id(DISPID_DOM_ATTRIBUTE_VALUE),
  620.      helpstring("string value of the attribute")]
  621.     HRESULT value(
  622.         [out, retval] VARIANT * attributeValue);
  623.     [propput, id(DISPID_DOM_ATTRIBUTE_VALUE),
  624.      helpstring("string value of the attribute")]
  625.     HRESULT value(
  626.         [in] VARIANT attributeValue);
  627. };
  628. [
  629.     local, object,
  630.     uuid(2933BF86-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMElement
  631.     odl, 
  632.     dual,
  633.     oleautomation,
  634.     nonextensible,
  635.     pointer_default(unique)
  636. ]
  637. interface IXMLDOMElement : IXMLDOMNode 
  638. {
  639.     // readonly attribute wstring                   tagName;
  640.     [propget, id(DISPID_DOM_ELEMENT_GETTAGNAME),
  641.      helpstring("get the tagName of the element")]
  642.     HRESULT tagName(
  643.         [out, retval] BSTR * tagName);
  644.     // wstring                   getAttribute(in wstring name);
  645.     [id(DISPID_DOM_ELEMENT_GETATTRIBUTE),
  646.      helpstring("look up the string value of an attribute by name")]
  647.     HRESULT getAttribute(
  648.         [in] BSTR name,
  649.         [out, retval] VARIANT * value);
  650.     // void                      setAttribute(in string name, 
  651.     //                                        in string value);
  652.     [id(DISPID_DOM_ELEMENT_SETATTRIBUTE),
  653.      helpstring("set the string value of an attribute by name")]
  654.     HRESULT setAttribute(
  655.         [in] BSTR name,
  656.         [in] VARIANT value);
  657.     // void                      removeAttribute(in wstring name);
  658.     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTE),
  659.      helpstring("remove an attribute by name")]
  660.     HRESULT removeAttribute(
  661.         [in] BSTR name);
  662.     // Attribute                 getAttributeNode(in wstring name);
  663.     [id(DISPID_DOM_ELEMENT_GETATTRIBUTENODE),
  664.      helpstring("look up the attribute node by name")]
  665.     HRESULT getAttributeNode(
  666.         [in] BSTR name,
  667.         [out, retval] IXMLDOMAttribute ** attributeNode);
  668.     // void                      setAttributeNode(in Attribute newAttr);
  669.     [id(DISPID_DOM_ELEMENT_SETATTRIBUTENODE),
  670.      helpstring("set the specified attribute on the element")]
  671.     HRESULT setAttributeNode(
  672.         [in] IXMLDOMAttribute * DOMAttribute,
  673.         [out, retval] IXMLDOMAttribute ** attributeNode);
  674.     // void                      removeAttributeNode(in Attribute oldAttr);
  675.     [id(DISPID_DOM_ELEMENT_REMOVEATTRIBUTENODE),
  676.      helpstring("remove the specified attribute")]
  677.     HRESULT removeAttributeNode(
  678.         [in] IXMLDOMAttribute * DOMAttribute,
  679.         [out, retval] IXMLDOMAttribute ** attributeNode);
  680.     // NodeList                  getElementsByTagName(in wstring tagname);
  681.     [id(DISPID_DOM_ELEMENT_GETELEMENTSBYTAGNAME),
  682.      helpstring("build a list of elements by name")]
  683.     HRESULT getElementsByTagName(
  684.         [in] BSTR tagName,
  685.         [out, retval] IXMLDOMNodeList ** resultList);
  686.     // void                      normalize();
  687.     [id(DISPID_DOM_ELEMENT_NORMALIZE),
  688.      helpstring("collapse all adjacent text nodes in sub-tree")]
  689.     HRESULT normalize();
  690. };
  691. [
  692.     local, object,
  693.     uuid(2933BF87-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMText
  694.     odl, 
  695.     dual,
  696.     oleautomation,
  697.     nonextensible,
  698.     pointer_default(unique)
  699. ]
  700. interface IXMLDOMText : IXMLDOMCharacterData 
  701. {
  702.     // Text                      splitText(in unsigned long offset);
  703.     [id(DISPID_DOM_TEXT_SPLITTEXT),
  704.      helpstring("split the text node into two text nodes at the position specified")]
  705.     HRESULT splitText(
  706.         [in] long offset,
  707.         [out, retval] IXMLDOMText ** rightHandTextNode);
  708. };
  709. [
  710.     local, object,
  711.     uuid(2933BF88-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMComment
  712.     odl, 
  713.     dual,
  714.     oleautomation,
  715.     nonextensible,
  716.     pointer_default(unique)
  717. ]
  718. interface IXMLDOMComment : IXMLDOMCharacterData 
  719. {
  720. };
  721. [
  722.     local, object,
  723.     uuid(2933BF89-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMProcessingInstruction
  724.     odl, 
  725.     dual,
  726.     oleautomation,
  727.     nonextensible,
  728.     pointer_default(unique)
  729. ]
  730. interface IXMLDOMProcessingInstruction : IXMLDOMNode 
  731. {
  732.     //         read-only attribute  wstring              target;
  733.     [propget, id(DISPID_DOM_PI_TARGET),
  734.      helpstring("the target")]
  735.     HRESULT target(
  736.         [out, retval] BSTR * name);
  737.     //         attribute  wstring              data;
  738.     [propget, id(DISPID_DOM_PI_DATA),
  739.      helpstring("the data")]
  740.     HRESULT data(
  741.         [out, retval] BSTR * value);
  742.     [propput, id(DISPID_DOM_PI_DATA),
  743.      helpstring("the data")]
  744.     HRESULT data(
  745.         [in] BSTR value);
  746. };
  747. [
  748.     local, object,
  749.     uuid(2933BF8A-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMCDATASection
  750.     odl, 
  751.     dual,
  752.     oleautomation,
  753.     nonextensible,
  754.     pointer_default(unique)
  755. ]
  756. interface IXMLDOMCDATASection : IXMLDOMText 
  757. {
  758. };
  759. [
  760.     local, object,
  761.     uuid(2933BF8B-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMDocumentType
  762.     odl, 
  763.     dual,
  764.     oleautomation,
  765.     nonextensible,
  766.     pointer_default(unique)
  767. ]
  768. interface IXMLDOMDocumentType : IXMLDOMNode 
  769. {
  770.     //          readonly attribute  wstring              name;
  771.     [propget, id(DISPID_DOM_DOCUMENTTYPE_NAME),
  772.      helpstring("name of the document type (root of the tree)")]
  773.     HRESULT name(
  774.         [out, retval] BSTR * rootName);
  775.     // readonly attribute  NamedNodeMap         entities;
  776.     [propget, id(DISPID_DOM_DOCUMENTTYPE_ENTITIES),
  777.      helpstring("a list of entities in the document")]
  778.     HRESULT entities(
  779.         [out, retval] IXMLDOMNamedNodeMap ** entityMap);
  780.     // readonly attribute  NamedNodeMap         notations;
  781.     [propget, id(DISPID_DOM_DOCUMENTTYPE_NOTATIONS),
  782.      helpstring("a list of notations in the document")]
  783.     HRESULT notations(
  784.         [out, retval] IXMLDOMNamedNodeMap ** notationMap);
  785. };
  786. [
  787.     local, object,
  788.     uuid(2933BF8C-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMNotation
  789.     odl, 
  790.     dual,
  791.     oleautomation,
  792.     nonextensible,
  793.     pointer_default(unique)
  794. ]
  795. interface IXMLDOMNotation : IXMLDOMNode 
  796. {
  797.     //         attribute  wstring              publicId;
  798.     [propget, id(DISPID_DOM_NOTATION_PUBLICID),
  799.      helpstring("the public ID")]
  800.     HRESULT publicId(
  801.         [out, retval] VARIANT * publicID);
  802.     //         attribute  wstring              systemId;
  803.     [propget, id(DISPID_DOM_NOTATION_SYSTEMID),
  804.      helpstring("the system ID")]
  805.     HRESULT systemId(
  806.         [out, retval] VARIANT * systemID);
  807. };
  808. [
  809.     local, object,
  810.     uuid(2933BF8D-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMEntity
  811.     odl, 
  812.     dual,
  813.     oleautomation,
  814.     nonextensible,
  815.     pointer_default(unique)
  816. ]
  817. interface IXMLDOMEntity : IXMLDOMNode 
  818. {
  819.     //         attribute  wstring              publicId;
  820.     [propget, id(DISPID_DOM_ENTITY_PUBLICID),
  821.      helpstring("the public ID")]
  822.     HRESULT publicId(
  823.         [out, retval] VARIANT * publicID);
  824.     //         attribute  wstring              systemId;
  825.     [propget, id(DISPID_DOM_ENTITY_SYSTEMID),
  826.      helpstring("the system ID")]
  827.     HRESULT systemId(
  828.         [out, retval] VARIANT * systemID);
  829.     //         attribute  wstring              notationName;
  830.     [propget, id(DISPID_DOM_ENTITY_NOTATIONNAME),
  831.      helpstring("the name of the notation")]
  832.     HRESULT notationName(
  833.         [out, retval] BSTR * name);
  834. };
  835. [
  836.     local, object,
  837.     uuid(2933BF8E-7B36-11d2-B20E-00C04F983E60), // IID_IXMLDOMEntityReference
  838.     odl, 
  839.     dual,
  840.     oleautomation,
  841.     nonextensible,
  842.     pointer_default(unique)
  843. ]
  844. interface IXMLDOMEntityReference : IXMLDOMNode 
  845. {
  846. };
  847. [
  848.     local, object,
  849.     nonextensible,
  850.     pointer_default(unique),
  851.     odl,
  852.     oleautomation,
  853.     dual,
  854.     uuid(2933BF8F-7B36-11d2-B20E-00C04F983E60) // IID_IXMLDOMImplementation
  855. ]
  856. interface IXMLDOMImplementation : IDispatch
  857. {
  858.     //  boolean                   hasFeature(in wstring feature, 
  859.     //                                   in wstring version);
  860.     [id(DISPID_DOM_IMPLEMENTATION_HASFEATURE)]
  861.     HRESULT hasFeature(
  862.         [in] BSTR feature,
  863.         [in] BSTR version,
  864.         [out, retval] VARIANT_BOOL * hasFeature);
  865. };
  866. [
  867.     local, object,
  868.     uuid(3efaa425-272f-11d2-836f-0000f87a7782), // IID_IXTLRuntime
  869.     odl, 
  870.     dual,
  871.     oleautomation,
  872.     nonextensible,
  873.     helpstring("XTL runtime object"),
  874.     pointer_default(unique)
  875. ]
  876. interface IXTLRuntime : IXMLDOMNode 
  877. {
  878.     [id(DISPID_XTLRUNTIME_UNIQUEID),
  879.      helpstring("")] 
  880.     HRESULT uniqueID(
  881.         [in]IXMLDOMNode *pNode, 
  882.         [out,retval]long *pID);
  883.     [id(DISPID_XTLRUNTIME_DEPTH),
  884.      helpstring("")]
  885.     HRESULT depth(
  886.         [in] IXMLDOMNode *pNode, 
  887.         [out,retval]long * pDepth);
  888.     [id(DISPID_XTLRUNTIME_CHILDNUMBER),
  889.      helpstring("")] 
  890.     HRESULT childNumber(
  891.         [in]IXMLDOMNode *pNode, 
  892.         [out,retval] long *pNumber);
  893.     [id(DISPID_XTLRUNTIME_ANCESTORCHILDNUMBER),
  894.      helpstring("")] 
  895.     HRESULT ancestorChildNumber(
  896.         [in]BSTR bstrNodeName, 
  897.         [in]IXMLDOMNode *pNode, 
  898.         [out,retval]long *pNumber);
  899.     [id(DISPID_XTLRUNTIME_ABSOLUTECHILDNUMBER),
  900.      helpstring("")] 
  901.     HRESULT absoluteChildNumber(
  902.         [in]IXMLDOMNode *pNode, 
  903.         [out,retval]long *pNumber);
  904.     [id(DISPID_XTLRUNTIME_FORMATINDEX),
  905.      helpstring("")] 
  906. HRESULT formatIndex(
  907.         [in] long lIndex, 
  908.         [in] BSTR bstrFormat, 
  909.         [out, retval]BSTR *pbstrFormattedString);
  910.     [id(DISPID_XTLRUNTIME_FORMATNUMBER),
  911.      helpstring("")] 
  912. HRESULT formatNumber(
  913.         [in] double dblNumber, 
  914.         [in] BSTR bstrFormat, 
  915.         [out, retval]BSTR *pbstrFormattedString);
  916.     [id(DISPID_XTLRUNTIME_FORMATDATE),
  917.      helpstring("")] 
  918. HRESULT formatDate(
  919.         [in] VARIANT varDate, 
  920.         [in] BSTR bstrFormat, 
  921.         [in,optional] VARIANT varDestLocale,
  922.         [out, retval]BSTR *pbstrFormattedString);
  923.     [id(DISPID_XTLRUNTIME_FORMATTIME),
  924.      helpstring("")] 
  925. HRESULT formatTime(
  926.         [in] VARIANT varTime, 
  927.         [in] BSTR bstrFormat, 
  928.         [in,optional] VARIANT varDestLocale,
  929.         [out, retval]BSTR *pbstrFormattedString);
  930. };
  931. [
  932.     local, object,
  933.     uuid(3efaa426-272f-11d2-836f-0000f87a7782), // IID_IXMLDOMParseError
  934.     odl, 
  935.     dual,
  936.     oleautomation,
  937.     nonextensible,
  938.     helpstring("structure for reporting parser errors"),
  939.     pointer_default(unique)
  940. ]
  941. interface IXMLDOMParseError : IDispatch
  942. {
  943.     [propget, id(DISPID_VALUE), 
  944.      helpstring("the error code")] 
  945.     HRESULT errorCode(
  946.         [retval, out] long * errorCode);
  947.     [propget, id(DISPID_DOM_ERROR_URL), 
  948.      helpstring("the URL of the XML document containing the error")] 
  949.     HRESULT url(
  950.         [retval, out] BSTR * urlString);
  951.     [propget, id(DISPID_DOM_ERROR_REASON), 
  952.      helpstring("the cause of the error")] 
  953.     HRESULT reason(
  954.         [retval, out] BSTR * reasonString);
  955.     [propget, id(DISPID_DOM_ERROR_SRCTEXT), 
  956.      helpstring("the data where the error occurred")] 
  957.     HRESULT srcText(
  958.         [retval, out] BSTR * sourceString);
  959.     [propget, id(DISPID_DOM_ERROR_LINE), 
  960.      helpstring("the line number in the XML document where the error occurred")] 
  961.     HRESULT line(
  962.         [retval, out] long * lineNumber);
  963.     [propget, id(DISPID_DOM_ERROR_LINEPOS),
  964.      helpstring("the character position in the line containing the error")] 
  965.     HRESULT linepos(
  966.         [retval, out] long * linePosition);
  967.     [propget, id(DISPID_DOM_ERROR_FILEPOS), 
  968.      helpstring("the absolute file position in the XML document containing the error")]
  969.     HRESULT filepos(
  970.         [retval, out] long * filePosition);
  971. };
  972. // DOM event interface
  973. [
  974.     hidden,
  975.     uuid(3efaa427-272f-11d2-836f-0000f87a7782), // IID_IXMLDOMEvent
  976. ]
  977. dispinterface XMLDOMDocumentEvents 
  978. {
  979.     properties:
  980.     methods:
  981.     [id (DISPID_XMLDOMEVENT_ONDATAAVAILABLE)]  
  982.     HRESULT ondataavailable(void);
  983.  
  984.     [id (DISPID_XMLDOMEVENT_ONREADYSTATECHANGE)] 
  985.     HRESULT onreadystatechange(void);
  986. };
  987.  // DOM Document rental-model co-Class 
  988. [
  989.     uuid(2933BF90-7B36-11d2-B20E-00C04F983E60), // CLSID_DOMDocument
  990.     helpstring("W3C-DOM XML Document")
  991. ]
  992. coclass DOMDocument
  993. {
  994.     [default] interface IXMLDOMDocument;
  995.     [default, source] dispinterface XMLDOMDocumentEvents;
  996. };
  997.  // DOM Document free-threaded co-Class
  998. [
  999.     uuid(2933BF91-7B36-11d2-B20E-00C04F983E60), // CLSID_DOMDocument
  1000.     helpstring("W3C-DOM XML Document (Apartment)")
  1001. ]
  1002. coclass DOMFreeThreadedDocument
  1003. {
  1004.     [default] interface IXMLDOMDocument;
  1005.     [default, source] dispinterface XMLDOMDocumentEvents;
  1006. };
  1007. [
  1008. object,
  1009. uuid(ED8C108D-4349-11D2-91A4-00C04F7969E8),
  1010. odl,
  1011. dual,
  1012. oleautomation,
  1013. helpstring("IXMLHttpRequest Interface"),
  1014. pointer_default(unique)
  1015. ]
  1016. interface IXMLHttpRequest : IDispatch
  1017. {
  1018. [id(1), helpstring("Open HTTP connection")] HRESULT open([in] BSTR bstrMethod, [in] BSTR bstrUrl, [in,optional] VARIANT varAsync, [in,optional] VARIANT bstrUser, [in,optional] VARIANT bstrPassword);
  1019. [id(2), helpstring("Add HTTP request header")] HRESULT setRequestHeader([in] BSTR bstrHeader, [in] BSTR bstrValue);
  1020. [id(3), helpstring("Get HTTP response header")] HRESULT getResponseHeader([in] BSTR bstrHeader, [out, retval] BSTR * pbstrValue);
  1021. [id(4), helpstring("Get all HTTP response headers")] HRESULT getAllResponseHeaders([out, retval] BSTR * pbstrHeaders);
  1022. [id(5), helpstring("Send HTTP request")] HRESULT send([in, optional] VARIANT varBody);
  1023. [id(6), helpstring("Abort HTTP request")] HRESULT abort();
  1024. [propget, id(7),  helpstring("Get HTTP status code")] HRESULT status([out, retval] long * plStatus);
  1025. [propget, id(8),  helpstring("Get HTTP status text")] HRESULT statusText([out, retval] BSTR * pbstrStatus);
  1026. [propget, id(9),  helpstring("Get response body")] HRESULT responseXML([out, retval] IDispatch ** ppBody);
  1027. [propget, id(10),  helpstring("Get response body")] HRESULT responseText([out, retval] BSTR * pbstrBody);
  1028. [propget, id(11), helpstring("Get response body")] HRESULT responseBody([out, retval] VARIANT * pvarBody);
  1029. [propget, id(12), helpstring("Get response body")] HRESULT responseStream([out, retval] VARIANT * pvarBody);
  1030. [propget, id(13), helpstring("Get ready state")] HRESULT readyState([out, retval] long * plState);
  1031. [propput, id(14), helpstring("Register a complete event handler")] HRESULT onreadystatechange([in] IDispatch * pReadyStateSink);
  1032. };
  1033. // XML HTTP Request Class
  1034. [
  1035.     uuid(ED8C108E-4349-11D2-91A4-00C04F7969E8), // CLSID_XMLHTTPRequest
  1036.     helpstring("XML HTTP Request class.")
  1037. ]
  1038. coclass XMLHTTPRequest
  1039. {
  1040.     [default] interface IXMLHttpRequest;
  1041. };