<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="applied_fixer">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="name"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="applied_fixers">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="applied_fixer" maxOccurs="unbounded" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="diff" type="xs:string"/>

    <xs:element name="file">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="applied_fixers" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="diff" maxOccurs="1" minOccurs="0"/>
            </xs:sequence>
            <xs:attribute type="xs:byte" name="id" use="optional"/>
            <xs:attribute type="xs:string" name="name" use="optional"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="total">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:float" name="value"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="about">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="value"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="files">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="file" maxOccurs="unbounded" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="time">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="total"/>
            </xs:sequence>
            <xs:attribute type="xs:string" name="unit"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="memory">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute type="xs:float" name="value"/>
                    <xs:attribute type="xs:string" name="unit"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="report">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="about" maxOccurs="1" minOccurs="1"/>
                <xs:element ref="files"/>
                <xs:element ref="time" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="memory" maxOccurs="1" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
