Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "COSMOS SDD Tooling BTG Data Type Comparisons"

(<StringParameterType>)
(<BooleanParameterType>)
Line 1,305: Line 1,305:
 
== <BooleanParameterType> ==
 
== <BooleanParameterType> ==
 
<pre>
 
<pre>
 +
<xsd:complexType name="BooleanParameterType">
 +
  <xsd:complexContent>
 +
    <xsd:extension base="sdd-dd:BaseParameterType">
 +
      <xsd:anyAttribute namespace="##other" processContents="lax"/>
 +
    </xsd:extension>
 +
  </xsd:complexContent>
 +
</xsd:complexType>
 
</pre>
 
</pre>
  
Line 1,312: Line 1,319:
 
! Type !! Element !! Attribute !! Data Type !! Compare?
 
! Type !! Element !! Attribute !! Data Type !! Compare?
 
|-
 
|-
| || || || ||
+
| <BooleanParameterType> || || || Extension Of:<[[#<BaseParameterType>|BaseParameterType]]> ||
 
|-
 
|-
| || || || ||
+
| || || any || namespace="##other" || ?
|-
+
| || || || ||
+
|-
+
| || || || ||
+
 
|}
 
|}
 
Notes:<br>
 
  
 
== <URIParameterType> ==
 
== <URIParameterType> ==

Revision as of 15:19, 22 February 2008

Contents

Common Schema Elements

DescriptorInfoGroup

<xsd:attributeGroup name="DescriptorInfoGroup">
  <xsd:attribute name="schemaVersion" type="xsd:string" fixed="1.0" use="required"/>
  <xsd:attribute name="descriptorID" type="sdd-common:UUIDType" use="required"/>
  <xsd:attribute name="lastModified" type="xsd:dateTime" use="required"/>
  <xsd:attribute name="descriptorLanguageBundle" type="xsd:token" use="optional"/>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:attributeGroup>
Type Element Attribute Data Type Compare?
DescriptorInfoGroup
schemaVersion xsd:string Throw Away
descriptorID <UUIDType> Throw Away
lastModified xsd:dateTime Throw Away
descriptorLanguageBundle xsd:token Merge
any namespace="##other"  ?

Notes:
DescriptorInfoGroup is always merged.

<DisplayTextType>

<xsd:complexType name="DisplayTextType">
  <xsd:simpleContent>
    <xsd:extension base="xsd:string">
      <xsd:attribute name="translationKey" type="xsd:NCName" use="optional"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<DisplayTextType> Extension Of: xsd:string Yes
translationKey xsd:NCName Merge

Notes:
DisplayTextType is always merged. When xsd:strings are equal, the merging algorithm must resolve translationKey and choose one of the translations to use.

<VersionType>

<xsd:simpleType name="VersionType">
  <xsd:restriction base="xsd:string"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<VersionType> xsd:string Yes

<FixIdentityType>

<xsd:complexType name="FixIdentityType">
  <xsd:sequence>
    <xsd:element name="Name" type="xsd:NMTOKEN"/>
    <xsd:element name="Description" type="sdd-common:DisplayTextType"/>
    <xsd:element name="ShortDescription" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:element name="Symptom" type="sdd-common:DisplayTextType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<FixIdentityType>
Name xsd:NMTOKEN Yes
Description <DisplayTextType> Merge
ShortDescription <DisplayTextType> Merge
Symptom <DisplayTextType> Merge
any namespace="##other"  ?

<MaintenanceInformationType>

<xsd:complexType name="MaintenanceInformationType">
  <xsd:sequence>
    <xsd:element name="Severity" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:element name="Category" type="sdd-common:DisplayTextType" minOccurs="0" maxOccurs="unbounded"/>	
    <xsd:element name="Fix" type="sdd-common:FixIdentityType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="Supersedes" type="sdd-common:MaintenanceInformationType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<MaintenanceInformationType>
Severity <DisplayTextType> Merge
Category <DisplayTextType> Merge
Fix <FixIdentityType> Yes
Supersedes <MaintenanceInformationType> Merge
any namespace="##other"  ?

Notes:
In a MaintenanceInformationType, all Categories apply to all Fixes. When merging two or more instances, it's important to only keep information that is true for all inputs. So, all fixes are kept and as many categories as apply to all fixes are kept.

For example, if MI one contains category FUNCTION and fix A, MI two contains categories FUNCTION, PERFORMANCE and fixes B,C and MI three contains category PERFORMANCE and fix D - the merged MI could contain no categories and fixes A,B,C,D.

Another case is when MI one contains category FUNCTION and fix A and MI two contains categories FUNCTION,PERFORMANCE and fixes B,C. Then the merged MI would contain category FUNCTION and fixes A,B,C.

<BuildInformationType>

<xsd:complexType name="BuildInformationType">
  <xsd:attribute name="buildID" type="xsd:token" use="required"/>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<BuildInformationType>
buildID xsd:token Merge
any namespace="##other"  ?

Notes:
If a buildID comes from a build system plugin, that buildID should be kept.

<LocationType>

<xsd:complexType name="LocationType">
  <xsd:sequence>
    <xsd:element name="Address" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:element name="Country" type="sdd-common:DisplayTextType" minOccurs="0"/>
  </xsd:sequence>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<LocationType>
Address <DisplayTextType> Merge
Country <DisplayTextType> Merge

<ManufacturerType>

<xsd:complexType name="ManufacturerType">
  <xsd:sequence>
    <xsd:element name="Name" type="sdd-common:DisplayTextType"/>
    <xsd:element name="Location" type="sdd-common:LocationType" minOccurs="0"/>
    <xsd:element name="ContactInformation" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<ManufacturerType>
Name <DisplayTextType> Yes
Location <LocationType> Merge
ContactInformation <DisplayTextType> Merge
any namespace="##other"  ?

<IdentityType>

<xsd:complexType name="IdentityType">
  <xsd:sequence>
    <xsd:element name="Description" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:element name="ShortDescription" type="sdd-common:DisplayTextType" minOccurs="0"/>
    <xsd:element name="Name" type="sdd-common:DisplayTextType" minOccurs="0" />
    <xsd:element name="Version" type="sdd-common:VersionType" minOccurs="0"/>
    <xsd:element name="MaintenanceInformation" type="sdd-common:MaintenanceInformationType" minOccurs="0"/>
    <xsd:element name="BuildInformation" type="sdd-common:BuildInformationType" minOccurs="0"/>
    <xsd:element name="Manufacturer" type="sdd-common:ManufacturerType" minOccurs="0"/>
    <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="softwareID" type="xsd:string" use="optional"/>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<IdentityType>
softwareID xsd:string Yes
any namespace="##other"  ?
Description <DisplayTextType> Merge
ShortDescription <DisplayTextType> Merge
Name <DisplayTextType> Merge
Version <VersionType> Merge
MaintenanceInformation <MaintenanceInformationType> Merge
BuildInformation <BuildInformationType> Merge
Manufacturer <ManufacturerType> Merge
any namespace="##other"  ?

<UUIDType>

<xsd:simpleType name="UUIDType">
  <xsd:restriction base="xsd:hexBinary">
    <xsd:length value="16"/>
  </xsd:restriction>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<UUIDType> xsd:hexBinary Yes

Package Descriptor Schema Elements

DigestInfoGroup

<xsd:group name="DigestInfoGroup">
  <xsd:sequence>
    <xsd:element ref="ds:DigestMethod"/>
    <xsd:element ref="ds:DigestValue"/>
  </xsd:sequence>
</xsd:group>
Type Element Attribute Data Type Compare?
DigestInfoGroup
DigestMethod <DigestMethodType> Yes
DigestValue <DigestValueType> Yes

<SDDContentPurposeType>

<xsd:simpleType name="SDDContentPurposeType">
  <xsd:restriction base="xsd:NCName">
    <xsd:enumeration value="readMe"/>
    <xsd:enumeration value="endUserLicenseAgreement"/>
    <xsd:enumeration value="responseFile"/>
    <xsd:enumeration value="deploymentDescriptor"/>
    <xsd:enumeration value="packageDescriptor"/>	
    <xsd:enumeration value="descriptorLanguageBundle"/>	
    <xsd:enumeration value="content"/>	
  </xsd:restriction>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<SDDContentPurposeType> xsd:NCName Yes

<ContentPurposeType>

<xsd:simpleType name="ContentPurposeType">
  <xsd:union memberTypes="sdd-pd:SDDContentPurposeType xsd:NCName"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<ContentPurposeType> Union Of: <SDDContentPurposeType> + xsd:NCName Yes

<ContentType>

<xsd:complexType name="ContentType">
  <xsd:sequence>
    <xsd:group ref="sdd-pd:DigestInfoGroup" minOccurs="0"/>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID" use="required"/>
  <xsd:attribute name="pathname" type="xsd:anyURI" use="required"/>
  <xsd:attribute name="purpose" type="sdd-pd:ContentPurposeType" default="content" use="optional"/>
  <xsd:attribute name="charEncoding" type="xsd:string" use="optional"/>
  <xsd:attribute name="length" type="xsd:nonNegativeInteger" use="optional"/>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<ContentType>
DigestInfoGroup DigestInfoGroup No
id xsd:ID Throw Away
pathname xsd:anyURI Yes
purpose <ContentPurposeType> Merge
charEncoding xsd:string No
length xsd:nonNegativeInteger No
any namespace="##other"  ?

Notes:
If there are two matching pathnames, log a message to the user that the correct file needs to be chosen via a custom rule in order for DigestInfoGroup, charEncoding and length to be valid. The default rule will simply pick one, but it must pick DigestInfoGroup, charEncoding and length together as a set from one of the inputs.

<ContentsType>

<xsd:complexType name="ContentsType">
  <xsd:sequence>
    <xsd:element name="Content" type="sdd-pd:ContentType" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<ContentsType>
Content <ContentType> Merge

<SDDPackageTypeType>

<xsd:simpleType name="SDDPackageTypeType">
  <xsd:restriction base="xsd:NCName">
    <xsd:enumeration value="baseInstall"/>
    <xsd:enumeration value="baseUninstall"/>
    <xsd:enumeration value="configuration"/>
    <xsd:enumeration value="maintenance"/>
    <xsd:enumeration value="modification"/>
    <xsd:enumeration value="replacement"/>
    <xsd:enumeration value="localization"/>
  </xsd:restriction>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<SDDPackageTypeType> xsd:NCName Yes

<ExtensiblePackageTypeType>

<xsd:simpleType name="ExtensiblePackageTypeType">
  <xsd:union memberTypes="sdd-pd:SDDPackageTypeType xsd:NCName"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<ExtensiblePackageTypeType> Union Of: <SDDPackageTypeType> + xsd:NCName Yes

<PackageTypeType>

<xsd:simpleType name="PackageTypeType">
  <xsd:list itemType="sdd-pd:ExtensiblePackageTypeType"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<PackageTypeType> List Of: <ExtensiblePackageTypeType> Merge

<PackageIdentityType>

<xsd:complexType name="PackageIdentityType">
  <xsd:complexContent>
    <xsd:extension base="sdd-common:IdentityType">
      <xsd:attribute name="packageType" type="sdd-pd:PackageTypeType" default="baseInstall" use="optional"/>
      <xsd:attribute name="contentType" type="xsd:QName" use="optional"/>
      <xsd:attribute name="label" type="xsd:NCName" use="optional"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<PackageIdentityType> Extension Of: <IdentityType> Merge
packageType <PackageTypeType> Merge
contentType xsd:QName Merge
label xsd:NCName Merge

<PackageDescriptorType>

<xsd:complexType name="PackageDescriptorType">
  <xsd:sequence>			
    <xsd:element name="PackageIdentity" type="sdd-pd:PackageIdentityType"/>
    <xsd:element name="Contents" type="sdd-pd:ContentsType"/>
    <xsd:element ref="ds:Signature" minOccurs="0"/>
  </xsd:sequence>
  <xsd:attributeGroup ref="sdd-common:DescriptorInfoGroup"/>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<PackageDescriptorType>
DescriptorInfoGroup DescriptorInfoGroup Merge
PackageIdentity <PackageIdentityType> Merge
Contents <ContentsType> Merge
Signature <SignatureType> Merge

Deployment Descriptor Schema Elements

DescriptionGroup

<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>
Type Element Attribute Data Type Compare?
DescriptionGroup
Description <DisplayTextType> Merge
ShortDescription <DisplayTextType> Merge

DisplayElementGroup

<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>
Type Element Attribute Data Type Compare?
DisplayElementGroup
DisplayName <DisplayTextType> Merge
DescriptionGroup DescriptionGroup Merge

ResourceConstraintGroup

<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>
Type Element Attribute Data Type Compare?
ResourceConstraintGroup
CapacityConstraint <CapacityConstraintType> Merge
ConsumptionConstraint <ConsumptionConstraintType> Merge
PropertyConstraint <PropertyConstraintType> Merge
VersionConstraint <VersionConstraintType> Merge
UniquenessConstraint <UniquenessConstraintType> Merge
RelationshipConstraint <RelationshipConstraintType> Merge
any namespace="##other"  ?

ContentListGroup

<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>
Type Element Attribute Data Type Compare?
ContentListGroup
InstallableUnit <InstallableUnitType> Merge
ConfigurationUnit <ConfigurationUnitType> Merge
CompositeUnit <CompositeUnitType> Merge
RequiredBase <RequiredBaseType> Merge
ContainedPackage <ReferencedPackageType> Merge
any namespace="##other"  ?

<VariableExpressionType>

<xsd:simpleType name="VariableExpressionType">
  <xsd:restriction base="xsd:token">
    <xsd:pattern value="([^$]*($[^(])*($\([a-zA-Z_]+[0-9a-zA-Z_]*\))*)*"/>
  </xsd:restriction>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<VariableExpressionType> xsd:token Yes

<PropertyType>

<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>
Type Element Attribute Data Type Compare?
<PropertyType>
any namespace="##other"  ?
PropertyName xsd:QName Yes
Value <VariableExpressionType> Merge

<ResourceTypeNameType>

<xsd:simpleType name="ResourceTypeNameType">
  <xsd:restriction base="xsd:QName"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
ResourceTypeNameType xsd:QName Yes

<ResourceType>

<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>
Type Element Attribute Data Type Compare?
<ResourceType>
xsd:ID Throw Away
<ResourceTypeNameType> Yes
namespace="##other"  ?
DescriptionGroup Merge
<VariableExpressionType> Merge
<PropertyType> Merge
<ResourceType> Merge
any namespace="##other"  ?

<TopologyType>

<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>
Type Element Attribute Data Type Compare?
<TopologyType>
Resource <ResourceType> Merge
any namespace="##other"  ?

<VersionValueType>

<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>
Type Element Attribute Data Type Compare?
<VersionValueType>
Version <VersionType> Yes
FixName xsd:string Yes

<MaxVersionType>

<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>
Type Element Attribute Data Type Compare?
<MaxVersionType> Extension Of: <VersionType> Yes
inclusive xsd:boolean Yes
any namespace="##other"  ?

Notes:
If the inclusive attribute is not present, it's the same as if it is present with a value of false (since the default is false).

<VersionRangeType>

<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>
Type Element Attribute Data Type Compare?
<VersionRangeType>
MinVersion <VersionType> Yes
MaxVersion <MaxVersionType> Yes
FixName xsd:string  ?

<VersionConstraintValueType>

<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>
Type Element Attribute Data Type Compare?
<VersionConstraintValueType>
Value <VersionValueType> Merge
Range <VersionRangeType> Merge

<VersionConstraintType>

<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>
Type Element Attribute Data Type Compare?
<VersionConstraintType>
DescriptionGroup DescriptionGroup Merge
Supported <VersionConstraintValueType> Merge
Certified <VersionConstraintValueType> Merge

<PropertyMatchType>

<xsd:simpleType name="PropertyMatchType">
  <xsd:restriction base="xsd:NCName">
    <xsd:enumeration value="any"/>
    <xsd:enumeration value="all"/>
  </xsd:restriction>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<PropertyMatchType> xsd:NCName Yes

<PropertyValueListType>

<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>
Type Element Attribute Data Type Compare?
<PropertyValueListType>
match <PropertyMatchType> Yes
any namespace="##other"  ?
Value <VariableExpressionType> Yes

Notes:
There is no clean way to merge the list of Values, so if either the Value or match is different for a given PropertyName then the higher level type containing PropertyValueListType should be duplicated.

<ConditionalPropertyConstraintType>

<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>
Type Element Attribute Data Type Compare?
<ConditionalPropertyConstraintType>
DescriptionGroup DescriptionGroup Merge
PropertyName xsd:QName Yes
Value xsd:string Yes
ListOfValues <PropertyValueListType> Yes

Notes:

<UniquenessConstraintType>

<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>
Type Element Attribute Data Type Compare?
<UniquenessConstraintType>
distinctResourceRef xsd:IDREF Yes
DescriptionGroup DescriptionGroup Merge

Notes:
The comparison of distinceResourceRef involves comparing the Resource pointed to, not the reference itself.

<RelationshipConstraintType>

<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>
Type Element Attribute Data Type Compare?
<RelationshipConstraintType>
relatedResourceRef xsd:IDREF Yes
type xsd:QName Yes
any namespace="##other"  ?
DescriptionGroup DescriptionGroup Merge
Property <PropertyType> Merge

Notes:
The comparison of relatedResourceRef involves comparing the Resource pointed to, not the reference itself.

<ConditionalResourceConstraintType>

<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>
Type Element Attribute Data Type Compare?
<ConditionalResourceConstraintType>
id xsd:ID Throw Away
resourceRef xsd:IDREF Yes
testValue xsd:boolean Yes
any namespace="##other"  ?
DisplayElementGroup DisplayElementGroup Merge
Name <VariableExpressionType> Merge
VersionConstraint <VersionConstraintValueType> Merge
PropertyConstraint <ConditionalPropertyConstraintType> Merge
UniquenessConstraint <UniquenessConstraintType> Merge
RelationshipConstraint <RelationshipConstraintType> Merge
any namespace="##other"  ?

Notes:
The comparison of resourceRef involves comparing the Resource pointed to, not the reference itself.

When comparing testValue, a missing value is the same as a true value since true is the default.

<AlternativeConditionalType>

<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>
Type Element Attribute Data Type Compare?
<AlternativeConditionalType>
id xsd:ID Throw Away
any namespace="##other"  ?
DisplayElementGroup DisplayElementGroup Merge
ResourceConstraint <ConditionalResourceConstraintType> Merge
any namespace="##other"  ?

<OperationType>

<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>
Type Element Attribute Data Type Compare?
<OperationType> xsd:NCName Yes

<OperationListType>

<xsd:simpleType name="OperationListType">
  <xsd:list itemType="sdd-dd:OperationType"/>
</xsd:simpleType>
Type Element Attribute Data Type Compare?
<OperationListType> List Of:<OperationType> Yes

<ConditionType>

<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>
Type Element Attribute Data Type Compare?
<ConditionType>
operation <OperationListType> Yes
any namespace="##other"  ?
DisplayElementGroup DisplayElementGroup Merge
Alternative <AlternativeConditionalType> Merge
ResourceConstraint <ConditionalResourceConstraintType> Merge
any namespace="##other"  ?

Notes:
May need to look at operation here when deciding what kind of ContentUnits to output in the merged descriptor.

<BaseParameterType>

<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>
Type Element Attribute Data Type Compare?
<BaseParameterType>
id xsd:ID Throw Aawy
defaultValue <VariableExpressionType> Yes
sensitive xsd:boolean Yes
required xsd:boolean Yes
operation <OperationListType> Yes
DisplayElementGroup DisplayElementGroup Merge

<BoundaryType>

<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>
Type Element Attribute Data Type Compare?
<BoundaryType>
LowerBound <VariableExpressionType> Yes
UpperBound <VariableExpressionType> Yes

<IntegerParameterType>

<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>
Type Element Attribute Data Type Compare?
<IntegerParameterType> Extension Of:<BaseParameterType>
any namespace="##other"  ?
Bounds <BoundaryType> Merge

<StringCaseType>

<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>
Type Element Attribute Data Type Compare?
<StringCaseType> xsd:NCName Yes

<StringParameterType>

<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>
Type Element Attribute Data Type Compare?
<StringParameterType> Extension Of:<BaseParameterType>
minLength xsd:positiveInteger Merge
maxLength xsd:positiveInteger Merge
case <StringCaseType> Merge
any namespace="##other"  ?
ValidValue xsd:string Merge

Notes:
A warning should be logged describing the way minLength, maxLength and ValueValue are merged. The default is to combine all ValueValues, take the longest minLength and the shortest maxLength. If minLength ends up longer than maxLength, then throw an error.

For case, if the values don't match then the output becomes mixed. So, upper and lower would merge to mixed, as would upper and mixed or lower and mixed.

<BooleanParameterType>

<xsd:complexType name="BooleanParameterType">
  <xsd:complexContent>
    <xsd:extension base="sdd-dd:BaseParameterType">
      <xsd:anyAttribute namespace="##other" processContents="lax"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>
Type Element Attribute Data Type Compare?
<BooleanParameterType> Extension Of:<BaseParameterType>
any namespace="##other"  ?

<URIParameterType>


Type Element Attribute Data Type Compare?

Notes:

<ParametersType>


Type Element Attribute Data Type Compare?

Notes:

<BaseVariableType>


Type Element Attribute Data Type Compare?

Notes:

<ResourcePropertyType>


Type Element Attribute Data Type Compare?

Notes:

<ConditionalDerivedVariableExpressionType>


Type Element Attribute Data Type Compare?

Notes:

<DerivedVariableType>


Type Element Attribute Data Type Compare?

Notes:

<VariablesType>


Type Element Attribute Data Type Compare?

Notes:

<RequiredBaseConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<AlternativeRequiredBaseConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<RequiredBaseType>


Type Element Attribute Data Type Compare?

Notes:

<CapacityValueType>


Type Element Attribute Data Type Compare?

Notes:

<CapacityConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<ConsumptionConstraintValueType>


Type Element Attribute Data Type Compare?

Notes:

<ConsumptionConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<PropertyConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<RequirementResourceConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<DependencyType>


Type Element Attribute Data Type Compare?

Notes:

<InternalDependencyType>


Type Element Attribute Data Type Compare?

Notes:

<AlternativeRequirementType>


Type Element Attribute Data Type Compare?

Notes:

<RequirementType>


Type Element Attribute Data Type Compare?

Notes:

<RequirementsType>


Type Element Attribute Data Type Compare?

Notes:

<LanguageType>


Type Element Attribute Data Type Compare?

Notes:

<LanguagesType>


Type Element Attribute Data Type Compare?

Notes:

<SDDCompletionTypeNamesType>


Type Element Attribute Data Type Compare?

Notes:

<CompletionTypeNamesType>


Type Element Attribute Data Type Compare?

Notes:

<CompletionType>


Type Element Attribute Data Type Compare?

Notes:

<ResultingPropertyType>


Type Element Attribute Data Type Compare?

Notes:

<RelationshipType>


Type Element Attribute Data Type Compare?

Notes:

<ResultingResourceType>


Type Element Attribute Data Type Compare?

Notes:

<ResultingChangeType>


Type Element Attribute Data Type Compare?

Notes:

<ArgumentType>


Type Element Attribute Data Type Compare?

Notes:

<ArgumentListType>


Type Element Attribute Data Type Compare?

Notes:

<OutputVariableType>


Type Element Attribute Data Type Compare?

Notes:

<OutputVariableListType>


Type Element Attribute Data Type Compare?

Notes:

<SubstitutionType>


Type Element Attribute Data Type Compare?

Notes:

<ArtifactTypeNameType>


Type Element Attribute Data Type Compare?

Notes:

<AdditionalContentType>


Type Element Attribute Data Type Compare?

Notes:

<ArtifactType>


Type Element Attribute Data Type Compare?

Notes:

<InstallationArtifactsType>


Type Element Attribute Data Type Compare?

Notes:

<InstallableUnitType>


Type Element Attribute Data Type Compare?

Notes:

<ConfigurationArtifactsType>


Type Element Attribute Data Type Compare?

Notes:

<ConfigurationUnitType>


Type Element Attribute Data Type Compare?

Notes:

<LocalizationUnitType>


Type Element Attribute Data Type Compare?

Notes:

<LanguageSetType>


Type Element Attribute Data Type Compare?

Notes:

<OptionalLanguagesType>


Type Element Attribute Data Type Compare?

Notes:

<LanguageSelectionsType>


Type Element Attribute Data Type Compare?

Notes:

<CompositeUnitType>


Type Element Attribute Data Type Compare?

Notes:

<ContentSelectionFeatureType>


Type Element Attribute Data Type Compare?

Notes:

<RequiredContentSelectionType>


Type Element Attribute Data Type Compare?

Notes:

<ResourceMapType>


Type Element Attribute Data Type Compare?

Notes:

<ResultingResourceMapType>


Type Element Attribute Data Type Compare?

Notes:

<ResultingChangeMapType>


Type Element Attribute Data Type Compare?

Notes:

<ReferencedPackageType>


Type Element Attribute Data Type Compare?

Notes:

<BaseContentType>


Type Element Attribute Data Type Compare?

Notes:

<FeatureReferenceType>


Type Element Attribute Data Type Compare?

Notes:

<GroupType>


Type Element Attribute Data Type Compare?

Notes:

<GroupsType>


Type Element Attribute Data Type Compare?

Notes:

<MultiplicityConstraintType>


Type Element Attribute Data Type Compare?

Notes:

<ConstrainedResourceType>


Type Element Attribute Data Type Compare?

Notes:

<MultiplicityType>


Type Element Attribute Data Type Compare?

Notes:

<ContentElementReferenceType>


Type Element Attribute Data Type Compare?

Notes:

<PackageFeatureReferenceType>


Type Element Attribute Data Type Compare?

Notes:

<NestedFeatureType>


Type Element Attribute Data Type Compare?

Notes:

<FeatureType>


Type Element Attribute Data Type Compare?

Notes:

<MultiSelectType>


Type Element Attribute Data Type Compare?

Notes:

<FeaturesType>


Type Element Attribute Data Type Compare?

Notes:

<SelectableContentType>


Type Element Attribute Data Type Compare?

Notes:

<CompositeLocalizationUnitType>


Type Element Attribute Data Type Compare?

Notes:

<LocalizationContentType>


Type Element Attribute Data Type Compare?

Notes:

<CompositeInstallableType>


Type Element Attribute Data Type Compare?

Notes:

<RequisitesType>


Type Element Attribute Data Type Compare?

Notes:

<DeploymentDescriptorType>


Type Element Attribute Data Type Compare?

Notes:

Back to the top