<xsd:element name="set">
<xsd:annotation>
<xsd:documentation>The set element enables complex objects to be described. It is a recursive element in that each set element can contain additional set elements as children. Each set element defines characteristics that produce a matching set of objects. The possible characteristics are an object reference and a collection of filters. The object_reference refers to an existing OVAL Object. The filter element provides a reference to an existing OVAL State. A filter is used to eliminate certain objects from the set. Each filter is applied to each OVAL Object before the set_operator is applied. For example, if an object_reference points to an OVAL Object that is every file in a certain directory, a filter might be set up to limit the object set to only those files with a size less than 10 KB. If multiple filters are provided, then each filter is used separately against the defined object set. In other words, if an object matches any of the supplied filters, then it is thrown out of the set.</xsd:documentation>
<xsd:documentation>The required set_operator attribute defines how different child sets are combined to form the overall set of objects. For example, does one take the union of different sets or the intersection? For a description of the valid values please refer to the SetOperatorEnumeration simple type.</xsd:documentation>
<xsd:appinfo>
<sch:pattern id="setobjref" xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="/oval-def:oval_definitions/oval-def:objects/*/oval-def:set/oval-def:object_reference">
<sch:assert test="name(./../..) = name(/oval-def:oval_definitions/oval-def:objects/*[@id=current()])">
<sch:value-of select="../../@id" /> - Each object referenced by the set must be of the same type as parent object</sch:assert>
</sch:rule>
<sch:rule context="/oval-def:oval_definitions/oval-def:objects/*/oval-def:set/oval-def:set/oval-def:object_reference">
<sch:assert test="name(./../../..) = name(/oval-def:oval_definitions/oval-def:objects/*[@id=current()])">
<sch:value-of select="../../../@id" /> - Each object referenced by the set must be of the same type as parent object</sch:assert>
</sch:rule>
<sch:rule context="/oval-def:oval_definitions/oval-def:objects/*/oval-def:set/oval-def:set/oval-def:set/oval-def:object_reference">
<sch:assert test="name(./../../../..) = name(/oval-def:oval_definitions/oval-def:objects/*[@id=current()])">
<sch:value-of select="../../../../@id" /> - Each object referenced by the set must be of the same type as parent object</sch:assert>
</sch:rule>
</sch:pattern>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:choice>
<xsd:sequence>
<xsd:element ref="oval-def:set" minOccurs="1" maxOccurs="2" />
</xsd:sequence>
<xsd:sequence>
<xsd:element name="object_reference" type="oval:ObjectIDPattern" minOccurs="1" maxOccurs="2" />
<xsd:element name="filter" type="oval:StateIDPattern" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:choice>
<xsd:attribute name="set_operator" type="oval-def:SetOperatorEnumeration" use="optional" default="UNION" />
</xsd:complexType>
</xsd:element>
|