<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Schema for Invoke custom validation report  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
		xmlns="http://www.invoke-software.com/2015/custom-validation-report" 
		targetNamespace="http://www.invoke-software.com/2015/custom-validation-report" 
		elementFormDefault="qualified" 
		attributeFormDefault="unqualified">
	
	<!-- Type that defines the enumration for the severity attribute -->
	<xs:simpleType name="severityType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ERROR"/>
			<xs:enumeration value="WARNING"/>
			<xs:enumeration value="OK"/>
		</xs:restriction>
	</xs:simpleType>
	
	<!-- Type of the element that defines the result for a variable -->
	<xs:complexType name="variableType">	    
		<xs:sequence>
			<!-- Element that is variable result -->
			<xs:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:Name" use="required"/>	
		<xs:attribute name="value" type="xs:string"/>		
		<xs:attribute name="complete" type="xs:boolean" default="true"/>			
	</xs:complexType>	
	
	<!-- Type of the element that defines the result for a custom rule -->
	<xs:complexType name="ruleType">	    
		<xs:sequence>
			<!-- Element that is variable result -->
			<xs:element name="variable" type="variableType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="code" type="xs:string" use="required"/>	
		<xs:attribute name="label" type="xs:string"/>		
		<xs:attribute name="validated" type="xs:boolean" use="required"/>
		<xs:attribute name="message" type="xs:string"/>		
	    <xs:attribute name="severity" type="severityType"/>	
	    <xs:attribute name="evaluationTime" type="xs:string" use="required"/>		
	</xs:complexType>	
	
	<!-- Type of the base element that contains the validation results  -->
	<xs:complexType name="customValidationType">
	    <xs:sequence>
			<!-- Element that is a custom rule result -->
			<xs:element name="rule" type="ruleType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	    <xs:attribute name="validated" type="xs:boolean" use="required"/>
	    <xs:attribute name="evaluationTime" type="xs:string" use="required"/>		
	</xs:complexType>
	
	<!-- Base element that contains the validation results -->
	<xs:element name="customValidation" type="customValidationType" nillable="false"/>
</xs:schema>
