<?xml version="1.0" encoding="UTF-8"?>
<!--
  This file contains the XML Schema of the SBR signature policy based on the principles of ETSI TR 102 038 V1.1.1 (2002-04)
  Version 2.0
  Released by the Dutch SBR Programme 
  Release date Tue Aug 8 12:00:00 2017
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:sbrsp="http://www.nltaxonomie.nl/sbr/signature_policy_schema/v2.0/signature_policy" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" targetNamespace="http://www.nltaxonomie.nl/sbr/signature_policy_schema/v2.0/signature_policy" elementFormDefault="qualified">
	<xsd:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="http://www.w3.org/2001/XMLSchema.xsd"/>
	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<xsd:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="http://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/>
	<xsd:element name="SignaturePolicy" type="sbrsp:SignaturePolicyType"/>
	<xsd:complexType name="SignaturePolicyType">
		<xsd:sequence>
			<xsd:element name="SignPolicyDigestAlg" type="ds:DigestMethodType"/>
			<xsd:element ref="ds:Transforms" minOccurs="0"/>
			<xsd:element name="SignPolicyInfo" type="sbrsp:SignPolicyInfoType">
				<xsd:unique name="unique-signpolicy_fieldofapplication-lang">
					<xsd:selector xpath="sbrsp:FieldOfApplication"/>
					<xsd:field xpath="@xml:lang"/>
				</xsd:unique>
			</xsd:element>
			<xsd:element name="SignPolicyDigest" type="ds:DigestValueType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SignPolicyInfoType">
		<xsd:sequence>
			<xsd:element name="SignPolicyIdentifier" type="sbrsp:ObjectIdentifierType">
				<xsd:unique name="unique-description-lang">
					<xsd:selector xpath="sbrsp:Description"/>
					<xsd:field xpath="@xml:lang"/>
				</xsd:unique>
			</xsd:element>
			<xsd:element name="DateOfIssue" type="xsd:date"/>
			<xsd:element name="PolicyIssuerName" type="xsd:string"/>
			<xsd:element name="FieldOfApplication" type="sbrsp:StringLanguageType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="SignatureValidationPolicy" type="sbrsp:SignatureValidationPolicyType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SignatureValidationPolicyType">
		<xsd:sequence>
			<xsd:element name="SigningPeriod" type="sbrsp:TimePeriodType"/>
			<xsd:element name="CommonRules" type="sbrsp:CommonRulesType"/>
			<xsd:element name="CommitmentRules" type="sbrsp:CommitmentRulesListType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="TimePeriodType">
		<xsd:sequence>
			<xsd:element name="NotBefore" type="xsd:date"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CommonRulesType">
		<xsd:sequence>
			<xsd:element name="SignerAndVerifierRules" type="sbrsp:SignerAndVerifierRulesType" minOccurs="0"/>
			<xsd:element name="SigningCertTrustCondition" type="sbrsp:SigningCertTrustConditionType" minOccurs="0"/>
			<xsd:element name="AlgorithmConstraintSet" type="sbrsp:AlgorithmConstraintSetType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SignerAndVerifierRulesType">
		<xsd:sequence>
			<xsd:element name="SignerRules" type="sbrsp:SignerRulesType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CommitmentRulesListType">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="CommitmentRule" type="sbrsp:CommitmentRuleType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CommitmentRuleType">
		<xsd:sequence>
			<xsd:element name="SelCommitmentTypes" type="sbrsp:SelectedCommitmentTypeList"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SelectedCommitmentTypeList">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="SelCommitmentType" type="sbrsp:SelectedCommitmentType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SelectedCommitmentType">
		<xsd:sequence>
			<xsd:element name="RecognizedCommitmentType" type="sbrsp:CommitmentType">
				<xsd:unique name="unique-commitment_fieldofapplication-lang">
					<xsd:selector xpath="sbrsp:FieldOfApplication"/>
					<xsd:field xpath="@xml:lang"/>
				</xsd:unique>
				<xsd:unique name="unique-semantics-lang">
					<xsd:selector xpath="sbrsp:Semantics"/>
					<xsd:field xpath="@xml:lang"/>
				</xsd:unique>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="StringLanguageType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute ref="xml:lang" use="required"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="ObjectIdentifierType">
		<xsd:sequence>
			<xsd:element name="Identifier" type="xades:IdentifierType"/>
			<xsd:element name="Description" type="sbrsp:StringLanguageType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="DocumentationReferences" type="xades:DocumentationReferencesType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CommitmentType">
		<xsd:sequence minOccurs="1">
			<xsd:element name="CommitmentIdentifier" type="sbrsp:ObjectIdentifierType"/>
			<xsd:element name="FieldOfApplication" type="sbrsp:StringLanguageType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Semantics" type="sbrsp:StringLanguageType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="SignerRulesType">
		<xsd:sequence>
			<xsd:element name="ExternalSignedObjects" type="xsd:boolean" minOccurs="0"/>
			<xsd:element name="MandatedSignedQProperties" type="sbrsp:QPropertiesListType"/>
			<xsd:element name="MandatedCertificateRef" type="sbrsp:CertificateReqType"/>
			<xsd:element name="MandatedCertificateInfo" type="sbrsp:CertificateReqType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="QPropertiesListType">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="QPropertyID" type="xsd:anyURI"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="CertificateReqType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="signerOnly"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="SigningCertTrustConditionType">
		<xsd:sequence>
			<xsd:element name="SignerRevReq" type="sbrsp:CertificateRevReqType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CertificateRevReqType">
		<xsd:sequence>
			<xsd:element name="EndRevReq" type="sbrsp:RevocationReqType"/>
			<xsd:element name="CACerts" type="sbrsp:RevocationReqType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="RevocationReqType">
		<xsd:sequence>
			<xsd:element name="EnuRevReq" type="sbrsp:EnuRevReqType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="EnuRevReqType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="clrcheck"/>
			<xsd:enumeration value="nocheck"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="AlgorithmConstraintSetType">
		<xsd:sequence>
			<xsd:element name="SignerAlgConstraints" type="sbrsp:AlgConstraintsListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="AlgConstraintsListType">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="AlgAndLength" type="sbrsp:AlgAndLengthType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="AlgAndLengthType">
		<xsd:sequence>
			<xsd:element name="AlgId" type="xsd:anyURI"/>
			<xsd:element name="MinKeyLength" type="xsd:integer" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
