<?xml version="1.0" encoding="UTF-8"?>
<!--
   PWG Semantic Model v2   

Copyright 2011, IEEE Industry Standards and Technology Organization/PWG - MFD Working Group. 
All rights reserved  

   Editors:  Peter Zehler
-->
<xs:schema xmlns="http://www.pwg.org/schemas/2012/3/sm" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pwg="http://www.pwg.org/schemas/2012/3/sm" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" targetNamespace="http://www.pwg.org/schemas/2012/3/sm" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.174">
	<!--PJZ 02/25/12   Change PrinterCapabilities to PrintServiceJobCapabilities-->
	<!--PJZ 12/07/11   Updated to latest PWG elements-->
	<!--PJZ 04/12/11   Removed Chameleon schema-->
	<!--PJZ 02/24/10   Added placeholder for registration and initial version of heartbeat-->
	<!--PJZ 07/26/09   Initial version -->
	<xs:include schemaLocation="PWGCommon.xsd"/>
	<xs:include schemaLocation="PrintJobTicket.xsd"/>
	<xs:include schemaLocation="PrintServiceCapabilities.xsd"/>
	<!--Some needed Elements-->
	<xs:element name="DestinationJobUuid" type="UuidType">
		<xs:annotation>
			<xs:documentation>Global ID</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="SourceJobUuid" type="UuidType">
		<xs:annotation>
			<xs:documentation>Global ID</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="DestinationServiceUuid" type="UuidType">
		<xs:annotation>
			<xs:documentation>Global ID</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="SourceServiceUuid" type="UuidType">
		<xs:annotation>
			<xs:documentation>Global ID</xs:documentation>
		</xs:annotation>
	</xs:element>
	<!--Message definitions-->
	<xs:complexType name="FetchDocumentRequestType">
		<xs:sequence>
			<xs:element ref="DocumentNumber"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:element ref="TimeOut" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="FetchDocumentRequest" type="FetchDocumentRequestType"/>
	<xs:complexType name="FetchDocumentResponseType">
		<xs:sequence>
			<xs:element ref="DocumentNumber"/>
			<xs:element ref="DocumentPassword" minOccurs="0"/>
			<xs:element ref="ElementsNaturalLanguage" minOccurs="0"/>
			<xs:element ref="Compression" minOccurs="0"/>
			<xs:element ref="DocumentFormat" minOccurs="0"/>
			<xs:element ref="JobUuid"/>
			<xs:element ref="PrintDocumentTicket" minOccurs="0"/>
			<xs:element ref="LastDocument"/>
			<xs:element ref="RequestingUserName"/>
			<xs:element ref="RequestingUserUri" minOccurs="0"/>
			<xs:choice>
				<xs:element name="DocumentData">
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:base64Binary"/>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element ref="DocumentUri"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="FetchDocumentResponse" type="FetchDocumentResponseType"/>
	<xs:complexType name="FetchJobRequestType">
		<xs:sequence>
			<xs:element ref="DestinationJobUuid"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:element ref="TimeOut" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="FetchJobRequest" type="FetchJobRequestType"/>
	<xs:complexType name="FetchJobResponseType">
		<xs:sequence>
			<xs:element ref="DocumentPassword" minOccurs="0"/>
			<xs:element ref="ElementsNaturalLanguage" minOccurs="0"/>
			<xs:element ref="JobPasswordEncryption" minOccurs="0"/>
			<xs:element ref="JobPassword" minOccurs="0"/>
			<xs:element ref="PrintJobTicket" minOccurs="0"/>
			<xs:element ref="RequestingUserName"/>
			<xs:element ref="RequestingUserUri" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="FetchJobResponse" type="FetchJobResponseType"/>
	<xs:complexType name="GetAvailableJobsRequestType">
		<xs:sequence>
			<xs:element name="Printers">
				<xs:complexType>
					<xs:sequence>
						<xs:element ref="DestinationServiceUuid" minOccurs="0" maxOccurs="unbounded"/>
						<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element ref="SourceServiceUuid"/>
			<xs:element ref="TimeOut" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetAvailableJobsRequest" type="GetAvailableJobsRequestType"/>
	<xs:complexType name="GetAvailableJobsResponseType">
		<xs:sequence>
			<xs:element name="PrintersWithJobs" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="PrinterJobEntry" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="DestinationServiceUuid"/>
									<xs:element name="JobList">
										<xs:complexType>
											<xs:sequence>
												<xs:element ref="SourceJobUuid" maxOccurs="unbounded"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element ref="SourceServiceUuid"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="GetAvailableJobsResponse" type="GetAvailableJobsResponseType"/>
	<xs:complexType name="RegisterPrinterRequestType">
		<xs:sequence>
			<xs:element name="AgentInformarion">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="SecurityInformation" type="xs:string"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="PrinterInformation">
				<xs:complexType>
					<xs:sequence>
						<xs:element ref="DestinationServiceUuid"/>
						<xs:element ref="SourceServiceUuid"/>
						<xs:element ref="PrintServiceJobCapabilities"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="RegisterPrinterRequest" type="RegisterPrinterRequestType"/>
	<xs:complexType name="RegisterPrinterResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="RegisterPrinterResponse" type="RegisterPrinterResponseType"/>
	<xs:complexType name="ReplyToDocumentRequestType">
		<xs:sequence>
			<xs:element ref="DateTimeAtCreation" minOccurs="0"/>
			<xs:element ref="DestinationJobUuid"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="ImpressionsCompleted"/>
			<xs:element ref="DocumentNumber"/>
			<xs:element ref="DocumentState"/>
			<xs:element ref="DocumentStateReasons" minOccurs="0"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:element ref="UnsupportedElements" minOccurs="0"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ReplyToDocumentRequest" type="ReplyToDocumentRequestType"/>
	<xs:complexType name="ReplyToDocumentResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="ReplyToDocumentResponse" type="ReplyToDocumentResponseType"/>
	<xs:complexType name="ReportDocumentStateRequestType">
		<xs:sequence>
			<xs:element ref="DateTimeAtCreation" minOccurs="0"/>
			<xs:element ref="DateTimeAtProcessing" minOccurs="0"/>
			<xs:element ref="DateTimeAtCompleted" minOccurs="0"/>
			<xs:element ref="DestinationJobUuid"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="ImpressionsCompleted"/>
			<xs:element ref="DocumentNumber"/>
			<xs:element ref="DocumentState"/>
			<xs:element ref="DocumentStateReasons" minOccurs="0"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ReportDocumentStateRequest" type="ReportDocumentStateRequestType"/>
	<xs:complexType name="ReportDocumentStateResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="ReportDocumentStateResponse" type="ReportDocumentStateResponseType"/>
	<xs:complexType name="ReplyToJobRequestType">
		<xs:sequence>
			<xs:element ref="DateTimeAtCreation" minOccurs="0"/>
			<xs:element ref="DestinationJobUuid"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="ImpressionsCompleted"/>
			<xs:element ref="JobName"/>
			<xs:element ref="JobOriginatingUserName"/>
			<xs:element ref="JobState"/>
			<xs:element ref="JobStateReasons" minOccurs="0"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:element ref="UnsupportedElements" minOccurs="0"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ReplyToJobRequest" type="ReplyToJobRequestType"/>
	<xs:complexType name="ReplyToJobResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="ReplyToJobResponse" type="ReplyToJobResponseType"/>
	<xs:complexType name="ReportJobStateRequestType">
		<xs:sequence>
			<xs:element ref="DateTimeAtCreation" minOccurs="0"/>
			<xs:element ref="DateTimeAtProcessing" minOccurs="0"/>
			<xs:element ref="DateTimeAtCompleted" minOccurs="0"/>
			<xs:element ref="DestinationJobUuid"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="ImpressionsCompleted"/>
			<xs:element ref="JobName"/>
			<xs:element ref="JobOriginatingUserName"/>
			<xs:element ref="JobState"/>
			<xs:element ref="JobStateReasons" minOccurs="0"/>
			<xs:element ref="SourceJobUuid"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ReportJobStateRequest" type="ReportJobStateRequestType"/>
	<xs:complexType name="ReportJobStateResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="ReportJobStateResponse" type="ReportJobStateResponseType"/>
	<xs:complexType name="ReportPrinterStateRequestType">
		<xs:sequence>
			<xs:element ref="DateTimeAtLastUpdate" minOccurs="0"/>
			<xs:element ref="DestinationServiceUuid"/>
			<xs:element ref="ImpressionsCompleted"/>
			<xs:element ref="IsAcceptingJobs"/>
			<xs:element ref="QueuedJobCount"/>
			<xs:element ref="State"/>
			<xs:element ref="StateReasons" minOccurs="0"/>
			<xs:element ref="SourceServiceUuid"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="ReportPrinterStateRequest" type="ReportPrinterStateRequestType"/>
	<xs:complexType name="ReportPrinterStateResponseType">
		<xs:sequence/>
	</xs:complexType>
	<xs:element name="ReportPrinterStateResponse" type="ReportPrinterStateResponseType"/>
	<xs:element name="TimeOut" type="xs:int"/>
</xs:schema>

