<?xml version="1.0" encoding="UTF-8"?>
<!--******************************************************************************************-->
<!--  sdd-deploymentDescriptor-1.0.xsd                                                        -->
<!--                                                                                          -->
<!--  Schema for deployment descriptor defined in SDD specification                           -->
<!--                                                                                          -->
<!--  URL: http://docs.oasis-open.org/sdd/v1.0/os/FullSchema/sdd-deploymentDescriptor-1.0.xsd -->
<!--                                                                                          -->
<!--  Copyright (C) The Organization for the Advancement of                                   -->
<!--  Structured Information Standards [OASIS] 2007, 2008.                                    -->
<!--  All Rights Reserved.                                                                    -->
<!--******************************************************************************************-->
<xsd:schema targetNamespace="http://docs.oasis-open.org/sdd/ns/deploymentDescriptor"
	xmlns:sdd-dd="http://docs.oasis-open.org/sdd/ns/deploymentDescriptor"
	xmlns:sdd-common="http://docs.oasis-open.org/sdd/ns/common"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">

	<xsd:import namespace="http://docs.oasis-open.org/sdd/ns/common" schemaLocation="http://docs.oasis-open.org/sdd/v1.0/os/FullSchema/sdd-common-1.0.xsd"/>

	<xsd:element name="DeploymentDescriptor" type="sdd-dd:DeploymentDescriptorType"/>
	<xsd:complexType name="DeploymentDescriptorType">
		<xsd:sequence>
			<xsd:element name="Topology" type="sdd-dd:TopologyType"/>
			<xsd:choice>
				<xsd:choice>
					<xsd:element name="InstallableUnit" type="sdd-dd:InstallableUnitType"/>
					<xsd:element name="ConfigurationUnit" type="sdd-dd:ConfigurationUnitType"/>
					<xsd:element name="LocalizationUnit" type="sdd-dd:LocalizationUnitType"/>
				</xsd:choice>
				<xsd:sequence maxOccurs="unbounded">
					<xsd:element name="CompositeInstallable" type="sdd-dd:CompositeInstallableType"/>
				</xsd:sequence>
			</xsd:choice>
			<xsd:element name="Requisites" type="sdd-dd:RequisitesType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="sdd-common:DescriptorInfoGroup"/>
	</xsd:complexType>
	<xsd:complexType name="TopologyType">
		<xsd:sequence>
			<xsd:element name="Resource" type="sdd-dd:ResourceType" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ResourceType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:element name="Property" type="sdd-dd:PropertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="HostedResource" type="sdd-dd:ResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="type" type="sdd-dd:ResourceTypeNameType" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="ResourceTypeNameType">
		<xsd:restriction base="xsd:QName"/>
	</xsd:simpleType>
	<xsd:complexType name="PropertyType">
		<xsd:sequence>
			<xsd:element name="PropertyName" type="xsd:QName"/>
			<xsd:element name="Value" type="sdd-dd:VariableExpressionType"/>
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ResultingPropertyType">
		<xsd:sequence>
			<xsd:element name="PropertyName" type="xsd:string"/>
			<xsd:element name="Value" type="sdd-dd:VariableExpressionType"/>
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="InstallableUnitType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="RequiredBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="Languages" type="sdd-dd:LanguagesType" minOccurs="0"/>
			<xsd:element name="Completion" type="sdd-dd:CompletionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ResultingResource" type="sdd-dd:ResultingResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ResultingChange" type="sdd-dd:ResultingChangeType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Artifacts" type="sdd-dd:InstallationArtifactsType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="targetResourceRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ConfigurationUnitType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="Completion" type="sdd-dd:CompletionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ResultingChange" type="sdd-dd:ResultingChangeType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Artifacts" type="sdd-dd:ConfigurationArtifactsType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="targetResourceRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ArtifactType">
		<xsd:sequence>
			<xsd:element name="Arguments" type="sdd-dd:ArgumentListType" minOccurs="0"/>
			<xsd:element name="OutputVariables" type="sdd-dd:OutputVariableListType" minOccurs="0"/>
			<xsd:element name="AdditionalContent" type="sdd-dd:AdditionalContentType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="contentRef" type="xsd:token" use="optional"/>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="optional"/>
		<xsd:attribute name="type" type="sdd-dd:ArtifactTypeNameType" use="optional"/>
		<xsd:attribute name="weight" type="xsd:positiveInteger" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="ArtifactTypeNameType">
		<xsd:restriction base="xsd:QName"/>
	</xsd:simpleType>
	<xsd:complexType name="InstallationArtifactsType">
		<xsd:sequence>
			<xsd:element name="InstallArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:element name="UpdateArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:element name="UndoArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:element name="UninstallArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:element name="RepairArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ConfigurationArtifactsType">
		<xsd:sequence>
			<xsd:element name="ConfigArtifact" type="sdd-dd:ArtifactType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ArgumentListType">
		<xsd:sequence>
			<xsd:element name="Argument" type="sdd-dd:ArgumentType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ArgumentType">
		<xsd:attribute name="name" type="sdd-dd:VariableExpressionType" use="required"/>
		<xsd:attribute name="value" type="sdd-dd:VariableExpressionType" use="optional"/>
		<xsd:attribute name="required" type="xsd:boolean" use="optional" default="true"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="OutputVariableListType">
		<xsd:sequence>
			<xsd:element name="OutputVariable" type="sdd-dd:OutputVariableType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="OutputVariableType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseVariableType">
				<xsd:attribute name="outputParameterName" type="xsd:NCName" use="optional"/>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="AdditionalContentType">
		<xsd:sequence>
			<xsd:element name="Substitution" type="sdd-dd:SubstitutionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="contentRef" type="xsd:token" use="required"/>
		<xsd:attribute name="type" type="sdd-dd:ArtifactTypeNameType" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="SubstitutionType">
		<xsd:sequence>
			<xsd:element name="Pattern" type="xsd:string"/>
			<xsd:element name="Value" type="sdd-dd:VariableExpressionType"/>
		</xsd:sequence>
		<xsd:attribute name="limit" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="required" type="xsd:boolean" use="optional" default="true"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="CompletionType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="type" type="sdd-dd:CompletionTypeNamesType" use="required"/>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="operation" type="sdd-dd:OperationListType" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="CompletionTypeNamesType">
		<xsd:union memberTypes="sdd-dd:SDDCompletionTypeNamesType xsd:NCName" />
	</xsd:simpleType>
	<xsd:simpleType name="SDDCompletionTypeNamesType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="restartRequiredImmediately"/>
			<xsd:enumeration value="restartRequiredBeforeUse"/>
			<xsd:enumeration value="restartOccurs"/>
			<xsd:enumeration value="logoffRequired"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="CompositeInstallableType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="RequiredBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="Languages" type="sdd-dd:LanguageSelectionsType" minOccurs="0"/>
			<xsd:element name="ResultingResource" type="sdd-dd:ResultingResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ResultingChange" type="sdd-dd:ResultingChangeType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="BaseContent" type="sdd-dd:BaseContentType" minOccurs="0"/>
			<xsd:element name="SelectableContent" type="sdd-dd:SelectableContentType" minOccurs="0"/>
			<xsd:element name="LocalizationContent" type="sdd-dd:LocalizationContentType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="operation" type="sdd-dd:OperationType" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="CompositeUnitType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:group ref="sdd-dd:ContentListGroup"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ReferencedPackageType">
		<xsd:sequence>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="RequiredContentSelection" type="sdd-dd:RequiredContentSelectionType" minOccurs="0"/>
			<xsd:element name="Arguments" type="sdd-dd:ArgumentListType" minOccurs="0"/>
			<xsd:element name="OutputVariables" type="sdd-dd:OutputVariableListType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="ResultingResourceMap" type="sdd-dd:ResultingResourceMapType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ResultingChangeMap" type="sdd-dd:ResultingChangeMapType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="RequiredResourceMap" type="sdd-dd:ResourceMapType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Languages" type="sdd-dd:LanguagesType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="contentRef" type="xsd:token" use="required"/>
		<xsd:attribute name="weight" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="operation" type="sdd-dd:OperationType" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ResourceMapType">
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="foreignId" type="xsd:NCName" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ResultingResourceMapType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:ResourceMapType">
				<xsd:sequence>
					<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
					<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
					<xsd:element name="Version" type="sdd-common:VersionType" minOccurs="0"/>
					<xsd:element name="FixName" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="Property" type="sdd-dd:ResultingPropertyType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="Relationship" type="sdd-dd:RelationshipType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ResultingChangeMapType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:ResourceMapType">
				<xsd:sequence>
					<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
					<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
					<xsd:element name="Property" type="sdd-dd:ResultingPropertyType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="Relationship" type="sdd-dd:RelationshipType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="RequisitesType">
		<xsd:sequence>
			<xsd:element name="ReferencedPackage" type="sdd-dd:ReferencedPackageType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ResultingResourceType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:element name="Version" type="sdd-common:VersionType" minOccurs="0"/>
			<xsd:element name="FixName" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Property" type="sdd-dd:ResultingPropertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Relationship" type="sdd-dd:RelationshipType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ResultingChangeType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:element name="Property" type="sdd-dd:ResultingPropertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Relationship" type="sdd-dd:RelationshipType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="RelationshipType">
		<xsd:sequence>
			<xsd:element name="Property" type="sdd-dd:PropertyType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="relatedResourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="type" type="xsd:QName" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="BaseContentType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:ContentListGroup"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="ContentListGroup">
		<xsd:sequence>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="InstallableUnit" type="sdd-dd:InstallableUnitType"/>
				<xsd:element name="ConfigurationUnit" type="sdd-dd:ConfigurationUnitType"/>
				<xsd:element name="CompositeUnit" type="sdd-dd:CompositeUnitType"/>
				<xsd:element name="ContainedPackage" type="sdd-dd:ReferencedPackageType"/>
				<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="SelectableContentType">
		<xsd:sequence>	
			<xsd:element name="Groups" type="sdd-dd:GroupsType" minOccurs="0"/>
			<xsd:element name="Features" type="sdd-dd:FeaturesType" minOccurs="0"/>
			<xsd:group ref="sdd-dd:ContentListGroup"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="GroupsType">
		<xsd:sequence>
			<xsd:element name="Group" type="sdd-dd:GroupType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="GroupType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="SelectedFeature" type="sdd-dd:FeatureReferenceType" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="default" type="xsd:boolean" use="optional" default="false"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="FeaturesType">
		<xsd:sequence>
			<xsd:element name="Feature" type="sdd-dd:FeatureType" maxOccurs="unbounded"/>
			<xsd:element name="MultiSelect" type="sdd-dd:MultiSelectType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="FeatureType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:NestedFeatureType">
				<xsd:attribute name="required" type="xsd:boolean" use="optional" default="false"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="NestedFeatureType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Multiplicity" type="sdd-dd:MultiplicityType" minOccurs="0"/>
			<xsd:element name="Languages" type="sdd-dd:LanguageSelectionsType" minOccurs="0"/>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element name="NestedFeature" type="sdd-dd:NestedFeatureType"/>
				<xsd:element name="ContentElement" type="sdd-dd:ContentElementReferenceType"/>
				<xsd:element name="PackageFeatureReference" type="sdd-dd:PackageFeatureReferenceType"/>
				<xsd:element name="RequiredFeature" type="sdd-dd:FeatureReferenceType"/>
				<xsd:element name="Variable" type="sdd-dd:DerivedVariableType"/>
			</xsd:choice>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="addOn" type="xsd:boolean" use="optional" default="false"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="MultiplicityType">
		<xsd:sequence>
			<xsd:element name="ConstrainedFeature" type="sdd-dd:FeatureReferenceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="ConstrainedResource" type="sdd-dd:ConstrainedResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="multiplesAllowed" type="xsd:boolean" fixed="true" use="required"/>
		<xsd:attribute name="minSelections" type="xsd:positiveInteger" default="1" use="optional"/>
		<xsd:attribute name="maxSelections" type="xsd:positiveInteger" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="FeatureReferenceType">
		<xsd:attribute name="featureRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ContentElementReferenceType">
		<xsd:attribute name="contentElementRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="PackageFeatureReferenceType">
		<xsd:attribute name="contentElementRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="packageFeatureRef" type="xsd:NCName" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ConstrainedResourceType">
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="constraintType" type="sdd-dd:MultiplicityConstraintType" use="optional" default="same"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="MultiplicityConstraintType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="same"/>
			<xsd:enumeration value="unique"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="RequiredContentSelectionType">
		<xsd:sequence>
			<xsd:element name="Group" type="xsd:token" minOccurs="0"/>
			<xsd:element name="Feature" type="sdd-dd:ContentSelectionFeatureType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ContentSelectionFeatureType">
		<xsd:simpleContent>
			<xsd:extension base="xsd:token">
				<xsd:attribute name="selections" type="sdd-dd:VariableExpressionType" use="optional"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="MultiSelectType">
		<xsd:sequence>
			<xsd:element name="Feature" type="sdd-dd:FeatureReferenceType" minOccurs="2" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="minSelections" type="xsd:nonNegativeInteger" use="optional" default="0"/>
		<xsd:attribute name="maxSelections" type="xsd:positiveInteger" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="LocalizationContentType">
		<xsd:sequence>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element name="LocalizationUnit" type="sdd-dd:LocalizationUnitType"/>
				<xsd:element name="ContainedLocalizationPackage" type="sdd-dd:ReferencedPackageType"/>
				<xsd:element name="CompositeLocalizationUnit" type="sdd-dd:CompositeLocalizationUnitType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LocalizationUnitType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="RequiredBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="Languages" type="sdd-dd:LanguagesType" minOccurs="0"/>
			<xsd:element name="Completion" type="sdd-dd:CompletionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="LocalizationBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="ResultingResource" type="sdd-dd:ResultingResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Artifacts" type="sdd-dd:InstallationArtifactsType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="targetResourceRef" type="xsd:IDREF" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="CompositeLocalizationUnitType">
		<xsd:sequence>
			<xsd:element name="Identity" type="sdd-common:IdentityType" minOccurs="0"/>
			<xsd:element name="Condition" type="sdd-dd:ConditionType" minOccurs="0"/>
			<xsd:element name="Variables" type="sdd-dd:VariablesType" minOccurs="0"/>
			<xsd:element name="RequiredBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="Requirements" type="sdd-dd:RequirementsType" minOccurs="0"/>
			<xsd:element name="Languages" type="sdd-dd:LanguagesType" minOccurs="0"/>
			<xsd:element name="Completion" type="sdd-dd:CompletionType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="LocalizationBase" type="sdd-dd:RequiredBaseType" minOccurs="0"/>
			<xsd:element name="ResultingResource" type="sdd-dd:ResultingResourceType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element name="LocalizationUnit" type="sdd-dd:LocalizationUnitType"/>
				<xsd:element name="ContainedLocalizationPackage" type="sdd-dd:ReferencedPackageType"/>
				<xsd:element name="CompositeLocalizationUnit" type="sdd-dd:CompositeLocalizationUnitType"/>
			</xsd:choice>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="LanguageSelectionsType">
		<xsd:sequence>
			<xsd:element name="Mandatory" type="sdd-dd:LanguagesType" minOccurs="0"/>
			<xsd:element name="Optional" type="sdd-dd:OptionalLanguagesType" minOccurs="0" />
		</xsd:sequence>
	</xsd:complexType>	
	<xsd:complexType name="OptionalLanguagesType">
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="Language" type="sdd-dd:LanguageType"/>
			<xsd:element name="LanguageSet" type="sdd-dd:LanguageSetType"/>
		</xsd:choice>
	</xsd:complexType>	
	<xsd:complexType name="LanguagesType">
		<xsd:sequence>
			<xsd:element name="Language" type="sdd-dd:LanguageType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>	
	<xsd:complexType name="LanguageType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="type" type="xsd:language" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="LanguageSetType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Language" type="sdd-dd:LanguageType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CapacityConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="PropertyName" type="xsd:QName"/>
			<xsd:element name="Value" type="sdd-dd:CapacityValueType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CapacityValueType">
		<xsd:sequence>
			<xsd:element name="Minimum" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
			<xsd:element name="Maximum" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
			<xsd:element name="MinimumRecommended" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
			<xsd:element name="MaximumRecommended" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="unit" type="xsd:string" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ConsumptionConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="PropertyName" type="xsd:QName"/>
			<xsd:element name="Value" type="sdd-dd:ConsumptionConstraintValueType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ConsumptionConstraintValueType">
		<xsd:simpleContent>
			<xsd:extension base="sdd-dd:VariableExpressionType">
				<xsd:attribute name="unit" type="xsd:string" use="optional"/>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="PropertyConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="PropertyName" type="xsd:QName"/>
			<xsd:choice>
				<xsd:element name="Value" type="sdd-dd:VariableExpressionType"/>
				<xsd:element name="ListOfValues" type="sdd-dd:PropertyValueListType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PropertyValueListType">
		<xsd:sequence>
			<xsd:element name="Value" type="sdd-dd:VariableExpressionType" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="match" type="sdd-dd:PropertyMatchType" use="optional" default="any"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="PropertyMatchType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="any"/>
			<xsd:enumeration value="all"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="VersionConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="Supported" type="sdd-dd:VersionConstraintValueType"/>
			<xsd:element name="Certified" type="sdd-dd:VersionConstraintValueType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="VersionConstraintValueType">
		<xsd:sequence>
			<xsd:element name="Value" type="sdd-dd:VersionValueType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Range" type="sdd-dd:VersionRangeType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="VersionValueType">
		<xsd:sequence>
			<xsd:element name="Version" type="sdd-common:VersionType"/>
			<xsd:element name="FixName" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="VersionRangeType">
		<xsd:sequence>
			<xsd:element name="MinVersion" type="sdd-common:VersionType" minOccurs="0"/>
			<xsd:element name="MaxVersion" type="sdd-dd:MaxVersionType" minOccurs="0"/>
			<xsd:element name="FixName" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="MaxVersionType">
		<xsd:simpleContent>
			<xsd:extension base="sdd-common:VersionType">
				<xsd:attribute name="inclusive" type="xsd:boolean" use="optional" default="false"/>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>	
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="UniquenessConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="distinctResourceRef" type="xsd:IDREF" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="RelationshipConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="Property" type="sdd-dd:PropertyType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="relatedResourceRef" type="xsd:IDREF" use="optional"/>
		<xsd:attribute name="type" type="xsd:QName" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="RequirementsType">
		<xsd:sequence>
			<xsd:element name="Requirement" type="sdd-dd:RequirementType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="RequirementType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:choice>
				<xsd:element name="Alternative" type="sdd-dd:AlternativeRequirementType" maxOccurs="unbounded"/>
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element name="ResourceConstraint" type="sdd-dd:RequirementResourceConstraintType"/>
					<xsd:element name="Dependency" type="sdd-dd:InternalDependencyType"/>
					<xsd:any namespace="##other" processContents="lax"/>
				</xsd:choice>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="operation" type="sdd-dd:OperationListType" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="AlternativeRequirementType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="ResourceConstraint" type="sdd-dd:RequirementResourceConstraintType"/>
				<xsd:element name="Dependency" type="sdd-dd:InternalDependencyType"/>
				<xsd:any namespace="##other" processContents="lax"/>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="priority" type="xsd:positiveInteger" use="optional" default="1"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:group name="ResourceConstraintGroup">
		<xsd:choice>
			<xsd:element name="CapacityConstraint" type="sdd-dd:CapacityConstraintType"/>
			<xsd:element name="ConsumptionConstraint" type="sdd-dd:ConsumptionConstraintType"/>
			<xsd:element name="PropertyConstraint" type="sdd-dd:PropertyConstraintType"/>
			<xsd:element name="VersionConstraint" type="sdd-dd:VersionConstraintType"/>
			<xsd:element name="UniquenessConstraint" type="sdd-dd:UniquenessConstraintType"/>
			<xsd:element name="RelationshipConstraint" type="sdd-dd:RelationshipConstraintType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:group>
	<xsd:complexType name="RequirementResourceConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:group ref="sdd-dd:ResourceConstraintGroup" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="testValue" type="xsd:boolean" use="optional" default="true"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="InternalDependencyType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="type" type="sdd-dd:DependencyType" use="optional" default="pre-req"/>
		<xsd:attribute name="contentElementRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="contentElementRefOperation" type="sdd-dd:OperationListType" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:simpleType name="DependencyType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="pre-req"/>
			<xsd:enumeration value="co-req"/>
			<xsd:enumeration value="ex-req"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="ConditionType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:choice>
				<xsd:element name="Alternative" type="sdd-dd:AlternativeConditionalType" maxOccurs="unbounded"/>
				<xsd:sequence>
					<xsd:element name="ResourceConstraint" type="sdd-dd:ConditionalResourceConstraintType" maxOccurs="unbounded"/>
					<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:choice>
		</xsd:sequence>
		<xsd:attribute name="operation" type="sdd-dd:OperationListType" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="AlternativeConditionalType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="ResourceConstraint" type="sdd-dd:ConditionalResourceConstraintType" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ConditionalResourceConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:element name="VersionConstraint" type="sdd-dd:VersionConstraintValueType" minOccurs="0"/>
			<xsd:element name="PropertyConstraint" type="sdd-dd:ConditionalPropertyConstraintType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="UniquenessConstraint" type="sdd-dd:UniquenessConstraintType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="RelationshipConstraint" type="sdd-dd:RelationshipConstraintType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="testValue" type="xsd:boolean" use="optional" default="true"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="ConditionalPropertyConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
			<xsd:element name="PropertyName" type="xsd:QName"/>
			<xsd:choice>
				<xsd:element name="Value" type="xsd:string"/>
				<xsd:element name="ListOfValues" type="sdd-dd:PropertyValueListType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="VariableExpressionType">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="([^$]*($[^(])*($\([a-zA-Z_]+[0-9a-zA-Z_]*\))*)*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="BaseVariableType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="sensitive" type="xsd:boolean" use="optional" default="false"/>
	</xsd:complexType>
	<xsd:complexType name="VariablesType">
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="Parameters" type="sdd-dd:ParametersType"/>
			<xsd:element name="ResourceProperty" type="sdd-dd:ResourcePropertyType"/>
			<xsd:element name="DerivedVariable" type="sdd-dd:DerivedVariableType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="ParametersType">
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="IntegerParameter" type="sdd-dd:IntegerParameterType"/>
			<xsd:element name="StringParameter" type="sdd-dd:StringParameterType"/>
			<xsd:element name="BooleanParameter" type="sdd-dd:BooleanParameterType"/>
			<xsd:element name="URIParameter" type="sdd-dd:URIParameterType"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="BaseParameterType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="defaultValue" type="sdd-dd:VariableExpressionType" use="optional"/>
		<xsd:attribute name="sensitive" type="xsd:boolean" use="optional" default="false"/>
		<xsd:attribute name="required" type="xsd:boolean" use="optional" default="true"/>
		<xsd:attribute name="operation" type="sdd-dd:OperationListType" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="IntegerParameterType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseParameterType">
				<xsd:sequence>
					<xsd:element name="Bounds" type="sdd-dd:BoundaryType" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="BoundaryType">
		<xsd:sequence>
			<xsd:element name="LowerBound" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
			<xsd:element name="UpperBound" type="sdd-dd:VariableExpressionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="StringParameterType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseParameterType">
				<xsd:sequence>
					<xsd:element name="ValidValue" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
				<xsd:attribute name="minLength" type="xsd:positiveInteger" use="optional"/>
				<xsd:attribute name="maxLength" type="xsd:positiveInteger" use="optional"/>
				<xsd:attribute name="case" type="sdd-dd:StringCaseType" use="optional" default="mixed"/>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:simpleType name="StringCaseType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="lower"/>
			<xsd:enumeration value="upper"/>
			<xsd:enumeration value="mixed"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="BooleanParameterType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseParameterType">
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="URIParameterType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseParameterType">
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ResourcePropertyType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseVariableType">
				<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
				<xsd:attribute name="propertyName" type="xsd:QName" use="required"/>
				<xsd:anyAttribute namespace="##other" processContents="lax"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="DerivedVariableType">
		<xsd:complexContent>
			<xsd:extension base="sdd-dd:BaseVariableType">
				<xsd:choice>
					<xsd:element name="Expression" type="sdd-dd:VariableExpressionType"/>
					<xsd:element name="ConditionalExpression" type="sdd-dd:ConditionalDerivedVariableExpressionType" maxOccurs="unbounded"/>
				</xsd:choice>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ConditionalDerivedVariableExpressionType">
		<xsd:sequence>
			<xsd:element name="Condition" type="sdd-dd:ConditionType"/>
			<xsd:element name="Expression" type="sdd-dd:VariableExpressionType"/>
		</xsd:sequence>
		<xsd:attribute name="priority" type="xsd:positiveInteger" use="optional" default="1"/>
	</xsd:complexType>
	<xsd:simpleType name="OperationListType">
		<xsd:list itemType="sdd-dd:OperationType"/>
	</xsd:simpleType>
	<xsd:simpleType name="OperationType">
		<xsd:restriction base="xsd:NCName">
			<xsd:enumeration value="configure"/>
			<xsd:enumeration value="install"/>
			<xsd:enumeration value="repair"/>
			<xsd:enumeration value="undo"/>
			<xsd:enumeration value="update"/>
			<xsd:enumeration value="use"/>
			<xsd:enumeration value="uninstall"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="RequiredBaseType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:choice>
				<xsd:element name="Alternative" type="sdd-dd:AlternativeRequiredBaseConstraintType" maxOccurs="unbounded"/>
				<xsd:sequence>
					<xsd:element name="ResourceConstraint" type="sdd-dd:RequiredBaseConstraintType" maxOccurs="unbounded"/>
					<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:choice>
		</xsd:sequence>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="RequiredBaseConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="Name" type="sdd-dd:VariableExpressionType" minOccurs="0" />
			<xsd:element name="VersionConstraint" type="sdd-dd:VersionConstraintType" minOccurs="0"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="resourceRef" type="xsd:IDREF" use="required"/>
		<xsd:attribute name="testValue" type="xsd:boolean" use="optional" default="true"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:complexType name="AlternativeRequiredBaseConstraintType">
		<xsd:sequence>
			<xsd:group ref="sdd-dd:DisplayElementGroup" minOccurs="0"/>
			<xsd:element name="ResourceConstraint" type="sdd-dd:RequiredBaseConstraintType" maxOccurs="unbounded"/>
			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="priority" type="xsd:positiveInteger" use="optional" default="1"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<xsd:group name="DescriptionGroup">
		<xsd:sequence>
			<xsd:element name="Description" type="sdd-common:DisplayTextType"/>
			<xsd:element name="ShortDescription" type="sdd-common:DisplayTextType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="DisplayElementGroup">
		<xsd:sequence>
			<xsd:element name="DisplayName" type="sdd-common:DisplayTextType" minOccurs="0"/>
			<xsd:group ref="sdd-dd:DescriptionGroup" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
</xsd:schema>