<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.pwg.org/schemas/2006/10/sm" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pwg="http://www.pwg.org/schemas/2006/10/sm" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:xmlmime="http://www.w3.org/2005/05/xmlmime" targetNamespace="http://www.pwg.org/schemas/2006/10/sm" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.53">
	<!--08/29/08 PJZ Move Admin stuff out into its own schema-->
	<!--05/31/08 PJZ Move back to ##Other-->
	<!--05/30/08 PJZ Move back to single namespace-->
	<!--05/21/08 PJZ Partial alignment with WS-Scan-->
	<!--PJZ 12/14/07   Updates per 12/11 Face to Face meeting-->
	<!--PJZ 07/09/07    Initial version-->
	<xs:annotation>
		<xs:documentation xml:lang="en">
   PWG Semantic Model v2   

Copyright 2002-2008, IEEE Industry Standards and Technology Organization/ScanService Working Group. 
All rights reserved  

    - version 1.17 - 4 April 2008 -Editors:  Peter Zehler, Ira McDoanald 
</xs:documentation>
	</xs:annotation>
	<xs:include schemaLocation="PwgCommon.xsd"/>
	<xs:include schemaLocation="Subunits.xsd"/>
	<xs:include schemaLocation="PwgWellKnownValues.xsd"/>
	<xs:include schemaLocation="ScanService.xsd"/>
	<xs:include schemaLocation="PwgAdminOpMsg.xsd"/>
	<xs:import namespace="http://www.w3.org/2004/08/xop/include" schemaLocation="include.xsd"/>
	<xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="xmlmime.xsd"/>
	<xs:annotation>
		<xs:documentation xml:lang="en">Complex types and elements specific to operations</xs:documentation>
	</xs:annotation>
	<xs:complexType name="ScannerElementDataType">
		<xs:choice>
			<xs:element ref="ScanServiceCapabilities"/>
			<xs:element ref="ScanServiceConfiguration"/>
			<xs:element ref="ScanServiceDescription"/>
			<xs:element ref="ScanServiceStatus"/>
			<xs:element ref="DefaultScanJobTicket"/>
			<xs:any namespace="##other"/>
		</xs:choice>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="ScannerElementsType">
		<xs:sequence>
			<xs:element name="ElementData" type="ScannerElementDataType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="JobSummaryType">
		<xs:sequence>
			<xs:element ref="JobId"/>
			<xs:element ref="JobName"/>
			<xs:element ref="JobOriginatingUserName"/>
			<xs:element ref="JobState"/>
			<xs:element ref="JobStateReasons" minOccurs="0"/>
			<xs:element ref="ImagesCompleted"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="ListOfSummarysType">
		<xs:sequence>
			<xs:element name="JobSummary" type="JobSummaryType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="DocumentElementDataType">
		<xs:choice>
			<xs:element ref="ScanDocumentReceipt"/>
			<xs:element ref="ScanDocumentStatus"/>
			<xs:element ref="ScanDocumentTicket"/>
			<xs:any namespace="##other"/>
		</xs:choice>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="DocumentElementsType">
		<xs:sequence>
			<xs:element name="ElementData" type="DocumentElementDataType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="JobElementDataType">
		<xs:choice>
			<xs:element ref="ScanJobReceipt"/>
			<xs:element ref="ScanJobStatus"/>
			<xs:element ref="ScanJobTicket"/>
			<xs:any namespace="##other"/>
		</xs:choice>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="JobElementsType">
		<xs:sequence>
			<xs:element name="ElementData" type="JobElementDataType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:annotation>
		<xs:documentation xml:lang="en">Operation and Response messages</xs:documentation>
	</xs:annotation>
	<xs:complexType name="CancelScanJobRequestType">
		<xs:sequence>
			<xs:element ref="JobId"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="CancelScanJobRequest" type="CancelScanJobRequestType"/>
	<xs:complexType name="CancelScanJobResponseType">
		<xs:sequence>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="CancelScanJobResponse" type="CancelScanJobResponseType"/>
	<xs:complexType name="CreateScanJobRequestType">
		<xs:sequence>
			<xs:element ref="ScanJobTicket"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="CreateScanJobRequest" type="CreateScanJobRequestType"/>
	<xs:complexType name="CreateScanJobResponseType">
		<xs:sequence>
			<xs:element ref="JobId"/>
			<xs:element ref="UnsupportedElements" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="CreateScanJobResponse" type="CreateScanJobResponseType"/>
	<xs:element name="DisableScanServiceRequest" type="DisableServiceRequestType"/>
	<xs:element name="DisableScanServiceResponse" type="DisableServiceResponseType"/>
	<xs:element name="EnableScanServiceRequest" type="EnableServiceRequestType"/>
	<xs:element name="EnableScanServiceResponse" type="EnableServiceResponseType"/>
	<xs:complexType name="GetActiveScanJobsRequestType">
		<xs:sequence>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetActiveScanJobsRequest" type="GetActiveScanJobsRequestType"/>
	<xs:complexType name="GetActiveScanJobsResponseType">
		<xs:sequence>
			<xs:element name="ActiveJobs" type="ListOfSummarysType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetActiveScanJobsResponse" type="GetActiveScanJobsResponseType"/>
	<xs:complexType name="GetScanDocumentElementsRequestType">
		<xs:sequence>
			<xs:element ref="ElementsNaturalLanguageRequested" minOccurs="0"/>
			<xs:element ref="JobId"/>
			<xs:element ref="DocumentNumber"/>
			<xs:element ref="RequestedElements" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanDocumentElementsRequest" type="GetScanDocumentElementsRequestType"/>
	<xs:complexType name="GetScanDocumentElementsResponseType">
		<xs:sequence>
			<xs:element name="ScanDocumentElements" type="DocumentElementsType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanDocumentElementsResponse" type="GetScanDocumentElementsResponseType"/>
	<xs:complexType name="GetScanJobElementsRequestType">
		<xs:sequence>
			<xs:element ref="ElementsNaturalLanguageRequested" minOccurs="0"/>
			<xs:element ref="JobId"/>
			<xs:element ref="RequestedElements" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanJobElementsRequest" type="GetScanJobElementsRequestType"/>
	<xs:complexType name="GetScanJobElementsResponseType">
		<xs:sequence>
			<xs:element name="ScanJobElements" type="JobElementsType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanJobElementsResponse" type="GetScanJobElementsResponseType"/>
	<xs:complexType name="GetScanJobHistoryRequestType">
		<xs:sequence>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanJobHistoryRequest" type="GetScanJobHistoryRequestType"/>
	<xs:complexType name="GetScanJobHistoryResponseType">
		<xs:sequence>
			<xs:element name="JobHistory" type="ListOfSummarysType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanJobHistoryResponse" type="GetScanJobHistoryResponseType"/>
	<xs:complexType name="GetScanServiceElementsRequestType">
		<xs:sequence>
			<xs:element ref="ElementsNaturalLanguageRequested" minOccurs="0"/>
			<xs:element ref="RequestedElements"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanServiceElementsRequest" type="GetScanServiceElementsRequestType"/>
	<xs:complexType name="GetScanServiceElementsResponseType">
		<xs:sequence>
			<xs:element name="ScanServiceElements" type="ScannerElementsType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetScanServiceElementsResponse" type="GetScanServiceElementsResponseType"/>
	<xs:element name="HoldScanJobRequest" type="HoldJobRequestType"/>
	<xs:element name="HoldScanJobResponse" type="HoldJobResponseType"/>
	<xs:element name="HoldNewScanJobsRequest" type="HoldNewJobsRequestType"/>
	<xs:element name="HoldNewScanJobsResponse" type="HoldNewJobsResponseType"/>
	<xs:element name="PauseScanServiceRequest" type="PauseServiceRequestType"/>
	<xs:element name="PauseScanServiceResponse" type="PauseServiceResponseType"/>
	<xs:element name="PauseScanServiceAfterCurrentJobRequest" type="PauseServiceAfterCurrentJobRequestType"/>
	<xs:element name="PauseScanServiceAfterCurrentJobResponse" type="PauseServiceAfterCurrentJobResponseType"/>
	<xs:element name="ReleaseScanJobRequest" type="ReleaseJobRequestType"/>
	<xs:element name="ReleaseScanJobResponse" type="ReleaseJobResponseType"/>
	<xs:element name="ReleaseNewScanJobsRequest" type="ReleaseNewJobsRequestType"/>
	<xs:element name="ReleaseNewScanJobsResponse" type="ReleaseNewJobsResponseType"/>
	<xs:element name="ResumeScanServiceRequest" type="ResumeServiceRequestType"/>
	<xs:element name="ResumeScanServiceResponse" type="ResumeServiceResponseType"/>
	<xs:element name="ShutdownScanServiceResponse" type="ShutdownServiceRequestType"/>
	<xs:element name="ShutdownScanServiceRequest" type="ShutdownServiceResponseType"/>
	<xs:element name="StartupScanServiceRequest" type="StartupServiceRequestType"/>
	<xs:element name="StartupScanServiceResponse" type="StartupServiceResponseType"/>
	<xs:complexType name="ValidateScanJobRequestType">
		<xs:sequence>
			<xs:element ref="ScanJobTicket"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ValidateScanJobRequest" type="ValidateScanJobRequestType"/>
	<xs:complexType name="ValidateScanJobResponseType">
		<xs:sequence>
			<xs:element ref="UnsupportedElements" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ValidateScanJobResponse" type="ValidateScanJobResponseType"/>
</xs:schema>
