<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.pwg.org/schemas/2006/10/sm" xmlns:pwg="http://www.pwg.org/schemas/2006/10/sm" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.pwg.org/schemas/2006/10/sm" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.53">
	<xs:include schemaLocation="Agents.xsd"/>
	<!--05/30/08 PJZ Move back to single namespace-->
	<!--05/21/08 PJZ Partial alignment with WS-Scan-->
	<!-- Counter and legacy Printer includes from SM -->
	<!-- Order-dependent includes for all WIMS schema -->
	<xs:annotation>
		<xs:documentation source="www.pwg.org" xml:lang="en">
   PWG Semantic Model v2   

    IEEE/ISTO Printer Working Group (PWG)
    Web-based Imaging Management Service (WIMS)
    WIMS Message Schema - Agent and Manager Interfaces

    - version 1.17 - 4 April 2008 -Editors:  Peter Zehler, Ira McDoanald 


    Normative References
    --------------------
    [WIMS-PRO] Web-based Imaging Management Service (WIMS)
               (work-in-progress)

    Informative References
    ----------------------
    [RFC2911] Internet Printing Protocol/1.1: Model and Semantics
              (September 2000)
              ftp://ftp.isi.edu/in-notes/rfc2911.txt
  </xs:documentation>
	</xs:annotation>
	<!--                                       -->
	<!-- WIMS message element type definitions -->
	<!--                                       -->
	<xs:simpleType name="WIMSVersionWKV">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="1.0"/>
		</xs:restriction>
		<!-- version of WIMS protocol in this message -->
	</xs:simpleType>
	<!--                                  -->
	<!-- WIMS message element definitions -->
	<!--                                  -->
	<xs:element name="RequestVersion" type="WIMSVersionWKV"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- version of WIMS protocol in this message -->
	<xs:element name="RequestSessionId">
		<!-- REQUIRED - MUST be single-valued -->
		<!-- session identifer of the WIMS session in this message -->
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:minInclusive value="1"/>
				<xs:maxInclusive value="2147483647"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="RequestSequenceNumber">
		<!-- REQUIRED - MUST be single-valued -->
		<!-- sequence number of current request (in this session) -->
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:minInclusive value="1"/>
				<xs:maxInclusive value="2147483647"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="RequestAgentReference" type="ObjectAgentReference"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- MI - reference to destination WIMS agent -->
	<xs:element name="RequestSenderReference" type="ObjectAgentReference"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- AI - reference to sender WIMS agent -->
	<xs:element name="RequestManagerURI" type="xs:anyURI"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- AI - reference to destination WIMS manager -->
	<!-- MI - reference to sender WIMS manager URI -->
	<xs:element name="RequestAgentPaths" type="ObjectAgentPaths"/>
	<!-- REQUIRED - MAY be multi-valued -->
	<!-- paths to agents to manage (register) or release (unregister) -->
	<!-- for support of multi-level WIMS Proxy configurations -->
	<xs:element name="RequestAlerts" type="Alerts"/>
	<!-- REQUIRED - MAY be multi-valued -->
	<!-- list of Alerts in SendAlerts request -->
	<xs:element name="RequestReports" type="Reports"/>
	<!-- REQUIRED - MAY be multi-valued -->
	<!-- list of Reports in SendReports request -->
	<xs:element name="RequestSchedule" type="Schedule"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- Schedule in BeginManagement or SetSchedule request -->
	<xs:element name="ResponseStatusString" type="xs:string"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- status returned by WIMS manager in response -->
	<!-- see Operation Response Status section 3.1.6 of [RFC2911] -->
	<!-- see APPENDIX B: Status Codes section 13 of [RFC2911] -->
	<xs:element name="ResponseElement">
		<!-- OPTIONAL - MUST be single-valued -->
		<!-- response element (and optional value) from any namespace -->
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ResponseElementName" type="xs:NMTOKEN"/>
				<xs:element name="ResponseElementValue" type="xs:anyType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ResponseUnsupportedElements">
		<!-- REQUIRED - MAY be multi-valued -->
		<!-- list of unsupported elements and values for this response -->
		<!-- see Unsupported Attributes section 3.1.7 of [RFC2911] -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseElement" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ResponseReports" type="Reports"/>
	<!-- REQUIRED - MAY be multi-valued -->
	<!-- list of Reports in ExecuteAction response -->
	<xs:element name="ResponseSchedule" type="Schedule"/>
	<!-- REQUIRED - MUST be single-valued -->
	<!-- Schedule in RegisterForManagement or GetSchedule response -->
	<!--                                       -->
	<!-- WIMS Agent Interface (AI) definitions -->
	<!--                                       -->
	<xs:complexType name="RequestByAgentHeader">
		<xs:sequence>
			<xs:element ref="RequestVersion"/>
			<xs:element ref="RequestSessionId"/>
			<xs:element ref="RequestSequenceNumber"/>
			<xs:element ref="RequestManagerURI"/>
			<xs:element ref="RequestSenderReference"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<!-- REQUIRED for request by Agent - MUST be single-valued -->
		<!-- AI - request by agent header -->
	</xs:complexType>
	<xs:element name="RequestByAgentHeader" type="RequestByAgentHeader"/>
	<!-- AI - request by agent header -->
	<xs:complexType name="ResponseToAgentHeader">
		<xs:sequence>
			<xs:element ref="RequestVersion"/>
			<xs:element ref="RequestSessionId"/>
			<xs:element ref="RequestSequenceNumber"/>
			<xs:element ref="RequestManagerURI"/>
			<xs:element ref="RequestSenderReference"/>
			<xs:element ref="ResponseStatusString"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<!-- REQUIRED for response to Agent - MUST be single-valued -->
		<!-- AI - response to agent header -->
	</xs:complexType>
	<xs:element name="ResponseToAgentHeader" type="ResponseToAgentHeader"/>
	<!-- AI - response to agent header -->
	<xs:element name="RegisterForManagementRequest">
		<!-- AI - RegisterForManagement request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByAgentHeader"/>
				<xs:element ref="RequestAgentPaths"/>
				<xs:element ref="WIMSOperationsSupported"/>
				<xs:element ref="WIMSActionsSupported"/>
				<xs:element ref="WIMSObjectsSupported"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="RegisterForManagementResponse">
		<!-- AI - RegisterForManagement response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToAgentHeader"/>
				<xs:element ref="WIMSOperationsSupported"/>
				<xs:element ref="WIMSActionsSupported"/>
				<xs:element ref="WIMSObjectsSupported"/>
				<xs:element ref="ResponseSchedule"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UnregisterForManagementRequest">
		<!-- AI - UnregisterForManagement request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByAgentHeader"/>
				<xs:element ref="RequestAgentPaths"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UnregisterForManagementResponse">
		<!-- AI - UnregisterForManagement response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToAgentHeader"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetScheduleRequest">
		<!-- AI - GetSchedule request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByAgentHeader"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetScheduleResponse">
		<!-- AI - GetSchedule response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToAgentHeader"/>
				<xs:element ref="ResponseSchedule"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SendAlertsRequest">
		<!-- AI - SendAlerts request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByAgentHeader"/>
				<xs:element ref="RequestAlerts"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SendAlertsResponse">
		<!-- AI - SendAlerts response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToAgentHeader"/>
				<xs:element ref="ResponseUnsupportedElements"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SendReportsRequest">
		<!-- AI - SendReports request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByAgentHeader"/>
				<xs:element ref="RequestReports"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SendReportsResponse">
		<!-- AI - SendReports response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToAgentHeader"/>
				<xs:element ref="ResponseUnsupportedElements"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="AgentInterface">
		<xs:choice minOccurs="0">
			<!-- Requests sent from WIMS agent to WIMS manager -->
			<xs:element ref="RegisterForManagementRequest" minOccurs="0"/>
			<xs:element ref="UnregisterForManagementRequest" minOccurs="0"/>
			<xs:element ref="GetScheduleRequest" minOccurs="0"/>
			<xs:element ref="SendAlertsRequest" minOccurs="0"/>
			<xs:element ref="SendReportsRequest" minOccurs="0"/>
			<!-- Responses sent from WIMS manager to WIMS agent -->
			<xs:element ref="RegisterForManagementResponse" minOccurs="0"/>
			<xs:element ref="UnregisterForManagementResponse" minOccurs="0"/>
			<xs:element ref="GetScheduleResponse" minOccurs="0"/>
			<xs:element ref="SendAlertsResponse" minOccurs="0"/>
			<xs:element ref="SendReportsResponse" minOccurs="0"/>
		</xs:choice>
		<!-- AI - WIMS agent interface -->
	</xs:complexType>
	<xs:element name="AgentInterface" type="AgentInterface"/>
	<!-- AI - WIMS agent interface -->
	<!--                                         -->
	<!-- WIMS Manager Interface (MI) definitions -->
	<!--                                         -->
	<xs:complexType name="RequestByManagerHeader">
		<xs:sequence>
			<xs:element ref="RequestVersion"/>
			<xs:element ref="RequestSessionId"/>
			<xs:element ref="RequestSequenceNumber"/>
			<xs:element ref="RequestManagerURI"/>
			<xs:element ref="RequestAgentReference"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<!-- REQUIRED for request by Manager - MUST be single-valued -->
		<!-- MI - request to manager header -->
	</xs:complexType>
	<xs:element name="RequestByManagerHeader" type="RequestByManagerHeader"/>
	<!-- MI - request to manager header -->
	<xs:complexType name="ResponseToManagerHeader">
		<xs:sequence>
			<xs:element ref="RequestVersion"/>
			<xs:element ref="RequestSessionId"/>
			<xs:element ref="RequestSequenceNumber"/>
			<xs:element ref="RequestManagerURI"/>
			<xs:element ref="RequestAgentReference"/>
			<xs:element ref="ResponseStatusString"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<!-- REQUIRED for response to Manager - MUST be single-valued -->
		<!-- MI - response to manager header -->
	</xs:complexType>
	<xs:element name="ResponseToManagerHeader" type="ResponseToManagerHeader"/>
	<!-- MI - response to manager header -->
	<xs:element name="BeginManagementRequest">
		<!-- MI - BeginManagement request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByManagerHeader"/>
				<xs:element ref="WIMSOperationsSupported"/>
				<xs:element ref="WIMSActionsSupported"/>
				<xs:element ref="WIMSObjectsSupported"/>
				<xs:element ref="RequestSchedule"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="BeginManagementResponse">
		<!-- MI - BeginManagement response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToManagerHeader"/>
				<xs:element ref="WIMSOperationsSupported"/>
				<xs:element ref="WIMSActionsSupported"/>
				<xs:element ref="WIMSObjectsSupported"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="EndManagementRequest">
		<!-- MI - EndManagement request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByManagerHeader"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="EndManagementResponse">
		<!-- MI - EndManagement response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToManagerHeader"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SetScheduleRequest">
		<!-- MI - SetSchedule request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByManagerHeader"/>
				<xs:element ref="RequestSchedule"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SetScheduleResponse">
		<!-- MI - SetSchedule response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToManagerHeader"/>
				<xs:element ref="ResponseUnsupportedElements"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ExecuteActionRequest">
		<!-- MI - ExecuteAction request - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RequestByManagerHeader"/>
				<xs:element ref="Action"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ExecuteActionResponse">
		<!-- MI - ExecuteAction response - transport independent -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ResponseToManagerHeader"/>
				<xs:element ref="ResponseUnsupportedElements"/>
				<xs:element ref="ResponseReports"/>
				<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="ManagerInterface">
		<xs:choice minOccurs="0">
			<!-- Requests sent from WIMS manager to WIMS agent -->
			<xs:element ref="BeginManagementRequest" minOccurs="0"/>
			<xs:element ref="EndManagementRequest" minOccurs="0"/>
			<xs:element ref="SetScheduleRequest" minOccurs="0"/>
			<xs:element ref="ExecuteActionRequest" minOccurs="0"/>
			<!-- Responses sent from WIMS agent to WIMS manager -->
			<xs:element ref="BeginManagementResponse" minOccurs="0"/>
			<xs:element ref="EndManagementResponse" minOccurs="0"/>
			<xs:element ref="SetScheduleResponse" minOccurs="0"/>
			<xs:element ref="ExecuteActionResponse" minOccurs="0"/>
		</xs:choice>
		<!-- MI - WIMS manager interface -->
	</xs:complexType>
	<xs:element name="ManagerInterface" type="ManagerInterface"/>
	<!-- MI - WIMS manager interface -->
</xs:schema>
