<?xml version="1.0" encoding="UTF-8"?>
<!-- 
DMTF - Distributed Management Task Force, Inc. - http://www.dmtf.org

Document number: DSP8032
Date: 2010-02-19
Version: 1.0.0
Document status: DMTF Standard

Title: WS-Management Notification Operations XML Schema

Document type: Specification (W3C XML Schema)
Document language: E

Abstract: XML Schema for WS-Management Notification Operations.

Contact group: DMTF WS-Management Work Group, wsman-chair@dmtf.org

Copyright (C) 2008,2009, 2010 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 
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 log:
1.0.0 - 2009-11-01 - Work in progress release
1.0.0 - 2010-02-19 - DMTF Standard release
  -->
<xs:schema 
  targetNamespace="http://schemas.xmlsoap.org/ws/2004/08/eventing" 
  xmlns:tns="http://schemas.xmlsoap.org/ws/2004/08/eventing"
  xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified" 
  blockDefault="#all">
  
  <xs:import 
    namespace="http://www.w3.org/XML/1998/namespace" 
    schemaLocation="http://www.w3.org/2001/xml.xsd" />
  <xs:import
    namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    schemaLocation="http://schemas.dmtf.org/wbem/wsman/1/dsp8034_1.0.xsd" />
  <xs:import
    namespace="http://www.w3.org/2005/08/addressing"
    schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd" />
 
  <!-- Types and global elements -->
  <xs:complexType name="DeliveryType" mixed="true">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax" 
              minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="Mode" type="xs:anyURI" use="optional" />
    <xs:anyAttribute namespace="##other" processContents="lax" />
  </xs:complexType>
 
  <xs:simpleType name="NonNegativeDurationType">
    <xs:restriction base="xs:duration">
      <xs:minInclusive value="P0Y0M0DT0H0M0S" />
    </xs:restriction>
  </xs:simpleType>
 
  <xs:simpleType name="ExpirationType">
      <xs:union memberTypes="xs:dateTime 
                tns:NonNegativeDurationType" />
  </xs:simpleType>
 
  <xs:complexType name="FilterType" mixed="true">
    <xs:sequence>
      <xs:any namespace="##other" processContents="lax" 
              minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="Dialect" type="xs:anyURI" use="optional" />
    <xs:anyAttribute namespace="##other" processContents="lax" />
  </xs:complexType>
 
  <xs:complexType name="LanguageSpecificStringType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="xml:lang" />
        <xs:anyAttribute namespace="##other" processContents="lax" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <!--
	  The type of the AnyEPRType is effectively
	  the union of wsa04:EndpointReferenceType and
	  wsa10:EndpointReferenceType. Unfortunately, xs:union only
	  works for simple types. As a result, we have to define
	  the element in an unvalidated way to accommodate either
	  addressing type.
	  -->
	
	<xs:complexType name="AnyEPRType">
	  <xs:sequence>
	    <xs:any minOccurs='1' maxOccurs='unbounded' processContents='skip'
	            namespace='##other' />
	  </xs:sequence>
	</xs:complexType>
 
  <xs:element name="NotifyTo" type="tns:AnyEPRType" />
 
  <!-- Subscribe request -->
  <xs:element name="Subscribe">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="EndTo" type="tns:AnyEPRType" 
                    minOccurs="0" />
        <xs:element name="Delivery" type="tns:DeliveryType" />
        <xs:element name="Expires" type="tns:ExpirationType" 
                    minOccurs="0" />
        <xs:element name="Filter" type="tns:FilterType" 
                    minOccurs="0" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <xs:element name="Identifier" type="xs:anyURI" />
 
  <!-- Subscribe response -->
  <xs:element name="SubscribeResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="SubscriptionManager" 
                    type="tns:AnyEPRType" />
        <xs:element name="Expires" type="tns:ExpirationType" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <!-- Used in a fault if there's an unsupported dialect -->
  <xs:element name="SupportedDialect" type="xs:anyURI" />
 
  <!-- Used in a fault if there's an unsupported delivery mode -->
  <xs:element name="SupportedDeliveryMode" type="xs:anyURI" />
 
  <!-- Renew request -->
  <xs:element name="Renew">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Expires" type="tns:ExpirationType" 
                    minOccurs="0" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <!-- Renew response -->
  <xs:element name="RenewResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Expires" type="tns:ExpirationType" 
                    minOccurs="0" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <!-- GetStatus request -->
  <xs:element name="GetStatus">
    <xs:complexType>
      <xs:sequence>
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <!-- GetStatus response -->
  <xs:element name="GetStatusResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Expires" type="tns:ExpirationType" 
                    minOccurs="0" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <!-- Unsubscribe request -->
  <xs:element name="Unsubscribe">
    <xs:complexType>
      <xs:sequence>
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
  <!-- Unsubscribe response has an empty body --> 
  
  <!-- SubscriptionEnd message -->
  <xs:element name="SubscriptionEnd">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="SubscriptionManager" 
                    type="tns:AnyEPRType" />
        <xs:element name="Status"
                    type="tns:OpenSubscriptionEndCodeType" />
        <xs:element name="Reason" 
                    type="tns:LanguageSpecificStringType" 
                    minOccurs="0" maxOccurs="unbounded" />
        <xs:any namespace="##other" processContents="lax" 
                minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax" />
    </xs:complexType>
  </xs:element>
 
  <xs:simpleType name="SubscriptionEndCodeType">
    <xs:restriction base="xs:anyURI">
      <xs:enumeration value="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryFailure" />
      <xs:enumeration value="http://schemas.xmlsoap.org/ws/2004/08/eventing/SourceShuttingDown" />
      <xs:enumeration value="http://schemas.xmlsoap.org/ws/2004/08/eventing/SourceCancelling" />
    </xs:restriction>
  </xs:simpleType>
 
  <xs:simpleType name="OpenSubscriptionEndCodeType">
    <xs:union memberTypes="tns:SubscriptionEndCodeType xs:anyURI" />
  </xs:simpleType>
 
  <xs:attribute name="EventSource" type="xs:boolean" />
</xs:schema>
