<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:ind-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" 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://oval.mitre.org/XMLSchema/oval-definitions-5" schemaLocation="oval-definitions-schema.xsd" />
	<!-- =============================================================================== -->
	<!-- ================================  FAMILY TEST  ================================ -->
	<!-- =============================================================================== -->
	<xsd:element name="family_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="family_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType" />
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="family_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="family" type="ind-def:EntityStateFamilyType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!-- =============================================================================== -->
	<!-- ===============================  FILE MD5 TEST  =============================== -->
	<!-- =============================================================================== -->
	<xsd:element name="filemd5_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="filemd5_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType">
					<xsd:sequence>
						<xsd:choice minOccurs="1" maxOccurs="1">
							<xsd:element ref="oval-def:set" />
							<xsd:sequence>
								<xsd:element name="behaviors" type="ind-def:Filemd5Behaviors" minOccurs="0" maxOccurs="1" />
								<xsd:element name="path" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
								<xsd:element name="filename" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="filemd5_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="path" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="filename" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="md5" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="Filemd5Behaviors">
		<xsd:attribute name="max_depth" use="optional" default="1">
			<xsd:simpleType>
				<xsd:restriction base="xsd:integer">
					<xsd:fractionDigits value="0" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="recurse_direction" use="optional" default="none">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="none" />
					<xsd:enumeration value="up" />
					<xsd:enumeration value="down" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- =======================  ENVIRONMENT VARIABLE TEST  =========================== -->
	<!-- =============================================================================== -->
	<xsd:element name="environmentvariable_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="environmentvariable_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType">
					<xsd:sequence>
						<xsd:choice minOccurs="1" maxOccurs="1">
							<xsd:element ref="oval-def:set" minOccurs="0" maxOccurs="1" />
							<xsd:sequence minOccurs="0" maxOccurs="1">
								<xsd:element name="name" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="environmentvariable_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="name" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="value" type="oval-def:EntityStateAnyType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!-- =============================================================================== -->
	<!-- ===========================  TEXT FILE CONTENT TEST  ========================== -->
	<!-- =============================================================================== -->
	<xsd:element name="textfilecontent_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="textfilecontent_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType">
					<xsd:sequence>
						<xsd:choice minOccurs="1" maxOccurs="1">
							<xsd:element ref="oval-def:set" minOccurs="0" maxOccurs="1" />
							<xsd:sequence minOccurs="0" maxOccurs="1">
								<xsd:element name="behaviors" type="ind-def:TextfilecontentBehaviors" minOccurs="0" maxOccurs="1" />
								<xsd:element name="path" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
								<xsd:element name="filename" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
								<xsd:element name="line" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="textfilecontent_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="path" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="filename" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="line" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="subexpression" type="oval-def:EntityStateAnyType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="TextfilecontentBehaviors">
		<xsd:attribute name="max_depth" use="optional" default="1">
			<xsd:simpleType>
				<xsd:restriction base="xsd:integer">
					<xsd:fractionDigits value="0" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="recurse_direction" use="optional" default="none">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="none" />
					<xsd:enumeration value="up" />
					<xsd:enumeration value="down" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- ===============================  UNKNOWN TEST  ================================ -->
	<!-- =============================================================================== -->
	<xsd:element name="unknown_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType" />
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!-- =============================================================================== -->
	<!-- ===============================  VARIABLE TEST  =============================== -->
	<!-- =============================================================================== -->
	<xsd:element name="variable_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="variable_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType">
					<xsd:sequence>
						<xsd:choice minOccurs="1" maxOccurs="1">
							<xsd:element ref="oval-def:set" minOccurs="0" maxOccurs="1" />
							<xsd:sequence minOccurs="0" maxOccurs="1">
								<xsd:element name="var_ref" type="ind-def:EntityObjectVariableRefType" minOccurs="1" maxOccurs="1" />
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="variable_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="var_ref" type="ind-def:EntityStateVariableRefType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="value" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<!-- =============================================================================== -->
	<!-- ===========================  XML FILE CONTENT TEST  =========================== -->
	<!-- =============================================================================== -->
	<xsd:element name="xmlfilecontent_test" substitutionGroup="oval-def:test">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:TestType">
					<xsd:sequence>
						<xsd:element name="object" type="oval-def:ObjectRefType" minOccurs="1" maxOccurs="1" />
						<xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="xmlfilecontent_object" substitutionGroup="oval-def:object">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:ObjectType">
					<xsd:sequence>
						<xsd:choice minOccurs="1" maxOccurs="1">
							<xsd:element ref="oval-def:set" minOccurs="0" maxOccurs="1" />
							<xsd:sequence minOccurs="0" maxOccurs="1">
								<xsd:element name="behaviors" type="ind-def:XmlfilecontentBehaviors" minOccurs="0" maxOccurs="1" />
								<xsd:element name="path" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
								<xsd:element name="filename" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
								<xsd:element name="xpath" type="oval-def:EntityObjectStringType" minOccurs="1" maxOccurs="1" />
							</xsd:sequence>
						</xsd:choice>
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="xmlfilecontent_state" substitutionGroup="oval-def:state">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="oval-def:StateType">
					<xsd:sequence>
						<xsd:element name="path" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="filename" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="xpath" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
						<xsd:element name="value_of" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1" />
					</xsd:sequence>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="XmlfilecontentBehaviors">
		<xsd:attribute name="max_depth" use="optional" default="1">
			<xsd:simpleType>
				<xsd:restriction base="xsd:integer">
					<xsd:fractionDigits value="0" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="recurse_direction" use="optional" default="none">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="none" />
					<xsd:enumeration value="up" />
					<xsd:enumeration value="down" />
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<!-- =============================================================================== -->
	<!-- =============================================================================== -->
	<!-- =============================================================================== -->
	<xsd:complexType name="EntityStateFamilyType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-def:EntityStateStringType">
				<xsd:enumeration value="ios" />
				<xsd:enumeration value="macos" />
				<xsd:enumeration value="unix" />
				<xsd:enumeration value="windows" />
				<xsd:enumeration value="" />
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityObjectVariableRefType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-def:EntityObjectStringType">
				<xsd:pattern value="(oval:[A-Za-z\-\.]+:var:[1-9][0-9]*){0,}" />
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="EntityStateVariableRefType">
		<xsd:simpleContent>
			<xsd:restriction base="oval-def:EntityStateStringType">
				<xsd:pattern value="(oval:[A-Za-z\-\.]+:var:[1-9][0-9]*){0,}" />
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>
</xsd:schema>
