MINI MINI MANI MO
<?xml version="1.0"?>
<!-- $Header: opsm/cv/cvdata/prereq.xsd /main/33 2016/12/18 21:31:41 maboddu Exp $ -->
<!--
Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
NAME
prereq.xsd - CVU prereq schema
DESCRIPTION
XML schema for CVU prereq xmls
NOTES
MODIFIED (MM/DD/YY)
maboddu 09/30/16 - Fix bug#24524511 - Enable prereq.xml to have
RELAX_PERCENTAGE attribute
maboddu 09/01/16 - Fix bug#22809593 - add support for SHMMAX in STEP
element
maboddu 03/18/16 - Add severity type FATAL
maboddu 11/05/14 - Enhance CONDITION schema to allow flexible
conditions
prajm 05/23/14 - corrected the condition to KERNEL_GROUP
ptare 01/22/14 - add support for default shell limit values
nvira 03/30/12 - add syntax for upgrade suitability
nvira 10/18/11 - add RIM attribute
nvira 05/26/11 - add section for RAC home patches
nvira 04/12/11 - add check oracle patches
nvira 05/10/10 - add range to condition
nvira 02/11/10 - XbranchMerge msingal_bug-8653583 from main
ptare 01/18/10 - Bug#8655778 Add Property EQ
ptare 10/20/09 - updated for ENV_VAR_LIST element
nvira 05/03/09 - update Architecture element to allow multiple
architectures
nvira 04/24/09 - add attribute for package architecture
nvira 03/11/09 - update xsd for run level
nvira 02/02/09 - add min max attributes to swap space
nvira 10/12/08 - add ospatch tag
nvira 02/29/08 - Creation
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
elementFormDefault="qualified">
<xs:element name="HOST">
<xs:complexType>
<xs:all>
<xs:element name="SYSTEM" type="SYSTEM_TYPE"
minOccurs="0" maxOccurs="1" />
<xs:element name="CERTIFIED_SYSTEMS" type="CERTIFIED_SYSTEMS_TYPE"
minOccurs="1" maxOccurs="1" />
<xs:element name="REFERENCE_DEVICES" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SCRIPTS" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="USER_INPUTS" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DIRS" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NETWORK" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ORACLE_HOME" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="PLATID" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="SYSTEM_TYPE">
<xs:all>
<xs:element name="MEMORY" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="PHYSICAL_MEMORY" minOccurs="1"
maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required"/>
<xs:attribute name="RIM" type="NonNegativeDouble" use="optional"/>
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE"
use="required" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE"
use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="AVAILABLE_MEMORY" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required"/>
<xs:attribute name="RIM" type="NonNegativeDouble" use="optional"/>
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE"
use="required" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE"
use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="SWAP_SIZE" type="SWAP_SIZE_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="SPACE" type="SPACE_TYPE" minOccurs="0"
maxOccurs="1" />
<xs:element name="USERS_GROUPS" type="USERS_GROUPS_TYPE"
minOccurs="0" maxOccurs="1" />
<xs:element name="RUNLEVEL" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="LIST" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="VALUE" minOccurs="1" maxOccurs="unbounded" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="CURRENT" use="optional">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="9" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="DEFAULT" use="optional">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="9" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="SHELL_LIMIT_CHECKS" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:group ref="SHELL_LIMITS_GROUP" />
</xs:complexType>
</xs:element>
<xs:element name="PROCESS_CHECKS" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<!--
Use group reference to allow nesting of CHOICE, CONDITION & PROCESS_CHECK tags
-->
<xs:group ref="PROCESSCHECKS_GROUP" minOccurs="0"
maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="ORACLE_PATCH_CHECKS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="SOURCE_HOME_PATCHES" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="ORACLE_PATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="DESTINATION_HOME_PATCHES" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="ORACLE_PATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="RAC_HOME_PATCHES" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="ORACLE_PATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UPGRADE_SUITABILITY_MATRIX" minOccurs="0" maxOccurs="1" type="UPGRADE_SUITABILITY_MATRIX_TYPE" />
</xs:all>
</xs:complexType>
<xs:complexType name="CERTIFIED_SYSTEMS_TYPE">
<xs:sequence>
<xs:element name="OPERATING_SYSTEM" type="OPERATING_SYSTEM_TYPE"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SPACE_TYPE">
<xs:sequence>
<xs:element name="LOC" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<!--
NOTE: Either VAR or VALUE must be specified. It is not possible to mandate to mandate one attribute over the other in the grammar.
The either or is enforced while constructing the task list in Java.
-->
<xs:attribute name="VAR" type="xs:string" use="optional" />
<xs:attribute name="VALUE" type="xs:string" use="optional" />
<xs:attribute name="SIZE" type="NonNegativeDouble" use="required"/>
<xs:attribute name="RIM" type="NonNegativeDouble" use="optional" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE"
use="required" />
<xs:attribute name="TEMP" type="xs:boolean" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="STORAGE_UNITS_TYPE">
<xs:restriction base="xs:string">
<xs:enumeration value="B" />
<xs:enumeration value="KB" />
<xs:enumeration value="MB" />
<xs:enumeration value="GB" />
<xs:enumeration value="TB" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RANGE_OPERATOR_TYPE">
<xs:restriction base="xs:string">
<xs:enumeration value="ATLEAST" />
<xs:enumeration value="ATMOST" />
<xs:enumeration value="GREATER_THAN" />
<xs:enumeration value="LESS_THAN" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SEVERITY_TYPE">
<xs:restriction base="xs:string">
<xs:enumeration value="FATAL" />
<xs:enumeration value="CRITICAL" />
<xs:enumeration value="IGNORABLE" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonNegativeDouble">
<xs:restriction base="xs:double">
<xs:minInclusive value="0.0" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="USERS_GROUPS_TYPE">
<xs:group ref="USERS_GROUPS_XSDGROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
<xs:group name="USERS_GROUPS_XSDGROUP">
<xs:choice>
<xs:element name="USER" type="USER_TYPE" />
<xs:element name="GROUP" type="GROUP_TYPE" />
<xs:element name="CONDITION" type="USER_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="USER_TYPE">
<xs:sequence>
<xs:element name="GROUP" minOccurs="0" maxOccurs="unbounded" type="GROUP_TYPE" />
</xs:sequence>
<!--
NOTE: Either VAR or VALUE must be specified. It is not possible to mandate to mandate one attribute over the other in the grammar.
The either or is enforced while constructing the task list in Java.
-->
<xs:attribute name="VAR" type="xs:string" use="optional" />
<xs:attribute name="VALUE" type="xs:string" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
<xs:complexType name="GROUP_TYPE">
<!--
NOTE: Either VAR or VALUE must be specified. It is not possible to mandate to mandate one attribute over the other in the grammar.
The either or is enforced while constructing the task list in Java.
-->
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="VALUE" type="xs:string"
use="optional" />
<xs:attribute name="ACTIVE" type="xs:boolean"
use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
<xs:complexType name="USER_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="USERS_GROUPS_XSDGROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="ELSE" type="USER_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<!--
NOTE: Swap size can be specified interms of multiple of Physical Memory or as an absolute value.
Thus either of the following are valid expressions for Swap size:
<SWAP_SIZE>
<STEPS>
<STEP NAME="PHYSICAL_MEMORY" ATLEAST="0" ATMOST="256" UNIT="MB" MULTIPLE="3"/>
<STEP NAME="PHYSICAL_MEMORY" GREATER_THAN="256" ATMOST="512" UNIT="MB" MULTIPLE="2"/>
<STEP NAME="PHYSICAL_MEMORY" GREATER_THAN="512" ATMOST="2048" UNIT="MB" MULTIPLE="1.5"/>
<STEP NAME="PHYSICAL_MEMORY" GREATER_THAN="2048" ATMOST="8192" UNIT="MB" MULTIPLE="1"/>
<STEP NAME="PHYSICAL_MEMORY" GREATER_THAN="8192" UNIT="MB" MULTIPLE="0.75"/>
</STEPS>
</SWAP_SIZE>
OR
<SWAP_SIZE VALUE="20" UNIT="MB"/>
It is not possible to enforce either or definition of swap size in the grammar. Hence, the definition combines the two form in a single declaration.
The either or is enforced while constructing the task list in Java.
-->
<xs:complexType name="SWAP_SIZE_TYPE">
<xs:all>
<xs:element name="STEPS" minOccurs="0" maxOccurs="1" type="STEPS_TYPE">
</xs:element>
</xs:all>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="optional" />
<xs:attribute name="RIM" type="NonNegativeDouble" use="optional"/>
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
<xs:complexType name="STEPS_TYPE">
<xs:sequence>
<xs:element name="MIN" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="MAX" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="STEP" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="NAME" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<!--
NOTE: In future swap size could be expressed as multiple of attributes other than PHYSICAL_MEMORY.
But currently we only support PHYSICAL_MEMORY.
-->
<xs:enumeration value="PHYSICAL_MEMORY" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<!--
NOTE: When specifying the range at least one of the range operators are mandatory out of VALUE, ATLEAST,ATMOST, GREATER_THAN, LESS_THAN.
It is not possible to express this requirement in XSD. It will be enforced in Java.
-->
<xs:attribute name="ATLEAST" type="NonNegativeDouble" use="optional" />
<xs:attribute name="ATMOST" type="NonNegativeDouble" use="optional" />
<xs:attribute name="GREATER_THAN" type="NonNegativeDouble" use="optional" />
<xs:attribute name="LESS_THAN" type="NonNegativeDouble" use="optional" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
<xs:attribute name="MULTIPLE" type="NonNegativeDouble" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="OPERATING_SYSTEM_TYPE">
<xs:all>
<xs:element name="VERSION" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="ARCHITECTURE" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="LIST" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="VALUE" minOccurs="1" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VALUE" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="OSPATCH_CHECKS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="OSPATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="NAME" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="VENDOR" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="ENV_VAR_LIST" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="ENV_VAR" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="NAME" type="xs:string" use="required" />
<xs:attribute name="MAX_LENGTH" type="xs:string" use="optional" />
<xs:attribute name="SET" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="KERNEL_VER" type="KERNEL_VER_TYPE" minOccurs="0" maxOccurs="1" />
<xs:element name="KERNEL_VERSION" minOccurs="0" maxOccurs="1">
<xs:complexType>
<!--
Use group reference to allow nesting of CHOICE, CONDITION & PROPERTY tags
-->
<xs:group ref="KERNEL_VERSION_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="KERNEL" minOccurs="0" maxOccurs="1">
<xs:complexType>
<!--
Use group reference to allow nesting of CHOICE, CONDITION & PROPERTY tags
-->
<xs:group ref="KERNEL_GROUP" minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="PACKAGES" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="PACKAGE_GROUP" minOccurs="0"
maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
<xs:element name="SYSTEM_FILES" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<!--
CVU does not care about the contents of this element. Hence the content 'any'
-->
<xs:any minOccurs="0" maxOccurs="unbounded"
processContents="lax" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="RELEASE" type="xs:string" use="required" />
</xs:complexType>
<xs:group name="KERNEL_VERSION_GROUP">
<xs:choice>
<xs:element name="KERNEL_VER" type="KERNEL_VER_TYPE" minOccurs="0" maxOccurs="1" />
<xs:element name="CHOICE" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="KERNEL_VER" type="KERNEL_VER_TYPE" minOccurs="1" maxOccurs="1" />
</xs:all>
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="DEFAULT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="KERNEL_VER" type="KERNEL_VER_TYPE" minOccurs="1" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:group>
<xs:complexType name="KERNEL_VER_TYPE">
<xs:attribute name="VALUE" type="xs:string" use="required" />
<xs:attribute name="RIM" type="xs:string" use="optional" />
</xs:complexType>
<xs:group name="KERNEL_GROUP">
<xs:choice>
<xs:element name="PROPERTY">
<xs:complexType>
<xs:sequence>
<xs:element name="STEPS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="MIN" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="MAX" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="NonNegativeDouble" use="required" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="STEP" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="NAME" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<!--
NOTE: In future Kernel parameters could be expressed as multiple of
attributes other than PHYSICAL_MEMORY and SHMMAX. But currently we only
support PHYSICAL_MEMORY and SHMMAX
-->
<xs:enumeration value="PHYSICAL_MEMORY" />
<xs:enumeration value="SHMMAX" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<!--
NOTE: When specifiying the range at least one of the range
operators are manadatory out of VALUE, ATLEAST,ATMOST,
GREATER_THAN, LESS_THAN. It is not possible to express this
requirement in XSD. It will be enforced in Java.
-->
<xs:attribute name="ATLEAST" type="NonNegativeDouble" use="optional" />
<xs:attribute name="ATMOST" type="NonNegativeDouble" use="optional" />
<xs:attribute name="GREATER_THAN" type="NonNegativeDouble" use="optional" />
<xs:attribute name="LESS_THAN" type="NonNegativeDouble" use="optional" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
<xs:attribute name="MULTIPLE" type="NonNegativeDouble" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="NAME" type="xs:string" use="required" />
<xs:attribute name="NAME2" type="xs:string" use="optional" />
<!--
NOTE: When specifying the range at least one of the range operators are mandatory of VALUE, ATLEAST,ATMOST, GREATER_THAN, LESS_THAN.
It is not possible to express this requirement in XSD. It will be enforced in Java.
-->
<xs:attribute name="VALUE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="KERNEL_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="CONDITION" type="KERNEL_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="KERNEL_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="KERNEL_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="ELSE" type="KERNEL_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:group name="OSPATCH_GROUP">
<xs:choice>
<xs:element name="OSPATCH" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="required" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="OSPATCH_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="CONDITION" type="OSPATCH_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="OSPATCH_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="OSPATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ELSE" type="OSPATCH_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:group name="ORACLE_PATCH_GROUP">
<xs:choice>
<xs:element name="ORACLE_PATCH" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="required" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="ORACLE_PATCH_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="CONDITION" type="ORACLE_PATCH_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="ORACLE_PATCH_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="ORACLE_PATCH_GROUP" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ELSE" type="ORACLE_PATCH_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:group name="PACKAGE_GROUP">
<xs:choice>
<!--
NOTE: Package value can be specified as a range or as an absolute value.
Thus either of the following are valid expressions for PACKAGE:
<PACKAGE NAME="glibc">
<RANGE ATLEAST="2.2.4-31.7" ATMOST="2.2.4-37.9">
<EXCLUDE VALUE="2.2.4-31.8"/>
<EXCLUDE ATLEAST="2.2.4-32" ATMOST="2.2.4-33"/>
</RANGE>
</PACKAGE>
OR
<PACKAGE NAME="libaio" VALUE="0.3.96" />
It is not possible to enforce either or definition of swap size in the grammar. Hence, the definition combines the two form in a single declaration.
The either or is enforced while constructing the task list in Java.
-->
<xs:element name="PACKAGE">
<xs:complexType>
<xs:sequence>
<!--
NOTE: When specifying the range at least one of the range operators are mandatory out of VALUE, ATLEAST,ATMOST, GREATER_THAN, LESS_THAN.
It is not possible to express this requirement in XSD. It will be enforced in Java.
-->
<xs:element name="RANGE" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="EXCLUDE" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN"
type="xs:string" use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<!--
NOTE: Either NAME or VAR must be specified. It is not possible to mandate to mandate one attribute over the other in the grammar.
The either or is enforced while constructing the task list in Java.
-->
<xs:attribute name="NAME" type="xs:string" use="optional" />
<xs:attribute name="VAR" type="xs:string" use="optional" />
<xs:attribute name="VALUE" type="xs:string" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="ARCHITECTURE" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="PACKAGE_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="CONDITION" type="PACKAGE_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="PACKAGE_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="PACKAGE_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="ELSE" type="PACKAGE_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:group name="PROCESSCHECKS_GROUP">
<xs:choice>
<xs:element name="PROCESS">
<xs:complexType>
<xs:attribute name="NAME" type="xs:string" use="required" />
<xs:attribute name="EXISTS" >
<xs:simpleType>
<xs:restriction base="xs:string">
<!--
FIXME: This should be defined as boolean, but the existing sample-prereq.xml defines value as TRUE which is not a valid boolean value.
-->
<xs:enumeration value="true" />
<xs:enumeration value="TRUE" />
<xs:enumeration value="false" />
<xs:enumeration value="FALSE" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="PROCESSCHECKS_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="CONDITION" type="PROCESS_CONDITION_TYPE" />
</xs:choice>
</xs:group>
<xs:complexType name="PROCESS_CONDITION_TYPE">
<xs:sequence>
<xs:element name="VAR_TASK" type="VAR_TASK_TYPE" minOccurs="0" maxOccurs="1" />
<xs:group ref="PROCESSCHECKS_GROUP" minOccurs="0"
maxOccurs="unbounded" />
<xs:element name="ELSE" type="PROCESS_CONDITION_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="VAR" type="xs:string"
use="optional" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:group name="SHELL_LIMITS_GROUP">
<xs:all>
<xs:element name="FILE_DESCRIPTORS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="FILE_DESCRIPTOR_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
<xs:element name="MAXPROC" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:group ref="MAXPROC_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
<xs:element name="STACK" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="STACK_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
<xs:element name="CHOICE">
<xs:complexType>
<xs:sequence>
<xs:element name="SELECTION" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="FILE_DESCRIPTORS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="FILE_DESCRIPTOR_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
<xs:element name="MAXPROC" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="MAXPROC_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
<xs:element name="STACK" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:group ref="STACK_GROUP" minOccurs="0" maxOccurs="1" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VALUE" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="VAR" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="FILE_DESCRIPTOR_GROUP">
<xs:all>
<xs:element name="HARDLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="SOFTLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="MAXPROC_GROUP">
<xs:all>
<xs:element name="HARDLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="SOFTLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="STACK_GROUP">
<xs:all>
<xs:element name="HARDLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
<xs:attribute name="OPERATOR" type="RANGE_OPERATOR_TYPE" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="SOFTLIMIT" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:positiveInteger" />
<xs:attribute name="RIM" type="xs:positiveInteger" use="optional" />
<xs:attribute name="UNIT" type="STORAGE_UNITS_TYPE" use="required" />
<xs:attribute name="OPERATOR" type="RANGE_OPERATOR_TYPE" use="optional" />
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
<xs:attribute name="RELAX_PERCENTAGE" type="xs:positiveInteger" use="optional" />
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:complexType name="UPGRADE_SUITABILITY_MATRIX_TYPE">
<xs:sequence>
<xs:element name="SRC_VERSION" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="EXCLUDE" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" type="xs:string" use="optional" />
<xs:attribute name="ATLEAST" type="xs:string" use="optional" />
<xs:attribute name="ATMOST" type="xs:string" use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ATLEAST" type="xs:string" use="required" />
<xs:attribute name="ATMOST" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SEVERITY" type="SEVERITY_TYPE" use="optional" />
</xs:complexType>
<xs:complexType name="VAR_TASK_TYPE">
<xs:all>
<xs:element name="EXECUTABLE_ARGUMENTS"
minOccurs="0" maxOccurs="1" type="ARGS_TYPE" />
<xs:element name="ANALYZER" type="ANALYZER_TYPE"
minOccurs="0" maxOccurs="1" />
</xs:all>
<xs:attribute name="ID" type="xs:string" use="required" />
<xs:attribute name="TYPE" type="xs:string"
use="optional" />
<xs:attribute name="EQ" type="xs:string"
use="optional" />
<xs:attribute name="NE" type="xs:string"
use="optional" />
<xs:attribute name="RE" type="xs:string"
use="optional" />
<xs:attribute name="ATLEAST" type="xs:string"
use="optional" />
<xs:attribute name="ATMOST" type="xs:string"
use="optional" />
<xs:attribute name="GREATER_THAN" type="xs:string"
use="optional" />
<xs:attribute name="LESS_THAN" type="xs:string"
use="optional" />
</xs:complexType>
<xs:complexType name="ARGS_TYPE">
<xs:sequence>
<xs:element name="ARG" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="NAME" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="TYPE" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="string" />
<xs:enumeration value="numeric" />
<xs:enumeration value="version" />
<xs:enumeration value="boolean" />
<xs:enumeration value="list" />
<xs:enumeration value="executable" />
<!-- If type is java then NAME elelment shall have the class name
and VAL may have the location of class in the package -->
<xs:enumeration value="java" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- either VAL or VAR must be specified -->
<xs:element name="VAL" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="VAR" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="COMPARATOR_TYPE">
<xs:attribute name="TYPE" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="string" />
<xs:enumeration value="numeric" />
<xs:enumeration value="version" />
<xs:enumeration value="boolean" />
<xs:enumeration value="list" />
<xs:enumeration value="executable" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="EQ" type="xs:string" use="optional" />
<xs:attribute name="EQ_NO_CASE" type="xs:string" use="optional" />
<xs:attribute name="LE" type="xs:string" use="optional" />
<xs:attribute name="LT" type="xs:string" use="optional" />
<xs:attribute name="GT" type="xs:string" use="optional" />
<xs:attribute name="GE" type="xs:string" use="optional" />
<xs:attribute name="NE" type="xs:string" use="optional" />
<xs:attribute name="RE" type="xs:string" use="optional" />
<xs:attribute name="NULL" type="xs:string" use="optional" />
<xs:attribute name="NOT_NULL" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="EXECUTABLE_INFO_TYPE">
<xs:sequence>
<xs:element name="REQUIRED_VERSION" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:attribute name="EQ" type="xs:string" use="optional" />
<xs:attribute name="EQ_NO_CASE" type="xs:string" use="optional" />
<xs:attribute name="LE" type="xs:string" use="optional" />
<xs:attribute name="LT" type="xs:string" use="optional" />
<xs:attribute name="GT" type="xs:string" use="optional" />
<xs:attribute name="GE" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:choice>
<xs:element name="EXTERNAL">
<xs:complexType>
<xs:all>
<xs:element name="NAME" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="ARGS" minOccurs="0" maxOccurs="1"
type="ARGS_TYPE" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="JAVA">
<xs:complexType>
<xs:all>
<xs:element name="ARGS" minOccurs="0" maxOccurs="1"
type="ARGS_TYPE" />
</xs:all>
<xs:attribute name="NAME" use="required" type="xs:string" />
<xs:attribute name="PACKAGE" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<!-- The contents of INLINE element should be in a CDATA section -->
<xs:element name="INLINE">
<xs:complexType>
<xs:all>
<xs:element name="ARGS" minOccurs="0" maxOccurs="1"
type="ARGS_TYPE" />
</xs:all>
<xs:attribute name="VALUE" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="RESULT_TYPE" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:attribute name="VALUE" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ANALYZED" />
<xs:enumeration value="TO_BE_ANALYZED" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TYPE" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SHELL" />
<xs:enumeration value="JAVA" />
<xs:enumeration value="SQL" />
<xs:enumeration value="PLSQL" />
<xs:enumeration value="PERL" />
<xs:enumeration value="BINARY" />
<xs:enumeration value="SCRIPT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RUN_ON" use="optional" default="DB">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DB" />
<xs:enumeration value="ASM" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ANALYZER_TYPE">
<xs:choice>
<xs:element name="STANDARD_ANALYZER">
<xs:complexType>
<xs:all>
<xs:element name="COMPARATOR" minOccurs="1" maxOccurs="1"
type="COMPARATOR_TYPE" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="EXTERNAL_ANALYZER">
<xs:complexType>
<xs:sequence>
<xs:element name="EXECUTABLE_INFO" type="EXECUTABLE_INFO_TYPE"
minOccurs="1" maxOccurs="1"></xs:element>
</xs:sequence>
<xs:attribute name="GLOBAL_ANALYZER" type="xs:boolean"
use="optional"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="SQL_ANALYZER">
<xs:complexType>
<xs:all>
<xs:element name="COLUMN_LIST" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="REFERENCE_COLUMN" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:attribute name="NAME" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="COLUMN" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="COMPARATOR" minOccurs="1"
maxOccurs="1" type="COMPARATOR_TYPE" />
</xs:all>
<xs:attribute name="NAME" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="EMPTY_RESULTSET_IMPLIES_SUCCESS"
use="optional" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:schema>
OHA YOOOO