<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Model">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="GeneralConfig">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="ModelName"/>
              <xsd:element name="Version"/>
              <xsd:element name="Description"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="DSReference">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="DomainName"/>
              <xsd:element name="BasePort"/>
              <xsd:element name="DSHostName"/>
              <xsd:element name="User"/>
              <xsd:element name="Password"/>
              <xsd:element name="CAAConnectionURL" minOccurs="0"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element ref="RuntimeComponent" maxOccurs="unbounded"/>
        <xsd:element ref="ConfigurationComponent" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="ComponentType">
    <xsd:sequence>
      <xsd:element name="Hosts" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Host" minOccurs="1" maxOccurs="unbounded" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="RuntimeComponentType">
    <xsd:complexContent>
      <xsd:extension base="ComponentType">
        <xsd:sequence>
          <xsd:element name="License" type="xsd:string"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ConfigurationComponentType">
    <xsd:complexContent>
      <xsd:extension base="ComponentType">
        <xsd:sequence>
          <xsd:element name="Id" type="xsd:ID" minOccurs="0" maxOccurs="1"/>
          <xsd:element name="ParameterSet" type="xsd:IDREF" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="RuntimeComponent" abstract="true" type="RuntimeComponentType"/>
  <xsd:element name="ConfigurationComponent" abstract="true" type="ConfigurationComponentType"/>
  <xsd:element name="DSReference" substitutionGroup="RuntimeComponent">
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="RuntimeComponentType">
          <xsd:sequence>
            <xsd:element minOccurs="0" name="BasePort" type="xsd:positiveInteger"/>
            <xsd:element minOccurs="0" name="BrokerName" type="xsd:NCName"/>
            <xsd:element minOccurs="0" name="TargetContainer" type="xsd:NCName"/>
            <xsd:element minOccurs="0" name="TargetHost" type="xsd:string"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>