<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by SPARK Team (Altran Praxis Limited) -->
<!-- sparkreport.xsd -->
<!-- $Id: sparkreport.xsd 15760 2010-01-25 13:18:18Z spark $ -->
<!--W3C Schema generated by XMLSPY v2004 rel. 3 U (http://www.xmlspy.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<!-- Simple non-container elements -->
	<xs:element name="filename" type="xs:string"/>
	<xs:element name="index" type="xs:string"/>
	<xs:element name="compiler_item">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="item" type="xs:string" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="listing" type="xs:string"/>
	<xs:element name="suppressed" type="xs:string"/>
	<xs:element name="symbol">
		<xs:complexType mixed="true">
			<xs:attribute name="id" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="option" type="xs:string"/>
	<xs:element name="pragma"/>
	<xs:element name="unit">
		<xs:complexType>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="type" type="xs:string" use="required"/>
			<xs:attribute name="status" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<!-- Justifications construct -->
	<xs:element name="full_justification">
		<xs:complexType mixed="true">
			<xs:attribute name="class" type="xs:string" use="required"/>
			<xs:attribute name="code" type="xs:int" use="required"/>
			<xs:attribute name="line_from" type="xs:int" use="required"/>
			<xs:attribute name="line_to" type="xs:string" use="required"/>
			<xs:attribute name="match_no" type="xs:int" use="required"/>
			<xs:attribute name="match_line" type="xs:int" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="brief_justifications"/>
        <xs:complexType mixed="true">
            <xs:attribute name="matched" type="xs:int" use="required"/>
            <xs:attribute name="unmatched" type="xs:int"/>
        </xs:complexType>
    </xs:element>
	<xs:element name="full_justifications">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="full_justification"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="justifications_section">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="full_justifications"/>
				<xs:element ref="brief_justifications"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<!-- Message construct -->
	<xs:element name="message">
		<xs:complexType mixed="true">
			<xs:attribute name="class" type="xs:string" use="required"/>
			<xs:attribute name="code" type="xs:int" use="required"/>
			<xs:attribute name="line" type="xs:int" use="required"/>
			<xs:attribute name="offset" type="xs:int" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Report container -->
	<xs:element name="report">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="prologue"/>
				<xs:element ref="results"/>
			</xs:sequence>
			<xs:attribute name="version" type="xs:float" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Prologue section, strict sequence with exactly one occurance of each section -->
	<xs:element name="prologue">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="commandline"/>
				<xs:element ref="indexes"/>
				<xs:element ref="metafiles"/>
				<xs:element ref="warnings_config"/>
				<xs:element ref="compiler_data"/>
				<xs:element ref="target_config"/>
				<xs:element ref="units_notfound"/>
				<xs:element ref="cyclic_requirements"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<!-- Major prologue container sections -->
	<xs:element name="commandline">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="filename" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="option" minOccurs="0" maxOccurs="unbounded"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="compiler_data">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="compiler_item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="cyclic_requirements">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="unit"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="indexes">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="index"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="target_config">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="filename"/>
				<xs:element ref="messages" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="messages">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="message"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="metafiles">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="metafile"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="metafile">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="metafile"/>
				<xs:element ref="filename"/>
			</xs:choice>
			<xs:attribute name="name" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="units_notfound">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="unit"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="warnings_config">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="suppressed"/>
				<xs:element name="pragma"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<!-- Results section -->
	<xs:element name="results">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="file"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="file">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="message"/>
				<xs:element ref="units"/>
				<xs:element ref="justifications_section"/>
			</xs:choice>
			<xs:attribute name="filename" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="units">
		<xs:complexType>
			<xs:all>
				<xs:element ref="unit"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
</xs:schema>
