<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:oval-sc="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5" elementFormDefault="qualified" version="5.0">
	<xsd:import namespace="http://oval.mitre.org/XMLSchema/oval-common-5" schemaLocation="oval-common-schema.xsd" />
	<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd" />
	<!-- =============================================================================== -->
	<!-- =============================================================================== -->
	<!-- =============================================================================== -->
	<xsd:element name="oval_system_characteristics">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="generator" type="oval:GeneratorType" minOccurs="1" maxOccurs="1" />
				<xsd:element name="system_info" type="oval-sc:SystemInfoType" minOccurs="1" maxOccurs="1" />
				<xsd:element name="collected_objects" type="oval-sc:CollectedObjectsType" minOccurs="0" maxOccurs="1" />
				<xsd:element name="system_data" type="oval-sc:SystemDataType" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="ds:Signature" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:key name="objectKey">
			<xsd:selector xpath="oval-sc:collected_objects/oval-sc:object" />
			<xsd:field xpath="@id" />
			<xsd:field xpath="@version" />
			<xsd:field xpath="@variable_instance" />
		</xsd:key>
		<xsd:key name="itemKey">
			<xsd:selector xpath="oval-sc:system_data/*" />
			<xsd:field xpath="@id" />
		</xsd:key>
		<xsd:keyref name="itemKeyRef" refer="oval-sc:itemKey">
			<xsd:selector xpath="oval-sc:collected_objects/oval-sc:object/oval-sc:reference" />
			<xsd:field xpath="@item_ref" />
		</xsd:keyref>
	</xsd:element>
	<!-- =============================================================================== -->
	<!-- =================================  GENERATOR  ================================= -->
	<!-- =============================================================================== -->
	<!--
		The GeneratorType is defined by the oval shared schema.  Please refer to
		that documentation for a description of the complex type.
	 -->
	<!-- =============================================================================== -->
	<!-- ================================  SYSTEM INFO  ================================ -->
	<!-- =============================================================================== -->
	<xsd:complexType name="SystemInfoType">
		<xsd:sequence>
			<xsd:element name="os_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="os_version" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="architecture" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="primary_host_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="interfaces" type="oval-sc:InterfacesType" minOccurs="1" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="InterfacesType">
		<xsd:sequence>
			<xsd:element name="interface" type="oval-sc:InterfaceType" minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="InterfaceType">
		<xsd:sequence>
			<xsd:element name="interface_name" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="ip_address" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="mac_address" type="xsd:string" minOccurs="1" maxOccurs="1" />
		</xsd:sequence>
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- =============================  COLLECTED OBJECTS  ============================= -->
	<!-- =============================================================================== -->
	<xsd:complexType name="CollectedObjectsType">
		<xsd:sequence>
			<xsd:element name="object" type="oval-sc:ObjectType" minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ObjectType">
		<xsd:sequence>
			<xsd:element name="message" type="oval:MessageType" minOccurs="0" maxOccurs="unbounded" />
			<xsd:element name="variable_value" type="oval-sc:VariableValueType" minOccurs="0" maxOccurs="unbounded" />
			<xsd:element name="reference" type="oval-sc:ReferenceType" minOccurs="0" maxOccurs="unbounded" />
		</xsd:sequence>
		<xsd:attribute name="id" type="oval:ObjectIDPattern" use="required" />
		<xsd:attribute name="version" type="xsd:integer" use="required" />
		<xsd:attribute name="variable_instance" type="xsd:integer" use="optional" default="1" />
		<xsd:attribute name="flag" type="oval-sc:FlagEnumeration" use="required" />
	</xsd:complexType>
	<xsd:complexType name="VariableValueType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:anySimpleType">
				<xsd:attribute name="variable_id" type="oval:VariableIDPattern" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="ReferenceType">
		<xsd:attribute name="item_ref" type="oval:ItemIDPattern" use="required" />
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- ================================  SYSTEM DATA  ================================ -->
	<!-- =============================================================================== -->
	<xsd:complexType name="SystemDataType">
		<xsd:sequence>
			<xsd:element ref="oval-sc:item" minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="item" type="oval-sc:ItemType" abstract="true" />
	<xsd:complexType name="ItemType">
		<xsd:sequence>
			<xsd:element name="message" type="oval:MessageType" minOccurs="0" maxOccurs="1" />
		</xsd:sequence>
		<xsd:attribute name="id" type="oval:ItemIDPattern" use="required" />
		<xsd:attribute name="status" type="oval-sc:StatusEnumeration" use="optional" default="exists" />
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- ===============================  ENUMERATIONS  ================================ -->
	<!-- =============================================================================== -->
	<xsd:simpleType name="FlagEnumeration">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="error" />
			<xsd:enumeration value="complete" />
			<xsd:enumeration value="incomplete" />
			<xsd:enumeration value="does not exist" />
			<xsd:enumeration value="not collected" />
			<xsd:enumeration value="not applicable" />
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="StatusEnumeration">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="error" />
			<xsd:enumeration value="exists" />
			<xsd:enumeration value="does not exist" />
			<xsd:enumeration value="not collected" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- =============================================================================== -->
	<!-- ===============================  ENTITY TYPES  ================================ -->
	<!-- =============================================================================== -->
	<xsd:complexType name="EntityItemBaseType" abstract="true">
		<xsd:simpleContent>
			<xsd:extension base="xsd:anySimpleType">
				<xsd:attribute name="datatype" type="oval:DatatypeEnumeration" use="optional" default="string" />
				<xsd:attribute name="status" type="oval-sc:StatusEnumeration" use="optional" default="exists" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityItemAnyType">
		<xsd:simpleContent>
			<xsd:extension base="oval-sc:EntityItemBaseType" />
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityItemBoolType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-sc:EntityItemBaseType">
				<xsd:simpleType>
					<xsd:union memberTypes="xsd:boolean oval:EmptyStringType" />
				</xsd:simpleType>
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityItemFloatType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-sc:EntityItemBaseType">
				<xsd:simpleType>
					<xsd:union memberTypes="xsd:float oval:EmptyStringType" />
				</xsd:simpleType>
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityItemIntType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-sc:EntityItemBaseType">
				<xsd:simpleType>
					<xsd:union memberTypes="xsd:integer oval:EmptyStringType" />
				</xsd:simpleType>
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityItemStringType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-sc:EntityItemBaseType">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string" />
				</xsd:simpleType>
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
</xsd:schema>
