//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Data
    {
        namespace Xml
        {
            namespace Dom
            {
                typedef enum NodeType NodeType;

                interface IDtdEntity;

                interface IDtdNotation;

                interface IXmlAttribute;

                interface IXmlCDataSection;

                interface IXmlCharacterData;

                interface IXmlComment;

                interface IXmlDocument;

                interface IXmlDocumentFragment;

                interface IXmlDocumentIO;

                interface IXmlDocumentIO2;

                interface IXmlDocumentStatics;

                interface IXmlDocumentType;

                interface IXmlDomImplementation;

                interface IXmlElement;

                interface IXmlEntityReference;

                interface IXmlLoadSettings;

                interface IXmlNamedNodeMap;

                interface IXmlNode;

                interface IXmlNodeList;

                interface IXmlNodeSelector;

                interface IXmlNodeSerializer;

                interface IXmlProcessingInstruction;

                interface IXmlText;

                runtimeclass DtdEntity;

                runtimeclass DtdNotation;

                runtimeclass XmlAttribute;

                runtimeclass XmlCDataSection;

                runtimeclass XmlComment;

                runtimeclass XmlDocument;

                runtimeclass XmlDocumentFragment;

                runtimeclass XmlDocumentType;

                runtimeclass XmlDomImplementation;

                runtimeclass XmlElement;

                runtimeclass XmlEntityReference;

                runtimeclass XmlLoadSettings;

                runtimeclass XmlNamedNodeMap;

                runtimeclass XmlNodeList;

                runtimeclass XmlProcessingInstruction;

                runtimeclass XmlText;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Data
    {
        namespace Xml
        {
            namespace Dom
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Data.Xml.Dom.IXmlNode*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Data.Xml.Dom.IXmlNode*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Data.Xml.Dom.IXmlNode*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Data.Xml.Dom.XmlDocument*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Data
    {
        namespace Xml
        {
            namespace Dom
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum NodeType
                {
                    Invalid                   = 0,
                    ElementNode               = 1,
                    AttributeNode             = 2,
                    TextNode                  = 3,
                    DataSectionNode           = 4,
                    EntityReferenceNode       = 5,
                    EntityNode                = 6,
                    ProcessingInstructionNode = 7,
                    CommentNode               = 8,
                    DocumentNode              = 9,
                    DocumentTypeNode          = 10,
                    DocumentFragmentNode      = 11,
                    NotationNode              = 12
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.DtdEntity)]
                [uuid(6A0B5FFC-63B4-480F-9E6A-8A92816AADE4)]
                interface IDtdEntity : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT PublicId([out] [retval] IInspectable** value);
                    [propget] HRESULT SystemId([out] [retval] IInspectable** value);
                    [propget] HRESULT NotationName([out] [retval] IInspectable** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.DtdNotation)]
                [uuid(8CB4E04D-6D46-4EDB-AB73-DF83C51AD397)]
                interface IDtdNotation : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT PublicId([out] [retval] IInspectable** value);
                    [propget] HRESULT SystemId([out] [retval] IInspectable** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlAttribute)]
                [uuid(AC144AA4-B4F1-4DB6-B206-8A22C308DB0A)]
                interface IXmlAttribute : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                    [propget] HRESULT Specified([out] [retval] boolean* value);
                    [propget] HRESULT Value([out] [retval] HSTRING* value);
                    [propput] HRESULT Value([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlCDataSection)]
                [uuid(4D04B46F-C8BD-45B4-8899-0400D7C2C60F)]
                interface IXmlCDataSection : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlText,
                        Windows.Data.Xml.Dom.IXmlCharacterData,
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(132E42AB-4E36-4DF6-B1C8-0CE62FD88B26)]
                interface IXmlCharacterData : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT Data([out] [retval] HSTRING* value);
                    [propput] HRESULT Data([in] HSTRING value);
                    [propget] HRESULT Length([out] [retval] UINT32* value);
                    HRESULT SubstringData([in] UINT32 offset, [in] UINT32 count, [out] [retval] HSTRING* data);
                    HRESULT AppendData([in] HSTRING data);
                    HRESULT InsertData([in] UINT32 offset, [in] HSTRING data);
                    HRESULT DeleteData([in] UINT32 offset, [in] UINT32 count);
                    HRESULT ReplaceData([in] UINT32 offset, [in] UINT32 count, [in] HSTRING data);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlComment)]
                [uuid(BCA474D5-B61F-4611-9CAC-2E92E3476D47)]
                interface IXmlComment : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlCharacterData,
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocument)]
                [uuid(F7F3A506-1E87-42D6-BCFB-B8C809FA5494)]
                interface IXmlDocument : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT Doctype([out] [retval] Windows.Data.Xml.Dom.XmlDocumentType** value);
                    [propget] HRESULT Implementation([out] [retval] Windows.Data.Xml.Dom.XmlDomImplementation** value);
                    [propget] HRESULT DocumentElement([out] [retval] Windows.Data.Xml.Dom.XmlElement** value);
                    HRESULT CreateElement([in] HSTRING tagName, [out] [retval] Windows.Data.Xml.Dom.XmlElement** newElement);
                    HRESULT CreateDocumentFragment([out] [retval] Windows.Data.Xml.Dom.XmlDocumentFragment** newDocumentFragment);
                    HRESULT CreateTextNode([in] HSTRING data, [out] [retval] Windows.Data.Xml.Dom.XmlText** newTextNode);
                    HRESULT CreateComment([in] HSTRING data, [out] [retval] Windows.Data.Xml.Dom.XmlComment** newComment);
                    HRESULT CreateProcessingInstruction([in] HSTRING target, [in] HSTRING data, [out] [retval] Windows.Data.Xml.Dom.XmlProcessingInstruction** newProcessingInstruction);
                    HRESULT CreateAttribute([in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** newAttribute);
                    HRESULT CreateEntityReference([in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.XmlEntityReference** newEntityReference);
                    HRESULT GetElementsByTagName([in] HSTRING tagName, [out] [retval] Windows.Data.Xml.Dom.XmlNodeList** elements);
                    HRESULT CreateCDataSection([in] HSTRING data, [out] [retval] Windows.Data.Xml.Dom.XmlCDataSection** newCDataSection);
                    [propget] HRESULT DocumentUri([out] [retval] HSTRING* value);
                    HRESULT CreateAttributeNS([in] IInspectable* namespaceUri, [in] HSTRING qualifiedName, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** newAttribute);
                    HRESULT CreateElementNS([in] IInspectable* namespaceUri, [in] HSTRING qualifiedName, [out] [retval] Windows.Data.Xml.Dom.XmlElement** newElement);
                    HRESULT GetElementById([in] HSTRING elementId, [out] [retval] Windows.Data.Xml.Dom.XmlElement** element);
                    HRESULT ImportNode([in] Windows.Data.Xml.Dom.IXmlNode* node, [in] boolean deep, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** newNode);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocumentFragment)]
                [uuid(E2EA6A96-0C21-44A5-8BC9-9E4A262708EC)]
                interface IXmlDocumentFragment : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocument)]
                [uuid(6CD0E74E-EE65-4489-9EBF-CA43E87BA637)]
                interface IXmlDocumentIO : IInspectable
                {
                    [overload("LoadXml")] HRESULT LoadXml([in] HSTRING xml);
                    [overload("LoadXml")] HRESULT LoadXmlWithSettings([in] HSTRING xml, [in] Windows.Data.Xml.Dom.XmlLoadSettings* loadSettings);
                    HRESULT SaveToFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncAction** asyncInfo);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocument)]
                [uuid(5D034661-7BD8-4AD5-9EBF-81E6347263B1)]
                interface IXmlDocumentIO2 : IInspectable
                {
                    [overload("LoadXmlFromBuffer")] HRESULT LoadXmlFromBuffer([in] Windows.Storage.Streams.IBuffer* buffer);
                    [overload("LoadXmlFromBuffer")] HRESULT LoadXmlFromBufferWithSettings([in] Windows.Storage.Streams.IBuffer* buffer, [in] Windows.Data.Xml.Dom.XmlLoadSettings* loadSettings);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocument)]
                [uuid(5543D254-D757-4B79-9539-232B18F50BF1)]
                interface IXmlDocumentStatics : IInspectable
                {
                    [overload("LoadFromUriAsync")] HRESULT LoadFromUriAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Xml.Dom.XmlDocument*>** asyncInfo);
                    [overload("LoadFromUriAsync")] HRESULT LoadFromUriWithSettingsAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Data.Xml.Dom.XmlLoadSettings* loadSettings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Xml.Dom.XmlDocument*>** asyncInfo);
                    [overload("LoadFromFileAsync")] HRESULT LoadFromFileAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Xml.Dom.XmlDocument*>** asyncInfo);
                    [overload("LoadFromFileAsync")] HRESULT LoadFromFileWithSettingsAsync([in] Windows.Storage.IStorageFile* file, [in] Windows.Data.Xml.Dom.XmlLoadSettings* loadSettings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Data.Xml.Dom.XmlDocument*>** asyncInfo);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDocumentType)]
                [uuid(F7342425-9781-4964-8E94-9B1C6DFC9BC7)]
                interface IXmlDocumentType : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT Name([out] [retval] HSTRING* value);
                    [propget] HRESULT Entities([out] [retval] Windows.Data.Xml.Dom.XmlNamedNodeMap** value);
                    [propget] HRESULT Notations([out] [retval] Windows.Data.Xml.Dom.XmlNamedNodeMap** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlDomImplementation)]
                [uuid(6DE58132-F11D-4FBB-8CC6-583CBA93112F)]
                interface IXmlDomImplementation : IInspectable
                {
                    HRESULT HasFeature([in] HSTRING feature, [in] IInspectable* version, [out] [retval] boolean* featureSupported);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlElement)]
                [uuid(2DFB8A1F-6B10-4EF8-9F83-EFCCE8FAEC37)]
                interface IXmlElement : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT TagName([out] [retval] HSTRING* value);
                    HRESULT GetAttribute([in] HSTRING attributeName, [out] [retval] HSTRING* attributeValue);
                    HRESULT SetAttribute([in] HSTRING attributeName, [in] HSTRING attributeValue);
                    HRESULT RemoveAttribute([in] HSTRING attributeName);
                    HRESULT GetAttributeNode([in] HSTRING attributeName, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** attributeNode);
                    HRESULT SetAttributeNode([in] Windows.Data.Xml.Dom.XmlAttribute* newAttribute, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** previousAttribute);
                    HRESULT RemoveAttributeNode([in] Windows.Data.Xml.Dom.XmlAttribute* attributeNode, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** removedAttribute);
                    HRESULT GetElementsByTagName([in] HSTRING tagName, [out] [retval] Windows.Data.Xml.Dom.XmlNodeList** elements);
                    HRESULT SetAttributeNS([in] IInspectable* namespaceUri, [in] HSTRING qualifiedName, [in] HSTRING value);
                    HRESULT GetAttributeNS([in] IInspectable* namespaceUri, [in] HSTRING localName, [out] [retval] HSTRING* value);
                    HRESULT RemoveAttributeNS([in] IInspectable* namespaceUri, [in] HSTRING localName);
                    HRESULT SetAttributeNodeNS([in] Windows.Data.Xml.Dom.XmlAttribute* newAttribute, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** previousAttribute);
                    HRESULT GetAttributeNodeNS([in] IInspectable* namespaceUri, [in] HSTRING localName, [out] [retval] Windows.Data.Xml.Dom.XmlAttribute** previousAttribute);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlEntityReference)]
                [uuid(2E2F47BC-C3D0-4CCF-BB86-0AB8C36A61CF)]
                interface IXmlEntityReference : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlLoadSettings)]
                [uuid(58AA07A8-FED6-46F7-B4C5-FB1BA72108D6)]
                interface IXmlLoadSettings : IInspectable
                {
                    [propget] HRESULT MaxElementDepth([out] [retval] UINT32* value);
                    [propput] HRESULT MaxElementDepth([in] UINT32 value);
                    [propget] HRESULT ProhibitDtd([out] [retval] boolean* value);
                    [propput] HRESULT ProhibitDtd([in] boolean value);
                    [propget] HRESULT ResolveExternals([out] [retval] boolean* value);
                    [propput] HRESULT ResolveExternals([in] boolean value);
                    [propget] HRESULT ValidateOnParse([out] [retval] boolean* value);
                    [propput] HRESULT ValidateOnParse([in] boolean value);
                    [propget] HRESULT ElementContentWhiteSpace([out] [retval] boolean* value);
                    [propput] HRESULT ElementContentWhiteSpace([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlNamedNodeMap)]
                [uuid(B3A69EB0-AAB0-4B82-A6FA-B1453F7C021B)]
                interface IXmlNamedNodeMap : IInspectable
                    requires
                        Windows.Foundation.Collections.IVectorView<Windows.Data.Xml.Dom.IXmlNode*>,
                        Windows.Foundation.Collections.IIterable<Windows.Data.Xml.Dom.IXmlNode*>
                {
                    [propget] HRESULT Length([out] [retval] UINT32* value);
                    HRESULT Item([in] UINT32 index, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                    HRESULT GetNamedItem([in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                    HRESULT SetNamedItem([in] Windows.Data.Xml.Dom.IXmlNode* node, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** previousNode);
                    HRESULT RemoveNamedItem([in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** previousNode);
                    HRESULT GetNamedItemNS([in] IInspectable* namespaceUri, [in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                    HRESULT RemoveNamedItemNS([in] IInspectable* namespaceUri, [in] HSTRING name, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** previousNode);
                    HRESULT SetNamedItemNS([in] Windows.Data.Xml.Dom.IXmlNode* node, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** previousNode);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(1C741D59-2122-47D5-A856-83F3D4214875)]
                interface IXmlNode : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT NodeValue([out] [retval] IInspectable** value);
                    [propput] HRESULT NodeValue([in] IInspectable* value);
                    [propget] HRESULT NodeType([out] [retval] Windows.Data.Xml.Dom.NodeType* value);
                    [propget] HRESULT NodeName([out] [retval] HSTRING* value);
                    [propget] HRESULT ParentNode([out] [retval] Windows.Data.Xml.Dom.IXmlNode** value);
                    [propget] HRESULT ChildNodes([out] [retval] Windows.Data.Xml.Dom.XmlNodeList** value);
                    [propget] HRESULT FirstChild([out] [retval] Windows.Data.Xml.Dom.IXmlNode** value);
                    [propget] HRESULT LastChild([out] [retval] Windows.Data.Xml.Dom.IXmlNode** value);
                    [propget] HRESULT PreviousSibling([out] [retval] Windows.Data.Xml.Dom.IXmlNode** value);
                    [propget] HRESULT NextSibling([out] [retval] Windows.Data.Xml.Dom.IXmlNode** value);
                    [propget] HRESULT Attributes([out] [retval] Windows.Data.Xml.Dom.XmlNamedNodeMap** value);
                    HRESULT HasChildNodes([out] [retval] boolean* value);
                    [propget] HRESULT OwnerDocument([out] [retval] Windows.Data.Xml.Dom.XmlDocument** value);
                    HRESULT InsertBefore([in] Windows.Data.Xml.Dom.IXmlNode* newChild, [in] Windows.Data.Xml.Dom.IXmlNode* referenceChild, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** insertedChild);
                    HRESULT ReplaceChild([in] Windows.Data.Xml.Dom.IXmlNode* newChild, [in] Windows.Data.Xml.Dom.IXmlNode* referenceChild, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** previousChild);
                    HRESULT RemoveChild([in] Windows.Data.Xml.Dom.IXmlNode* childNode, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** removedChild);
                    HRESULT AppendChild([in] Windows.Data.Xml.Dom.IXmlNode* newChild, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** appendedChild);
                    HRESULT CloneNode([in] boolean deep, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** newNode);
                    [propget] HRESULT NamespaceUri([out] [retval] IInspectable** value);
                    [propget] HRESULT LocalName([out] [retval] IInspectable** value);
                    [propget] HRESULT Prefix([out] [retval] IInspectable** value);
                    HRESULT Normalize();
                    [propput] HRESULT Prefix([in] IInspectable* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlNodeList)]
                [uuid(8C60AD77-83A4-4EC1-9C54-7BA429E13DA6)]
                interface IXmlNodeList : IInspectable
                    requires
                        Windows.Foundation.Collections.IVectorView<Windows.Data.Xml.Dom.IXmlNode*>,
                        Windows.Foundation.Collections.IIterable<Windows.Data.Xml.Dom.IXmlNode*>
                {
                    [propget] HRESULT Length([out] [retval] UINT32* value);
                    HRESULT Item([in] UINT32 index, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(63DBBA8B-D0DB-4FE1-B745-F9433AFDC25B)]
                interface IXmlNodeSelector : IInspectable
                {
                    HRESULT SelectSingleNode([in] HSTRING xpath, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                    HRESULT SelectNodes([in] HSTRING xpath, [out] [retval] Windows.Data.Xml.Dom.XmlNodeList** nodelist);
                    HRESULT SelectSingleNodeNS([in] HSTRING xpath, [in] IInspectable* namespaces, [out] [retval] Windows.Data.Xml.Dom.IXmlNode** node);
                    HRESULT SelectNodesNS([in] HSTRING xpath, [in] IInspectable* namespaces, [out] [retval] Windows.Data.Xml.Dom.XmlNodeList** nodelist);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(5CC5B382-E6DD-4991-ABEF-06D8D2E7BD0C)]
                interface IXmlNodeSerializer : IInspectable
                {
                    HRESULT GetXml([out] [retval] HSTRING* outerXml);
                    [propget] HRESULT InnerText([out] [retval] HSTRING* value);
                    [propput] HRESULT InnerText([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.Data.Xml.Dom.XmlProcessingInstruction)]
                [uuid(2707FD1E-1E92-4ECE-B6F4-26F069078DDC)]
                interface IXmlProcessingInstruction : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    [propget] HRESULT Target([out] [retval] HSTRING* value);
                    [propget] HRESULT Data([out] [retval] HSTRING* value);
                    [propput] HRESULT Data([in] HSTRING value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(F931A4CB-308D-4760-A1D5-43B67450AC7E)]
                interface IXmlText : IInspectable
                    requires
                        Windows.Data.Xml.Dom.IXmlCharacterData,
                        Windows.Data.Xml.Dom.IXmlNode,
                        Windows.Data.Xml.Dom.IXmlNodeSelector,
                        Windows.Data.Xml.Dom.IXmlNodeSerializer
                {
                    HRESULT SplitText([in] UINT32 offset, [out] [retval] Windows.Data.Xml.Dom.IXmlText** secondPart);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass DtdEntity
                {
                    [default] interface Windows.Data.Xml.Dom.IDtdEntity;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass DtdNotation
                {
                    [default] interface Windows.Data.Xml.Dom.IDtdNotation;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlAttribute
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlAttribute;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlCDataSection
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlCDataSection;
                    interface Windows.Data.Xml.Dom.IXmlText;
                    interface Windows.Data.Xml.Dom.IXmlCharacterData;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlComment
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlComment;
                    interface Windows.Data.Xml.Dom.IXmlCharacterData;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Data.Xml.Dom.IXmlDocumentStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                [threading(both)]
                runtimeclass XmlDocument
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlDocument;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                    interface Windows.Data.Xml.Dom.IXmlDocumentIO;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Data.Xml.Dom.IXmlDocumentIO2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlDocumentFragment
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlDocumentFragment;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlDocumentType
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlDocumentType;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlDomImplementation
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlDomImplementation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlElement
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlElement;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlEntityReference
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlEntityReference;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass XmlLoadSettings
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlLoadSettings;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlNamedNodeMap
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlNamedNodeMap;
                    interface Windows.Foundation.Collections.IVectorView<Windows.Data.Xml.Dom.IXmlNode*>;
                    interface Windows.Foundation.Collections.IIterable<Windows.Data.Xml.Dom.IXmlNode*>;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlNodeList
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlNodeList;
                    interface Windows.Foundation.Collections.IVectorView<Windows.Data.Xml.Dom.IXmlNode*>;
                    interface Windows.Foundation.Collections.IIterable<Windows.Data.Xml.Dom.IXmlNode*>;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlProcessingInstruction
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlProcessingInstruction;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass XmlText
                {
                    [default] interface Windows.Data.Xml.Dom.IXmlText;
                    interface Windows.Data.Xml.Dom.IXmlCharacterData;
                    interface Windows.Data.Xml.Dom.IXmlNode;
                    interface Windows.Data.Xml.Dom.IXmlNodeSerializer;
                    interface Windows.Data.Xml.Dom.IXmlNodeSelector;
                }
            }
        }
    }
}
