<?xml version="1.0" encoding="utf-8"?>
<!--
Notice
DSP8015
Document: WS-Management protocol XML Schema
Version: 1.0.0
Status: Final
Date: 01/20/2008
Author: Bryan Murray, et al.
Description: XML Schema for WS-Management protocol

Copyright © 2008 Distributed Management Task Force, Inc. (DMTF). All rights reserved. DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems management and interoperability. Members and non-members may reproduce DMTF specifications and documents for uses consistent with this purpose, provided that correct attribution is given. As DMTF specifications may be revised from time to time, the particular version and release date should always be noted. Implementation of certain elements of this standard or proposed standard may be subject to third party patent rights, including provisional patent rights (herein "patent rights"). DMTF makes no representations to users of the standard as to the existence of such rights, and is not responsible to recognize, disclose, or identify any or all such third party patent right, owners or claimants, nor for any incomplete or inaccurate identification or disclosure of such rights, owners or claimants. DMTF shall have no liability to any party, in any manner or circumstance, under any legal theory whatsoever, for failure to recognize, disclose, or identify any such third party patent rights, or for such party’s reliance on the standard or incorporation thereof in its product, protocols or testing procedures. DMTF shall have no liability to any party implementing such standard, whether such implementation is foreseeable or not, nor to any patent owner or claimant, and shall have no liability or responsibility for costs or losses incurred if a standard is withdrawn or modified after publication, and shall be indemnified and held harmless by any party implementing the standard from any and all claims of infringement by a patent owner for such implementations. For information about patents held by third-parties which have notified the DMTF that, in their opinion, such patent may relate to or impact implementations of DMTF standards, visit http://www.dmtf.org/about/policies/disclosures.php.

Change Requests:
	None
-->
<xs:schema targetNamespace="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"
    xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" version="1.0.0e">

  <xs:import namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"
             schemaLocation="http://schemas.xmlsoap.org/ws/2004/08/addressing/addressing.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
             schemaLocation="http://www.w3.org/2001/xml.xsd"/>

  <xs:complexType name="attributableURI">
    <xs:simpleContent>
      <xs:extension base="xs:anyURI">
        <xs:anyAttribute namespace="##other" processContents="lax"/>

      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ResourceURI" type="wsman:attributableURI"/>

  <xs:complexType name="SelectorType">
    <xs:annotation>
      <xs:documentation>
        Instances of this type can be only simple types or EPRs, not arbitrary mixed data.
      </xs:documentation>

    </xs:annotation>
    <xs:complexContent mixed="true">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:element ref="wsa:EndpointReference" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="Name" type="xs:NCName" use="required"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:restriction>

    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Selector" type="wsman:SelectorType"/>

  <xs:complexType name="SelectorSetType">
    <xs:sequence>
      <xs:element ref="wsman:Selector" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>

  </xs:complexType>

  <xs:element name="SelectorSet" type="wsman:SelectorSetType">
    <xs:unique name="oneSelectorPerName">
      <xs:selector xpath="./Selector"/>
      <xs:field xpath="@Name"/>
    </xs:unique>
  </xs:element>

  <xs:complexType name="attributableDuration">

    <xs:simpleContent>
      <xs:extension base="xs:duration">
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="OperationTimeout" type="wsman:attributableDuration"/>

  <xs:complexType name="attributablePositiveInteger">

    <xs:simpleContent>
      <xs:extension base="xs:positiveInteger">
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="PolicyType">
    <xs:restriction base="xs:token">

      <xs:enumeration value="CancelSubscription"/>
      <xs:enumeration value="Skip"/>
      <xs:enumeration value="Notify"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="MaxEnvelopeSizeType">
    <xs:simpleContent>
      <xs:extension base="wsman:attributablePositiveInteger">

        <xs:attribute name="Policy" type="wsman:PolicyType" default="Notify"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="MaxEnvelopeSize" type="wsman:MaxEnvelopeSizeType"/>

  <xs:element name="Locale">
    <xs:complexType>
      <xs:attribute ref="xml:lang" use="required"/>

      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="OptionType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Name" type="xs:NCName" use="required"/>
        <xs:attribute name="MustComply" type="xs:boolean" default="false"/>

        <xs:attribute name="Type" type="xs:QName"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="Option" type="wsman:OptionType"/>

  <xs:element name="OptionSet">
    <xs:complexType>

      <xs:sequence>
        <xs:element ref="wsman:Option" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="attributableEmpty">
    <xs:anyAttribute namespace="##other" processContents="lax"/>

  </xs:complexType>

  <xs:element name="RequestEPR" type="wsman:attributableEmpty"/>
  <xs:element name="EPRInvalid" type="wsman:attributableEmpty"/>
  <xs:element name="EPRUnknown" type="wsman:attributableEmpty"/>

  <xs:complexType name="RequestedEPRType">
    <xs:choice>
      <xs:element ref="wsa:EndpointReference"/>
      <xs:element ref="wsman:EPRInvalid"/>

      <xs:element ref="wsman:EPRUnknown"/>
    </xs:choice>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:element name="RequestedEPR" type="wsman:RequestedEPRType"/>

  <xs:complexType name="mixedDataType">
    <xs:complexContent mixed="true">
      <xs:restriction base="xs:anyType">

        <xs:sequence>
          <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="fragmentMixedDataType">

    <xs:complexContent mixed="true">
      <xs:extension base="wsman:mixedDataType">
        <xs:attribute name="Dialect" type="xs:anyURI" default="http://www.w3.org/TR/1999/REC-xpath-19991116"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="FragmentTransfer" type="wsman:fragmentMixedDataType"/>
  <xs:element name="XmlFragment" type="wsman:mixedDataType"/>

  <xs:complexType name="attributableNonNegativeInteger">
    <xs:simpleContent>
      <xs:extension base="xs:nonNegativeInteger">
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="TotalItemsCountEstimate" type="wsman:attributableNonNegativeInteger" nillable="true"/>

  <xs:element name="RequestTotalItemsCountEstimate" type="wsman:attributableEmpty"/>

  <xs:element name="OptimizeEnumeration" type="wsman:attributableEmpty"/>
  <xs:element name="MaxElements" type="wsman:attributablePositiveInteger"/>

  <xs:simpleType name="EnumerationModeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="EnumerateEPR"/>
      <xs:enumeration value="EnumerateObjectAndEPR"/>
    </xs:restriction>

  </xs:simpleType>
  <xs:element name="EnumerationMode" type="wsman:EnumerationModeType"/>

  <xs:complexType name="mixedDataFilterType" mixed="true">
    <xs:complexContent mixed="true">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>

        <xs:anyAttribute namespace="##any" processContents="lax"/>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="filterMixedDataType" mixed="true">
    <xs:complexContent mixed="true">
      <xs:extension base="wsman:mixedDataFilterType">
        <xs:attribute name="Dialect" type="xs:anyURI" default="http://www.w3.org/TR/1999/REC-xpath-19991116"/>

        <xs:anyAttribute namespace="##any" processContents="lax"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Filter" type="wsman:filterMixedDataType"/>

  <xs:complexType name="ObjectAndEPRType">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax"/>

      <xs:element ref="wsa:EndpointReference"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Item" type="wsman:ObjectAndEPRType"/>

  <xs:complexType name="anyListType">
    <xs:sequence>
      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    </xs:sequence>

    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Items" type="wsman:anyListType"/>
  <xs:element name="EndOfSequence" type="wsman:attributableEmpty"/>

  <xs:complexType name="attributableLanguage">
    <xs:simpleContent>
      <xs:extension base="xs:language">
        <xs:anyAttribute namespace="##other" processContents="lax"/>

      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ContentEncoding" type="wsman:attributableLanguage"/>

  <xs:complexType name="ConnectionRetryType">
    <xs:simpleContent>
      <xs:extension base="wsman:attributableDuration">
        <xs:attribute name="Total" type="xs:unsignedLong"/>

      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="ConnectionRetry" type="wsman:ConnectionRetryType"/>

  <xs:element name="Heartbeats" type="wsman:attributableDuration"/>
  <xs:element name="SendBookmarks" type="wsman:attributableEmpty"/>

  <xs:complexType name="attributableAny">
    <xs:sequence>

      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="Bookmark" type="wsman:mixedDataType"/>
  <xs:element name="MaxTime" type="wsman:attributableDuration"/>

  <xs:complexType name="EventType">
    <xs:complexContent>

      <xs:extension base="wsman:attributableAny">
        <xs:attribute name="Action" type="xs:anyURI" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Event" type="wsman:EventType"/>

  <xs:complexType name="EventsType">
    <xs:sequence>

      <xs:element ref="wsman:Event" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:element name="Events" type="wsman:EventsType"/>

  <xs:element name="AckRequested" type="wsman:attributableEmpty"/>

  <xs:complexType name="attributableInt">
    <xs:simpleContent>

      <xs:extension base="xs:int">
        <xs:anyAttribute namespace="##other" processContents="lax"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="DroppedEventsType">
    <xs:simpleContent>
      <xs:extension base="wsman:attributableInt">

        <xs:attribute name="Action" type="xs:anyURI" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="DroppedEvents" type="wsman:DroppedEventsType"/>

  <xs:simpleType name="restrictedProfileType">
    <xs:restriction base="xs:anyURI">
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/basic"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/digest"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/basic"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/digest"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/mutual"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/mutual/basic"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/mutual/digest"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/spnego-kerberos"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/https/mutual/spnego-kerberos"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/spnego-kerberos"/>

    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ProfileType">
    <xs:union memberTypes="wsman:restrictedProfileType xs:anyURI"/>
  </xs:simpleType>

  <xs:complexType name="AuthType">
    <xs:complexContent>
      <xs:extension base="wsman:attributableEmpty">

        <xs:attribute name="Profile" type="wsman:ProfileType" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="Auth" type="wsman:AuthType"/>

  <xs:simpleType name="ThumbprintType">
      <xs:restriction base="xs:string">
          <xs:pattern value="[0-9a-fA-F]{40}"/>

      </xs:restriction>
  </xs:simpleType>
  <xs:element name="CertificateThumbprint" type="wsman:ThumbprintType"/>


  <xs:simpleType name="restrictedFaultDetailType">
    <xs:restriction base="xs:anyURI">
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/ActionMismatch"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Ack"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/AddressingMode"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/AsynchronousRequest"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Bookmarks"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/CharacterSet"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/DeliveryRetries"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/DuplicateSelectors"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/EncodingType"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/EnumerationMode"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/ExpirationTime"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Expired"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/FilteringRequired"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/FormatMismatch"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/FragmentLevelAccess"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Heartbeats"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InsecureAddress"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InsufficientSelectors"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Invalid"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidName"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidFragment"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidNamespace"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidResourceURI"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidValue"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/InvalidValues"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Locale"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MaxElements"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MaxEnvelopePolicy"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MaxEnvelopeSize"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MaxTime"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MinimumEnvelopeLimit"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/MissingValues"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/NotSupported"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/OperationTimeout"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/OptionLimit"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/ResourceOffline"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/SelectorLimit"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/ServiceEnvelopeLimit"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/TypeMismatch"/>

      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/UnexpectedSelectors"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/UnreportableSuccess"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/UnsupportedCharacter"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/UnusableAddress"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/URILimitExceeded"/>
      <xs:enumeration value="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/Whitespace"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FaultDetailType">
    <xs:union memberTypes="wsman:restrictedFaultDetailType xs:anyURI"/>
  </xs:simpleType>

  <xs:element name="FaultDetail" type="wsman:FaultDetailType"/>
  <xs:element name="FragmentDialect" type="wsman:attributableURI"/>
  <xs:element name="SupportedSelectorName" type="xs:NCName"/>

  <!-- Master Fault Table subcode QNames -->
  <xs:element name="AccessDenied"><xs:complexType/></xs:element>

  <xs:element name="AlreadyExists"><xs:complexType/></xs:element>
  <xs:element name="CannotProcessFilter"><xs:complexType/></xs:element>
  <xs:element name="Concurrency"><xs:complexType/></xs:element>
  <xs:element name="DeliveryRefused"><xs:complexType/></xs:element>
  <xs:element name="EncodingLimit"><xs:complexType/></xs:element>
  <xs:element name="EventDeliverToUnusable"><xs:complexType/></xs:element>
  <xs:element name="FragmentDialectNotSupported"><xs:complexType/></xs:element>
  <xs:element name="InternalError"><xs:complexType/></xs:element>
  <xs:element name="InvalidBookmark"><xs:complexType/></xs:element>

  <xs:element name="InvalidOptions"><xs:complexType/></xs:element>
  <xs:element name="InvalidParameter"><xs:complexType/></xs:element>
  <xs:element name="InvalidSelectors"><xs:complexType/></xs:element>
  <xs:element name="NoAck"><xs:complexType/></xs:element>
  <xs:element name="QuotaLimit"><xs:complexType/></xs:element>
  <xs:element name="SchemaValidationError"><xs:complexType/></xs:element>
  <xs:element name="TimedOut"><xs:complexType/></xs:element>
  <xs:element name="UnsupportedFeature"><xs:complexType/></xs:element>

</xs:schema>