<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.invoke.fr/2010/formula-xml-report" targetNamespace="http://www.invoke.fr/2010/formula-xml-report" elementFormDefault="qualified" attributeFormDefault="unqualified">
	
	<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>
	
	<xs:complexType name="preconditionType">
		<xs:attribute name="test" type="xs:string" use="required"/>
	</xs:complexType>
	
	<xs:complexType name="preconditionListType">
		<xs:sequence>
			<xs:element name="precondition" type="preconditionType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="valueType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="concept" type="xs:QName" use="required"/>
				<xs:attribute name="decimals" type="xs:string"/>				
		        <xs:attribute name="cells" type="xs:string"/>				
		        <xs:attribute name="sourceCells" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	
	<xs:complexType name="factType">
		<xs:sequence>
			<xs:any namespace="http://www.xbrl.org/2003/instance" processContents="skip"/> <!-- Instance context without the id attribute -->
			<xs:element name="value" type="valueType"/>
		</xs:sequence>
		<xs:attribute name="index" type="xs:integer" use="required"/>
	</xs:complexType>
	
	<xs:complexType name="variableType">
		<xs:sequence>
			<xs:element name="fact" type="factType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="value" type="xs:string"/>
	</xs:complexType>
	
	<xs:complexType name="evaluationType">
		<xs:sequence>
			<xs:element name="variable" type= "variableType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="index" type="xs:integer" use="required"/>
		<xs:attribute name="message" type="xs:string"/>
		<xs:attribute name="validated" type="xs:boolean"/>
		<xs:attribute name="severity" type="severityType"/>
	</xs:complexType>
	
	<xs:complexType name="assertionType">
		<xs:sequence>
			<xs:element name="preconditionList" type="preconditionListType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="evaluation" type="evaluationType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="message" type="xs:string"  minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="description" type="xs:string"/>
		<xs:attribute name="expression" type="xs:string"/>
		<xs:attribute name="validated" type="xs:boolean"/>
		<xs:attribute name="severity" type="severityType"/>
		<xs:attribute name="evaluationCount" type="xs:integer"/>
		<xs:attribute name="evaluationTime" type="xs:string"/>
	</xs:complexType>
	
	<xs:complexType name="assertionListType">
		<xs:sequence>
			<xs:element name="assertion" type="assertionType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="evaluationCount" type="xs:integer"/>
		<xs:attribute name="evaluationTime" type="xs:string"/>
		<xs:attribute name="validated" type="xs:boolean"/>
		<xs:attribute name="hasWarning" type="xs:boolean"/>
		<xs:attribute name="isComplete" type="xs:boolean"/>
		<xs:attribute name="message" type="xs:string"/>
	</xs:complexType>
	
	<xs:element name="assertionList" type="assertionListType" nillable="false"/>
</xs:schema>