<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xlink="http://www.w3.org/1999/xlink"
	xmlns:xmi="http://www.omg.org/2000/XMI"
	targetNamespace="http://www.w3.org/1999/xlink"
	elementFormDefault="unqualified"
	attributeFormDefault="unqualified">

   <!--oooooooooooooooo                  DCX extended XMI                  oooooooooooooooo-->
   <xsd:annotation>
      <xsd:documentation>Created by DaimlerChrysler XSD-Generator Thu Nov 08 20:29:00 GMT+02:00 2001</xsd:documentation>
   </xsd:annotation>

   <xsd:attribute form="qualified" name="type" type="xsd:string"/>

   <xsd:attributeGroup name="LinkAttribs">
      <xsd:attribute name="type" type="xsd:string" use="required" form="qualified"/>
      <xsd:attribute name="href" type="xsd:string" use="required" form="qualified"/>
      <xsd:attribute name="role" type="xsd:string" form="qualified"/>
      <xsd:attribute name="arcrole" type="xsd:string" form="qualified"/>
      <xsd:attribute name="title" type="xsd:string" form="qualified"/>
      <xsd:attribute name="show" form="qualified">
         <xsd:simpleType>
            <xsd:restriction base="xsd:string">
               <xsd:enumeration value="embed"/>
               <xsd:enumeration value="replace"/>
               <xsd:enumeration value="new"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="actuate" form="qualified">
         <xsd:simpleType>
            <xsd:restriction base="xsd:string">
               <xsd:enumeration value="show"/>
               <xsd:enumeration value="user"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
   </xsd:attributeGroup>
   <xsd:attributeGroup name="IdentityAttribs">
      <xsd:attribute name="id" type="xsd:ID"/>
      <xsd:attribute name="label" type="xsd:string"/>
   </xsd:attributeGroup>

   <xsd:attributeGroup name="modelAttribGroup">
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="name" use="required" type="xsd:string"/>
      <xsd:attribute name="version" type="xsd:string"/>
   </xsd:attributeGroup>


   <xsd:element name="XMI">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="XMI.header" minOccurs="0">
				   <xsd:complexType>
				      <xsd:sequence>
				         <xsd:element name="documentation" minOccurs="0">
							   <xsd:complexType mixed="true">
							      <xsd:choice minOccurs="0" maxOccurs="unbounded">
							         <xsd:element name="owner"/>
							         <xsd:element name="contact"/>
							         <xsd:element name="longDescription"/>
							         <xsd:element name="shortDescription"/>
							         <xsd:element name="exporter"/>
							         <xsd:element name="exporterVersion"/>
							         <xsd:element name="notice"/>
							      </xsd:choice>
							   </xsd:complexType>
				         </xsd:element>
				         <xsd:element name="model" minOccurs="0" maxOccurs="unbounded">
				            <xsd:complexType>
				               <xsd:attributeGroup ref="modelAttribGroup"/>
                        </xsd:complexType>
				         </xsd:element>

				         <xsd:element name="metamodel" minOccurs="0" maxOccurs="unbounded">
				            <xsd:complexType>
				               <xsd:attributeGroup ref="modelAttribGroup"/>
                        </xsd:complexType>
				         </xsd:element>

				         <xsd:element name="metametamodel" minOccurs="0" maxOccurs="unbounded">
  				            <xsd:complexType>
				               <xsd:attributeGroup ref="modelAttribGroup"/>
                        </xsd:complexType>
				         </xsd:element>

				         <xsd:element name="import" minOccurs="0" maxOccurs="unbounded">
 				            <xsd:complexType>
				               <xsd:attributeGroup ref="modelAttribGroup"/>
                        </xsd:complexType>
				         </xsd:element>

				      </xsd:sequence>
				   </xsd:complexType>
            </xsd:element>
            <xsd:element name="XMI.content" minOccurs="0"/>
            <xsd:element name="XMI.difference" type="differenceType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="XMI.extensions" type="extensionsType" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
         <xsd:attribute name="XMI.version" fixed="2.0dcx0.9" type="xsd:string"/>
         <xsd:attribute name="timestamp" type="xsd:string"/>
         <xsd:attribute name="verified" type="xsd:boolean"/>
      </xsd:complexType>
   </xsd:element>

   <xsd:complexType name="extensionsType">
      <xsd:complexContent>
         <xsd:extension base="xsd:anyType">
            <xsd:attribute name="extender" use="required" type="xsd:string"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:element name="extension" type="extensionType"/>
   <xsd:complexType name="extensionType">
      <xsd:complexContent>
         <xsd:extension base="xsd:anyType">
            <xsd:attributeGroup ref="IdentityAttribs"/>
            <xsd:attributeGroup ref="LinkAttribs"/>
            <xsd:attribute name="extender" use="required" type="xsd:string"/>
            <xsd:attribute name="extenderID" type="xsd:string"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:element name="extensionComp">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element ref="extension" maxOccurs="unbounded"/>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
   <xsd:complexType name="differenceType">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element name="difference" type="differenceType"/>
         <xsd:element name="delete" type="deleteType"/>
         <xsd:element name="add" type="addType"/>
         <xsd:element name="replace" type="replaceType"/>
      </xsd:choice>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
   </xsd:complexType>
   <xsd:complexType name="deleteType">
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
   </xsd:complexType>

   <xsd:complexType name="addType">
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="position" default="-1" type="xsd:integer"/>
   </xsd:complexType>

   <xsd:complexType name="replaceType">
      <xsd:complexContent>
         <xsd:extension base="addType"/>
      </xsd:complexContent>
   </xsd:complexType>

   <xsd:element name="reference" type="referenceType"/>
   <xsd:complexType name="referenceType">
      <xsd:complexContent>
         <xsd:extension base="xsd:anyType">
            <xsd:attributeGroup ref="LinkAttribs"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="value" mixed="true">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:element ref="reference" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:attribute name="value" type="xsd:string"/>
   </xsd:complexType>
   <!--*********************** some of our own declarations **************************-->
   <xsd:simpleType name="time">
      <xsd:union memberTypes="xsd:time xsd:date xsd:gMonth xsd:gYear"/>
   </xsd:simpleType>
   <!--*********************** begin (meta)model specific part ***********************-->
   <xsd:element name="example">
      <xsd:complexType>
         <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element ref="Class1"/>
            <xsd:element ref="Class2"/>
            <xsd:element ref="Class3"/>
            <xsd:element ref="Class4"/>
         </xsd:choice>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="enum1" type="enum1Type"/>
   <xsd:element name="enum2" type="enum2Type"/>
   <xsd:element name="Class1" type="Class1Type"/>
   <xsd:element name="Class2" type="Class2Type"/>
   <xsd:element name="Class3" type="Class3Type"/>
   <xsd:element name="Association4" type="Association4Type"/>
   <xsd:element name="Association3" type="Association3Type"/>
   <xsd:element name="Class4" type="Class4Type"/>
   <xsd:element name="enum1.alt1" type="xsd:string"/>
   <xsd:element name="enum2.alt2" type="xsd:string"/>
   <xsd:element name="enum2.alt3" type="xsd:string"/>
   <xsd:simpleType name="enum1AttType">
      <xsd:restriction base="xsd:string">
         <xsd:enumeration value="alt1"/>
         <xsd:enumeration value="alt2"/>
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:simpleType name="enum2AttType">
      <xsd:restriction base="xsd:string">
         <xsd:enumeration value="alt1"/>
         <xsd:enumeration value="alt2"/>
         <xsd:enumeration value="alt3"/>
      </xsd:restriction>
   </xsd:simpleType>

   <xsd:complexType name="enum1Type">
      <xsd:sequence>
         <xsd:element ref="enum1.alt1" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="alt1" type="xsd:string" use="optional"/>
   </xsd:complexType>

   <xsd:complexType name="enum2Type">
      <xsd:complexContent>
         <xsd:extension base="enum1Type">
            <xsd:sequence>
               <xsd:element ref="enum2.alt2" minOccurs="0" maxOccurs="1"/>
               <xsd:element ref="enum2.alt3" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attributeGroup ref="IdentityAttribs"/>
            <xsd:attributeGroup ref="LinkAttribs"/>
            <xsd:attribute name="alt2" type="xsd:string" use="optional"/>
            <xsd:attribute name="alt3" type="xsd:string" use="optional"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>

   <xsd:complexType name="Class1Type">
      <xsd:sequence>
         <xsd:element ref="Class1.att1" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="Class1.att2" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
         <xsd:element name="Class1.roleC21" minOccurs="0">
            <xsd:complexType>
               <xsd:choice minOccurs="1" maxOccurs="unbounded">
                  <xsd:element ref="Class2"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class1.roleC22" minOccurs="0">
            <xsd:complexType>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element ref="Class2"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class1.roleC41.roleC24" minOccurs="0">
            <xsd:complexType>
               <xsd:sequence minOccurs="1" maxOccurs="unbounded">
                  <xsd:element name="value">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="Association4"/>
                           <xsd:element ref="Class4"/>
                           <xsd:element ref="Class2"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class1.roleC23" minOccurs="0">
            <xsd:complexType>
               <xsd:sequence minOccurs="3" maxOccurs="6">
                  <xsd:element name="value">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="Association3"/>
                           <xsd:element ref="Class2"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="att1" type="xsd:integer" use="optional"/>
      <xsd:attribute name="att2" type="xsd:string" use="optional"/>
   </xsd:complexType>
   <xsd:complexType name="Class2Type">
      <xsd:all>
         <xsd:element ref="Class2.att10" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
         <xsd:element name="Class2.roleC11" minOccurs="0">
            <xsd:complexType>
               <xsd:choice minOccurs="1" maxOccurs="unbounded">
                  <xsd:element ref="Class1"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class2.roleC12" minOccurs="0">
            <xsd:complexType>
               <xsd:choice minOccurs="0" maxOccurs="1">
                  <xsd:element ref="Class1"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class2.roleC14.roleC41" minOccurs="0">
            <xsd:complexType>
               <xsd:sequence minOccurs="1" maxOccurs="unbounded">
                  <xsd:element name="value">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="Association4"/>
                           <xsd:element ref="Class1"/>
                           <xsd:element ref="Class4"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class2.roleC13" minOccurs="0">
            <xsd:complexType>
               <xsd:sequence minOccurs="2" maxOccurs="5">
                  <xsd:element name="value">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="Association3"/>
                           <xsd:element ref="Class1"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
      </xsd:all>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="att10" type="xsd:decimal" use="optional"/>
   </xsd:complexType>

   <xsd:complexType name="Class3Type">
      <xsd:complexContent>
         <xsd:extension base="Class1Type">
            <xsd:sequence>
               <xsd:element ref="Class3.att5" minOccurs="0" maxOccurs="1"/>
               <xsd:element ref="Class3.att6" minOccurs="0" maxOccurs="1"/>
               <xsd:element ref="Class3.att7" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attributeGroup ref="IdentityAttribs"/>
            <xsd:attributeGroup ref="LinkAttribs"/>
            <xsd:attribute name="att5" type="xsd:string" fixed="3.14"/>
            <xsd:attribute name="att6" type="xsd:short" use="optional"/>
            <xsd:attribute name="att7" type="enum1AttType" use="optional"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>

   <xsd:complexType name="Association4Type">
      <xsd:all>
         <xsd:element ref="Association4.att8" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
      </xsd:all>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
   </xsd:complexType>
   <xsd:complexType name="Association3Type">
      <xsd:all>
         <xsd:element ref="Association3.att3" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="Association3.att4" minOccurs="0" maxOccurs="1"/>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
      </xsd:all>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
      <xsd:attribute name="att4" type="xsd:long" default="42"/>
   </xsd:complexType>
   <xsd:complexType name="Class4Type">
      <xsd:all>
         <xsd:element ref="extensionComp" minOccurs="0" maxOccurs="1"/>
         <xsd:element name="Class4.roleC24" minOccurs="0">
            <xsd:complexType>
               <xsd:choice minOccurs="1" maxOccurs="1">
                  <xsd:element ref="Class2"/>
               </xsd:choice>
            </xsd:complexType>
         </xsd:element>
         <xsd:element name="Class4.roleC14.roleC24" minOccurs="0">
            <xsd:complexType>
               <xsd:sequence minOccurs="1" maxOccurs="unbounded">
                  <xsd:element name="value">
                     <xsd:complexType>
                        <xsd:sequence>
                           <xsd:element ref="Association4"/>
                           <xsd:element ref="Class1"/>
                           <xsd:element ref="Class2"/>
                        </xsd:sequence>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
      </xsd:all>
      <xsd:attributeGroup ref="IdentityAttribs"/>
      <xsd:attributeGroup ref="LinkAttribs"/>
   </xsd:complexType>
   <xsd:element name="Class1.att1" type="xsd:integer"/>
   <xsd:element name="Class1.att2" type="xsd:string"/>
   <xsd:element name="Class2.att10" type="xsd:decimal"/>
   <xsd:element name="Class3.att5" type="xsd:string"/>
   <xsd:element name="Class3.att6" type="xsd:short"/>
   <xsd:element name="Class3.att7">
      <xsd:complexType>
         <xsd:attribute name="xmi.value" type="enum1AttType"/>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="Association4.att8">
      <xsd:complexType>
         <xsd:choice minOccurs="0" maxOccurs="3">
            <xsd:element name="value" type="enum2AttType"/>
         </xsd:choice>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="Association3.att3">
      <xsd:complexType>
         <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="value" type="xsd:date"/>
         </xsd:choice>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="Association3.att4" type="xsd:long"/>
</xsd:schema>



