<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="1.0">

	<xsd:element name="report" type="reportType">
	<xsd:complexType>
    	    <xsd:element name="info" />
            <xsd:element name="config"/>
            <xsd:element name="plugins">
            <xsd:complexType>
            	<xsd:element name="error" type="errorType" minOccurs="0" />
            </xsd:complexType>
            </xsd:element>
            <xsd:element name="results">
	    <xsd:complexType>
	    	<xsd:element name="result">
	        <xsd:complexType>
		<xsd:sequence>
		    <xsd:element name="host" type="hostType" />
		    <xsd:element name="date">
		    <xsd:complexType>	
		    <xsd:sequence>
		        <xsd:element name="start" type="xsd:date" />
			<xsd:element name="end" type="xsd:date" />
		    </xsd:sequence>
		        <xsd:element name="error" type="errorType" minOccurs="0" />									
		    </xsd:complexType>          						
		    </xsd:element>
		    <xsd:element name="ports">  
		    <xsd:complexType>          						
			<xsd:element name="port" type="portType">
			<xsd:complexType>								
		    	    <xsd:element name="service" type="serviceType" />
			    <xsd:element name="information" type="informationType" />
			</xsd:complexType>
			</xsd:element>            								
		    </xsd:complexType>
		    </xsd:element> 
		</xsd:sequence>
		</xsd:complexType>
		</xsd:element>
	    </xsd:complexType>
            </xsd:element>
    	</xsd:complexType>
   	</xsd:element>

<!-- complex type definitions -->

        <xsd:complexType name="reportType">
		<xsd:attribute name="version" type="versionType" />
	</xsd:complexType>
	
	<xsd:complexType name="hostType">
		<xsd:attribute name="name" type="xsd:string" />
		<xsd:attribute name="ip" type="xsd:string" />
        </xsd:complexType>
    
        <xsd:complexType name="portType">
	    	<xsd:attribute name="protocol" type="protocolType" />
	        <xsd:attribute name="portid" type="xsd:numeric" />
	</xsd:complexType>
	
	<xsd:complexType name="serviceType">
		<xsd:attribute name="name" type="xsd:string" />
		<xsd:attribute name="method" type="methodType" />
		<xsd:attribute name="conf" type="serviceConfType" />
	</xsd:complexType>
	
	<xsd:complexType name="informationType">
		<xsd:element name="severity" type="severityType" />
		<xsd:element name="id" type="xsd:numeric" />
		<xsd:element name="data" type="xsd:string" />	
	<xsd:complexType>
	
	<xsd:complexType name="errorType">
		<xsd:attribute name="txt" type="xsd:string" />
	</xsd:complexType>

<!-- enumerated types -->

	<xsd:simpleType name="versionType">
	<xsd:restriction base="xsd:string">
         	<xsd:enumeration value="1.4"/>    	         	         	
      	</xsd:restriction>
   	</xsd:simpleType>
	
	<xsd:simpleType name="protocolType">
	<xsd:restriction base="xsd:string">
         	<xsd:enumeration value="tcp"/>    	         	         	
         	<xsd:enumeration value="udp"/>    	         	         	
      	</xsd:restriction>
   	</xsd:simpleType>   

	<xsd:simpleType name="serviceConfType">
	<xsd:restriction base="xsd:numeric">
         	<xsd:enumeration value="3"/>
         	<xsd:enumeration value="5"/>
         	<xsd:enumeration value="10"/>    	         	         	
      	</xsd:restriction>
   	</xsd:simpleType> 

	<xsd:simpleType name="severityType">
		<xsd:restriction base="xsd:string">
         	<xsd:enumeration value="Security Note"/>
         	<xsd:enumeration value="Security Warning"/>
         	<xsd:enumeration value="Security Hole"/>    	         	         	
      	</xsd:restriction>
   	</xsd:simpleType> 

	<xsd:simpleType name="methodType">
	<xsd:restriction base="xsd:string">
         	<xsd:enumeration value="nessus"/>
      	</xsd:restriction>
   	</xsd:simpleType> 
</xsd:schema>
