<?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/CL1Schema/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/CL1Schema/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: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: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: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="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: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: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="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="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="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:sequence>
					<xsd:element name="ResourceConstraint" type="sdd-dd:RequirementResourceConstraintType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</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:element name="ResourceConstraint" type="sdd-dd:RequirementResourceConstraintType" 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="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: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="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: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="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>