<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="analysis" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="https://jeremylong.github.io/DependencyCheck/dependency-check.1.3.xsd">
    <xs:element name="analysis">
        <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                <xs:element name="scanInfo">
                    <xs:complexType>
                        <xs:sequence minOccurs="1" maxOccurs="1">
                            <xs:element name="engineVersion" type="xs:string" minOccurs="1" maxOccurs="1" />
                            <xs:sequence minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="dataSource">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                            <xs:element name="timestamp" type="xs:string" minOccurs="1" maxOccurs="1" />
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="projectInfo">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                            <xs:element name="reportDate" type="xs:string" minOccurs="1" maxOccurs="1" />
                            <xs:element name="credits" type="xs:string" minOccurs="1" maxOccurs="1" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="dependencies">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
                                        <xs:element name="filePath" type="xs:string" minOccurs="1" maxOccurs="1" />
                                        <xs:element name="md5" type="xs:string" minOccurs="1" maxOccurs="1" />
                                        <xs:element name="sha1" type="xs:string" minOccurs="1" maxOccurs="1" />
                                        <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
                                        <xs:element name="license" type="xs:string" minOccurs="0" maxOccurs="1" />
                                        <xs:element name="relatedDependencies" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="relatedDependency" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="filePath" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                <xs:element name="sha1" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                <xs:element name="md5" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                <xs:sequence>
                                                                    <xs:element name="identifier" minOccurs="0" maxOccurs="unbounded">
                                                                        <xs:complexType>
                                                                            <xs:sequence>
                                                                                <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                <xs:element name="url" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                            </xs:sequence>
                                                                            <xs:attribute name="type" type="xs:string" use="required" />
                                                                        </xs:complexType>
                                                                    </xs:element>
                                                                </xs:sequence>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="analysisExceptions" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="exception" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="message" minOccurs="0" maxOccurs="unbounded" />
                                                                <xs:element name="stackTrace" minOccurs="0" maxOccurs="unbounded">
                                                                    <xs:complexType>
                                                                        <xs:sequence>
                                                                            <xs:element name="trace" minOccurs="0" maxOccurs="unbounded" />
                                                                        </xs:sequence>
                                                                    </xs:complexType>
                                                                </xs:element>
                                                                <xs:element name="innerException" minOccurs="0" maxOccurs="unbounded">
                                                                    <xs:complexType>
                                                                        <xs:sequence>
                                                                            <xs:element name="message" minOccurs="0" maxOccurs="unbounded" />
                                                                            <xs:element name="stackTrace" minOccurs="0" maxOccurs="unbounded">
                                                                                <xs:complexType>
                                                                                    <xs:sequence>
                                                                                        <xs:element name="trace" minOccurs="0" maxOccurs="unbounded" />
                                                                                    </xs:sequence>
                                                                                </xs:complexType>
                                                                            </xs:element>
                                                                        </xs:sequence>
                                                                    </xs:complexType>
                                                                </xs:element>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="evidenceCollected" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="evidence" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="source" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                <xs:element name="value" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                            </xs:sequence>
                                                            <xs:attribute name="type" type="xs:string" use="required" />
                                                            <xs:attribute name="confidence" type="xs:string" use="required" />
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="identifiers" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:sequence>
                                                        <xs:element name="identifier" minOccurs="0" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                <xs:sequence>
                                                                    <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="url" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                    <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                </xs:sequence>
                                                                <xs:attribute name="type" type="xs:string" use="required" />
                                                                <xs:attribute name="confidence" type="xs:string" use="optional" />
                                                            </xs:complexType>
                                                        </xs:element>
                                                    </xs:sequence>
                                                    <xs:sequence>
                                                        <xs:element name="suppressedIdentifier" minOccurs="0" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                <xs:sequence>
                                                                    <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="url" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                    <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                </xs:sequence>
                                                                <xs:attribute name="type" type="xs:string" use="required" />
                                                                <xs:attribute name="confidence" type="xs:string" use="optional" />
                                                            </xs:complexType>
                                                        </xs:element>
                                                    </xs:sequence>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="vulnerabilities" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:sequence>
                                                        <xs:element name="vulnerability" minOccurs="0" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                <xs:sequence>
                                                                    <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssScore" type="xs:decimal" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssAccessVector" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssAccessComplexity" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssAuthenticationr" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssConfidentialImpact" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssIntegrityImpact" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssAvailabilityImpact" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="severity" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cwe" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                    <xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="references" minOccurs="0" maxOccurs="1">
                                                                        <xs:complexType>
                                                                            <xs:sequence>
                                                                                <xs:element name="reference" minOccurs="0" maxOccurs="unbounded">
                                                                                    <xs:complexType>
                                                                                        <xs:sequence>
                                                                                            <xs:element name="source" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                            <xs:element name="url" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                            <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                        </xs:sequence>
                                                                                    </xs:complexType>
                                                                                </xs:element>
                                                                            </xs:sequence>
                                                                        </xs:complexType>
                                                                    </xs:element>
                                                                    <xs:element name="vulnerableSoftware" minOccurs="0" maxOccurs="1">
                                                                        <xs:complexType>
                                                                            <xs:sequence>
                                                                                <xs:element name="software" minOccurs="0" maxOccurs="unbounded">
                                                                                    <xs:complexType>
                                                                                        <xs:simpleContent>
                                                                                            <xs:extension base="xs:string">
                                                                                                <xs:attribute name="allPreviousVersion" type="xs:boolean" />
                                                                                            </xs:extension>
                                                                                        </xs:simpleContent>
                                                                                    </xs:complexType>
                                                                                </xs:element>
                                                                            </xs:sequence>
                                                                        </xs:complexType>
                                                                    </xs:element>
                                                                </xs:sequence>
                                                            </xs:complexType>
                                                        </xs:element>
                                                    </xs:sequence>
                                                    <xs:sequence>
                                                        <xs:element name="suppressedVulnerability" minOccurs="0" maxOccurs="unbounded">
                                                            <xs:complexType>
                                                                <xs:sequence>
                                                                    <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cvssScore" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="severity" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="cwe" type="xs:string" minOccurs="0" maxOccurs="1" />
                                                                    <xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                    <xs:element name="references" minOccurs="0" maxOccurs="1">
                                                                        <xs:complexType>
                                                                            <xs:sequence>
                                                                                <xs:element name="reference" minOccurs="0" maxOccurs="unbounded">
                                                                                    <xs:complexType>
                                                                                        <xs:sequence>
                                                                                            <xs:element name="source" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                            <xs:element name="url" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                            <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
                                                                                        </xs:sequence>
                                                                                    </xs:complexType>
                                                                                </xs:element>
                                                                            </xs:sequence>
                                                                        </xs:complexType>
                                                                    </xs:element>
                                                                    <xs:element name="vulnerableSoftware" minOccurs="0" maxOccurs="1">
                                                                        <xs:complexType>
                                                                            <xs:sequence>
                                                                                <xs:element name="software" minOccurs="0" maxOccurs="unbounded">
                                                                                    <xs:complexType>
                                                                                        <xs:simpleContent>
                                                                                            <xs:extension base="xs:string">
                                                                                                <xs:attribute name="allPreviousVersion" type="xs:boolean" />
                                                                                            </xs:extension>
                                                                                        </xs:simpleContent>
                                                                                    </xs:complexType>
                                                                                </xs:element>
                                                                            </xs:sequence>
                                                                        </xs:complexType>
                                                                    </xs:element>
                                                                </xs:sequence>
                                                            </xs:complexType>
                                                        </xs:element>
                                                    </xs:sequence>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>