<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by T JAUNEAULT (DELL ASAP SOFTWARE) -->
<!--
   -  XML schema to enable automation of install and update of vendor supplied software packages that provided conformant with the MUP specification.
   -  
   -  This specification is provided to you under the terms of the non-disclosure agreement (NDA) in place between your company and Dell. Under the terms of the NDA, you must not redistribute the information
   -  that appears in this document  to any party not involved in facilitating or participating in the development of product software. That is, this document should only be available to those parties who have a need to know. 
   -
   -  Last Updated:  2009/07/10
   -  Corresponding MUP Specification version:   2.0
  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.dell.com/openmanage/cm/2009/1/0/mupdefinition.xsd" 
xmlns:common="http://schemas.dell.com/openmanage/cm/2009/1/9/changemanagementcommon.xsd" 
xmlns:cimswid="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_SoftwareIdentity" targetNamespace="http://schemas.dell.com/openmanage/cm/2009/1/0/mupdefinition.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_SoftwareIdentity" schemaLocation="CIM_SoftwareIdentity.xsd"/>
	<xs:import namespace="http://schemas.dell.com/openmanage/cm/2009/1/9/changemanagementcommon.xsd" schemaLocation="changemanagementcommon.xsd"/>
	<xs:element name="MUPDefinition">
		<xs:annotation>
			<xs:documentation>MUPDefinition is the root element that defines the behavior of a MUP.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="packageinformation" type="T_PackageInformation"/>
				<xs:element name="Executable" type="T_Executable">
					<xs:annotation>
						<xs:documentation>Executable is a shell element of T_Executable.  Please see it for details.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="behaviors" type="T_VendorBehaviors">
					<xs:annotation>
						<xs:documentation>enumeration of the behaviors supported by the package with a mapping to the vendor command line options required to elicit said behavior.  There shall be exactly one behavior element for each supported behavior.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="parameters" type="T_VendorParameters">
					<xs:annotation>
						<xs:documentation>parameters lists the command line parameters defined by dell.  It is used to identify whether the functionality defined by the parameter is supported by the package.  The absence of a parametermapping element indicates the functionality is not supported.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="returncodes" type="T_VendorReturnCodes">
					<xs:annotation>
						<xs:documentation>ReturnCodes lists the return codes defined by Dell.  it is used to identify the return codes defined and whether or not they are supported by the vendor.  The absence of a returncode element for a dell defined return code indicates status notifications of this type are not supported by the vendor.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="inventorymetadata" type="T_InventoryMetadata">
					<xs:annotation>
						<xs:documentation>This element provides inventory metadata used to determine whether a version of this package is already installed on a target system.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="T_Executable">
		<xs:annotation>
			<xs:documentation>This type defines the behavior of the executable that supports the command line IO requirements of the MUP specification.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ExecutableName" type="xs:string"/>
			<xs:element name="RequiredParameters" minOccurs="0">
				<xs:annotation>
					<xs:documentation>RequiredParameters identifies the parameters the vendors executable requires to be specified.  It is not the parameters the MUP specification requires to be supported.  This element shall not be specified if there are no parameters required in addition to those defined in the MUP specification.
					</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="CommandLineParameter" type="T_CommandLineParameter" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_CommandLineParameter">
		<xs:annotation>
			<xs:documentation>This type defines a command line parameter.  The command line parameter may be required or optional.   The value specified shall be the entire parameter including the switch, identifier, and any option values.  The value will be placed on the command line precisely as specified and dilineated with whitespace before and after. 
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:attributeGroup name="AG_CommandLineParameter">
		<xs:annotation>
			<xs:documentation>Defines the set of attributes for CommandLineParameter type</xs:documentation>
		</xs:annotation>
		<xs:attribute name="OptionName" type="xs:string"/>
		<xs:attribute name="OptionSwitch" type="xs:string"/>
		<xs:attribute name="OptionValue" type="xs:string"/>
	</xs:attributeGroup>
	<xs:complexType name="T_VendorParameters">
		<xs:sequence>
			<xs:element name="parametermapping" type="T_VendorParameterMapping" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Each parameter element corresponds to a dell defined parameter.  Each parameter contains at least one parameter mapping.The contained DellOption identifies the dell specified syntax.  If this syntax is supported by the vendor, there will be zero VendorOption elements.  If the dell syntax needs to be mapped to vendor syntax, there will be one or more VendorOption elements.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_VendorParameterMapping">
		<xs:annotation>
			<xs:documentation>This type defines a mapping from a dell defined command line parameter to the corresponding vendor parameter(s).</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="VendorOption" type="T_VendorOption" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Identifies the corresponding vendor mapping required.  For each occurrence of a DellOption, all of the vendor options shall be supplied to the vendor executable.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="Enum_CommandLineParameterNames" use="required"/>
	</xs:complexType>
	<xs:complexType name="T_OptionContainer">
		<xs:annotation>
			<xs:documentation>This type defines how a vendor specifies nested command line parameters.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="containervalue" type="T_OptionValueConstraint"/>
			<xs:choice>
				<xs:element name="optionvalue" type="T_OptionValueConstraint"/>
				<xs:element name="container" type="T_OptionContainer"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="delimiter">
			<xs:annotation>
				<xs:documentation>identifies delimiter between containervalue and subsequent first optionvalue. The absence of this attribute indicates </xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="T_VendorReturnCodes">
		<xs:sequence>
			<xs:element name="returncodemapping" type="T_VendorReturnCodeMapping" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Each returncodemapping element corresponds to a return code defined by Dell.  Each returncodemapping shall contain at least one TargetReturnCode element.  The  TargetReturnCode value, DellReturnCode values, and their association within a single returncodemapping element are defined by Dell and shall not be modified by the vendor.  If the vendor does not provide a return code with symantics corresponding to the Dell defined return codes, the returncodemapping element shall not be present.  If the TargetReturnCode value is the value returned by the vendor, there will be zero VendorReturnCode elements.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_VendorReturnCodeMapping">
		<xs:annotation>
			<xs:documentation>This type defines the mapping from a Dell specified return code the vendor equivalent.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="VendorReturnCode" minOccurs="0" maxOccurs="unbounded">
				<xs:simpleType>
					<xs:restriction base="xs:int">
						<xs:whiteSpace value="collapse"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="Enum_ReturnCodeNames" use="required"/>
	</xs:complexType>
	<xs:complexType name="T_PackageInformation">
		<xs:annotation>
			<xs:documentation>General information about the MUP package being provided.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name">
				<xs:annotation>
					<xs:documentation>common name by which this package is referred to in communication between Dell and IHV.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="installertype" type="Enum_InstallerTypes">
				<xs:annotation>
					<xs:documentation>informative tag indicating how the underlying installer was developed</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="packagegrouping" type="Enum_PackageTypes">
				<xs:annotation>
					<xs:documentation>tag indicating whether this package is part of a pair or not</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="packagingtype">
				<xs:annotation>
					<xs:documentation>informative tag indicating whether final deliverable was a single installer or a zip archive containing a series of files.</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="executable"/>
						<xs:enumeration value="zip"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="releasetype" type="common:Enum_ReleaseTypesProgrammatic">
				<xs:annotation>
					<xs:documentation>programmatic tag indicating the type of vendor content contained.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="mupspecificationversion" type="xs:string">
				<xs:annotation>
					<xs:documentation>programmatic tag indicating the version of the MUP specification used to generate this package.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="supportedoperatingsystems">
				<xs:annotation>
					<xs:documentation>array of identifiers indicating the operating systems supported by this package. For OS agnostic content such as BIOS, this indicates the operating systems in which the installer is supported.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="osidentifier" type="common:T_OSIdentification" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_InventoryMetadata">
		<xs:annotation>
			<xs:documentation>This type defines the structure for providing inventory metadata.</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="BIOS" type="common:T_BIOSInformation"/>
			<xs:sequence>
				<xs:element name="pnpid" type="common:T_PnPDevice" minOccurs="0"/>
				<xs:choice minOccurs="0">
					<xs:element name="MSI" type="common:T_MSI"/>
					<xs:element name="registrykey" type="common:T_RegistryKey"/>
					<xs:element name="softwareidentity" type="cimswid:CIM_SoftwareIdentity_Type"/>
				</xs:choice>
			</xs:sequence>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="T_VendorBehaviors">
		<xs:annotation>
			<xs:documentation>This type defines the structure for advertising supported behaviors and the associated command line parrameter.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="behavior" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="VendorOption" type="T_VendorOption" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="name" type="Enum_Behaviors" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_VendorOption">
		<xs:annotation>
			<xs:documentation>This type defines the representation of a vendor command line option.</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:annotation>
				<xs:documentation>If the vendor option may be specified directly on the command line without being combined with or wrapped in a common parameter, the optionvalue element is provided and identifes the corresponding vendor option.  If the vendor command line syntax requires some parameters/options to be aggregated into a common package, the contaner element is used to identify the common wrapping commandline parameter.</xs:documentation>
			</xs:annotation>
			<xs:element name="optionvalue" type="T_OptionValueConstraint"/>
			<xs:element name="container" type="T_OptionContainer"/>
		</xs:choice>
	</xs:complexType>
	<xs:element name="dupmupmapping">
		<xs:annotation>
			<xs:documentation>MUPDefinition is the root element that defines the behavior of a MUP.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="behaviors" type="T_DUPBehaviors"/>
				<xs:element name="parameters" type="T_DUPParameters">
					<xs:annotation>
						<xs:documentation>parameters lists the command line parameters defined by dell.  It is used to identify whether the functionality defined by the parameter is supported by the package.  The absence of a parametermapping element indicates the functionality is not supported.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="returncodes" type="T_DUPReturnCodes">
					<xs:annotation>
						<xs:documentation>ReturnCodes lists the return codes defined by Dell.  it is used to identify the return codes defined and whether or not they are supported by the vendor.  The absence of a returncode element for a dell defined return code indicates status notifications of this type are not supported by the vendor.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="T_DUPBehaviors">
		<xs:annotation>
			<xs:documentation>This type defines the structure for advertising supported behaviors and the associated command line parrameter.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="behavioroptions">
				<xs:annotation>
					<xs:documentation>whitespace delimited list of option strings that indicate a behavior exposed via command line by a DUP.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="behavior" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="DellOption" type="T_DellOption" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="name" type="Enum_Behaviors" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_DUPReturnCodes">
		<xs:sequence>
			<xs:element name="returncodemapping" type="T_DUPReturnCodeMapping" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_DUPReturnCodeMapping">
		<xs:annotation>
			<xs:documentation>This type defines the mapping from a Dell specified return code the vendor equivalent.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="TargetReturnCode" type="Enum_DUPReturnCodeValues"/>
			<xs:element name="DellReturnCode" type="Enum_MUPReturnCodeValues" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="name" type="Enum_ReturnCodeNames" use="required"/>
	</xs:complexType>
	<xs:complexType name="T_DUPParameters">
		<xs:sequence>
			<xs:element name="parametermapping" type="T_DUPParameterMapping" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="T_DUPParameterMapping">
		<xs:annotation>
			<xs:documentation>This type defines a mapping from a dell defined command line parameter to the corresponding vendor parameter(s).</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="DellOption" type="T_DellOption" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Identifies the command line option specified by dell.  If Dell defines more than one command line switch for the same parameter functionality, the values will be listed here.  The number of elements specified here and their values SHALL NOT be edited by the vendor.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="Enum_CommandLineParameterNames" use="required"/>
	</xs:complexType>
	<xs:complexType name="T_DellOption">
		<xs:simpleContent>
			<xs:extension base="Enum_DUPCommandLineParameterValues">
				<xs:attributeGroup ref="AG_OptionFormAttributes"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="Enum_DUPCommandLineParameterValues">
		<xs:annotation>
			<xs:documentation> Enumerated list of known command line parameter values</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="s"/>
			<xs:enumeration value="l"/>
			<xs:enumeration value="e"/>
			<xs:enumeration value="f"/>
			<xs:enumeration value="r"/>
			<xs:enumeration value="drivers"/>
			<xs:enumeration value="freshinstall"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_CommandLineParameterNames">
		<xs:annotation>
			<xs:documentation>Enumerated list of known command line parameters.  this is named functionality to which a command line parameter corresponds.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="force"/>
			<xs:enumeration value="logfile"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_MUPReturnCodeValues">
		<xs:annotation>
			<xs:documentation>Enumerated list of actual return code values.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:int">
			<xs:enumeration value="0"/>
			<xs:enumeration value="1603"/>
			<xs:enumeration value="3010"/>
			<xs:enumeration value="3"/>
			<xs:enumeration value="4"/>
			<xs:enumeration value="1633"/>
			<xs:enumeration value="1641"/>
			<xs:enumeration value="7"/>
			<xs:enumeration value="8"/>
			<xs:enumeration value="9"/>
			<xs:enumeration value="1608"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_ReturnCodeNames">
		<xs:annotation>
			<xs:documentation>Enumerated list of return codes.  This is the named error condition to which an actual value corresponds.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="SUCCESS"/>
			<xs:enumeration value="ERROR"/>
			<xs:enumeration value="REBOOT_REQUIRED"/>
			<xs:enumeration value="DEP_SOFT_ERROR"/>
			<xs:enumeration value="DEP_HARD_ERROR"/>
			<xs:enumeration value="ERROR_INSTALL_PLATFORM_UNSUPPORTED"/>
			<xs:enumeration value="REBOOTING_SYSTEM"/>
			<xs:enumeration value="PASSWORD_REQUIRED"/>
			<xs:enumeration value="NO_DOWNGRADE"/>
			<xs:enumeration value="REBOOT_UPDATE_PENDING"/>
			<xs:enumeration value="UNKNOWN_OPTION"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_InstallerTypes">
		<xs:annotation>
			<xs:documentation>Enumerated list of known installer types</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="msi"/>
			<xs:enumeration value="custom"/>
			<xs:enumeration value="installshield installscript"/>
			<xs:enumeration value="installshield installscript msi"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_PackageTypes">
		<xs:annotation>
			<xs:documentation>Enumerated list of package options identified in the MUP specification.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="single_package"/>
			<xs:enumeration value="pair_driver_and_application"/>
			<xs:enumeration value="pair_driver_reduced"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Enum_Behaviors">
		<xs:restriction base="xs:string">
			<xs:enumeration value="unattended"/>
			<xs:enumeration value="attended"/>
			<xs:enumeration value="extractdrivers"/>
			<xs:enumeration value="freshinstall"/>
			<xs:enumeration value="help"/>
			<xs:enumeration value="driveronly"/>
			<xs:enumeration value="applicationonly"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:attributeGroup name="AG_OptionFormAttributes">
		<xs:attribute name="switch" use="required">
			<xs:annotation>
				<xs:documentation>Identifies the command line switch that will be used to delimit the start of a vendor option.</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:length value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="requiresvalue" type="xs:boolean" use="required">
			<xs:annotation>
				<xs:documentation>True if the option requires a value to be specified for it.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="valuedelimiter">
			<xs:annotation>
				<xs:documentation>Identifies the character that delimits the end of the option identifier and the start of the option value.  This attribute shall be implemented if requiresvalue is true.  An empty string indicates no delimiter.  A single whitespace character indicates one or more whitespaces delimit the option.  Any other string indicates precisely that pattern is utilized.</xs:documentation>
			</xs:annotation>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="0"/>
					<xs:whiteSpace value="preserve"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:attributeGroup>
	<xs:complexType name="T_OptionValueConstraint">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attributeGroup ref="AG_OptionFormAttributes"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="Enum_DUPReturnCodeValues">
		<xs:restriction base="xs:int">
			<xs:enumeration value="0"/>
			<xs:enumeration value="1"/>
			<xs:enumeration value="2"/>
			<xs:enumeration value="3"/>
			<xs:enumeration value="4"/>
			<xs:enumeration value="5"/>
			<xs:enumeration value="6"/>
			<xs:enumeration value="7"/>
			<xs:enumeration value="1608"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
