<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="urn:oasis:names:tc:dss:1.0:profiles:EPM:schema#" xmlns="urn:oasis:names:tc:dss:1.0:profiles:EPM:schema#" 
xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:epm="urn:oasis:names:tc:dss:1.0:profiles:EPM:schema#"
elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<xs:import namespace="urn:oasis:names:tc:dss:1.0:core:schema" schemaLocation="http://www.oasis-open.org/apps/org/workgroup/dss/download.php/20238/oasis-dss-1.0-core-spec-cd-r5-schema-extract.xsd"/>

<xs:element name="DocumentWithSignature">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="dss:Document"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="PostMarkedReceipt">
	<xs:complexType>
		<xs:sequence>
			<xs:choice>
				<xs:element name="PKCS7SignedReceipt" type="epm:PKCS7SignedReceiptType"/>
				<xs:element name="XMLSignedReceipt" type="epm:QualifiedDataType"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="OrganizationID" type="xs:string" nillable="true"/>

<xs:element name="DocumentContainsTemplate"/>

<xs:element name="StoreNonRepudiationEvidence"/>

<xs:element name="ReturnSignatureInfo"/>

<xs:element name="ReturnX509Info"/>

<xs:element name="IgnoreManifests"/>

	<xs:complexType name="TransactionKeyType">
		<xs:sequence>
			<xs:element name="Locator" type="epm:LocatorType"/>
			<xs:element name="Key" type="xs:string"/>
			<xs:element name="Sequence" type="xs:positiveInteger" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="LocatorType">
		<xs:sequence>
			<xs:element name="CountryCode" type="xs:string"/>
			<xs:element name="Version" type="xs:string"/>
			<xs:element name="ServiceProvider" type="xs:string" nillable="true"/>
			<xs:element name="Environment" type="xs:string" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="PKCS7SignedReceiptType">
		<xs:sequence>
			<xs:element name="Receipt" type="epm:ReceiptType"/>
			<xs:element name="ReceiptSignature" type="epm:QualifiedDataType"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="ReceiptType">
		<xs:sequence>
			<xs:element name="TransactionKey" type="epm:TransactionKeyType"/>
			<xs:element name="Requester" type="xs:string" nillable="true"/>
			<xs:element name="Operation" type="epm:ValidOperation"/>
			<xs:element name="TSAX509SubjectName" type="xs:string"/>
			<xs:element name="TimeStampValue" type="xs:string"/>
			<xs:element name="RevocationStatusQualifier" type="epm:ValidQualifier"/>
			<xs:element name="TimeStampToken" type="epm:QualifiedDataType" nillable="true" minOccurs="0" maxOccurs="1"/>
			<xs:element name="MessageImprint" type="xs:base64Binary" nillable="true"/>
			<xs:element name="PostMarkImage" type="epm:QualifiedDataType" nillable="true"/>
			<xs:element name="ReceiptMetadata" type="epm:ReceiptMetadataType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>

	<xs:simpleType name="ValidQualifier">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Checked"/>
			<xs:enumeration value="Not Checked"/>
			<xs:enumeration value="Not Applicable"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="QualifiedDataType">
		<xs:simpleContent>
			<xs:extension base="xs:base64Binary">
				<xs:attribute name="MimeType" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="ReceiptMetadataType">
		<xs:sequence>
			<xs:element name="Name" type="xs:string"/>
			<xs:choice>
				<xs:element name="Value" type="xs:string"/>
				<xs:element name="EncodedValue" type="epm:QualifiedDataType"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="SupportingInfoType">
		<xs:sequence>
			<xs:element name="BasicAuth" type="epm:BasicAuthType" nillable="true"/>
			<xs:element name="RequesterSignature" type="epm:QualifiedDataType" nillable="true"/>
			<xs:element name="AlternateIdentity" type="epm:AlternateIdentityType" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="BasicAuthType">
		<xs:sequence>
			<xs:element name="UserID" type="xs:string"/>
			<xs:element name="Password" type="xs:string" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="AlternateIdentityType" abstract="true">
		<xs:sequence>
			<xs:element name="IdentityToken" type="xs:anyType"/>
		</xs:sequence>
	</xs:complexType>

<xs:element name="IssuePostMarkedReceipt" type="epm:IssuePostMarkedReceiptType"/>

	<xs:complexType name="IssuePostMarkedReceiptType">
		<xs:sequence>
			<xs:element name="Location" type="epm:ValidLocation" minOccurs="0"/>
			<xs:element name="PostMarkImage" type="epm:PostMarkImageType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="PostMarkImageType">
		<xs:simpleContent>
			<xs:extension base="xs:boolean">
				<xs:attribute name="Format" type="xs:string" default="JPG"/>
				<xs:attribute name="Size" type="epm:ValidImageSize" default="Small"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:simpleType name="ValidLocation">
		<xs:restriction base="xs:string">
			<xs:enumeration value="standalone"/>
			<xs:enumeration value="embedded"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValidImageSize">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Small"/>
			<xs:enumeration value="Medium"/>
			<xs:enumeration value="Large"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ValidOperation">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Verify"/>
			<xs:enumeration value="Sign"/>
		</xs:restriction>
	</xs:simpleType>

<xs:element name="SignatureInfo" type="epm:SignatureInfoType"/>

	<xs:complexType name="SignatureInfoType">
		<xs:sequence>
			<xs:element name="SignedContent" type="epm:QualifiedDataType" nillable="true"/>
			<xs:element name="ContentHash" type="xs:string" nillable="true"/>
			<xs:element name="ContentHashAlgo" type="xs:string" nillable="true"/>
			<xs:element name="ContentEncryptAlgo" type="xs:string" nillable="true"/>
			<xs:element name="SigningTime" type="xs:string" nillable="true"/>
			<xs:element name="PKCS1" type="epm:QualifiedDataType" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

<xs:element name="X509Info" type="epm:X509InfoType"/>

	<xs:complexType name="X509InfoType">
		<xs:sequence>
			<xs:element name="X509Subject" type="xs:string"/>
			<xs:element name="X509Issuer" type="xs:string" nillable="true"/>
			<xs:element name="X509Serial" type="xs:string" nillable="true"/>
			<xs:element name="X509StatusSource" type="xs:string"/>
			<xs:element name="X509ValidFrom" type="xs:string"/>
			<xs:element name="X509ValidTo" type="xs:string"/>
			<xs:element name="X509Certificate" type="xs:string" nillable="true"/>
			<xs:element name="X509RevocationReason" type="xs:string" nillable="true"/>
			<xs:element name="X509RevocationReasonString" type="xs:string" nillable="true"/>
			<xs:element name="X509RevocationTime" type="xs:string" nillable="true"/>
			<xs:element name="X509ValidationData" type="epm:X509ValidationDataType" nillable="true"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="GenericValidationDataType" abstract="true">
		<xs:sequence>
			<xs:element name="GenericValidationData" type="xs:anyType"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="X509ValidationDataType">
		<xs:complexContent>
			<xs:extension base="epm:GenericValidationDataType">
				<xs:sequence>
					<xs:element name="X509ValidationData" type="epm:QualifiedDataType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

<xs:element name="SignatureSelector" type="epm:SignatureSelectorType"/>

	<xs:complexType name="SignatureSelectorType">
		<xs:sequence>
			<xs:choice>
				<xs:element name="NodeName" type="xs:string" maxOccurs="unbounded"/>
				<xs:element name="XPathSelector" type="epm:XPathSelectorType"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="XPathSelectorType">
		<xs:sequence>
			<xs:element name="XPath" type="xs:string"/>
			<xs:element name="NameSpace" type="xs:string" nillable="true"/>
			<xs:element name="Qualifer" type="xs:string" nillable="true"/>
		</xs:sequence>
	</xs:complexType> 

</xs:schema>
