<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xmi="http://www.omg.org/XMI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" targetNamespace="http://www.eclipse.org/emf/2002/Ecore">
<xsd:import schemaLocation="XMI.xsd" namespace="http://www.omg.org/XMI"/>
<xsd:complexType name="EAttribute">
<xsd:complexContent>
<xsd:extension base="ecore:EStructuralFeature">
<xsd:attribute name="iD" type="xsd:boolean"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EAttribute" type="ecore:EAttribute"/>
<xsd:complexType name="EAnnotation">
<xsd:complexContent>
<xsd:extension base="ecore:EModelElement">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="details" type="ecore:EStringToStringMapEntry"/>
<xsd:element name="contents" type="ecore:EObject"/>
<xsd:element name="references" type="ecore:EObject"/>
</xsd:choice>
<xsd:attribute name="source" type="xsd:string"/>
<xsd:attribute name="references" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EAnnotation" type="ecore:EAnnotation"/>
<xsd:complexType name="EClass">
<xsd:complexContent>
<xsd:extension base="ecore:EClassifier">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eSuperTypes" type="ecore:EClass"/>
<xsd:element name="eOperations" type="ecore:EOperation"/>
<xsd:element name="eStructuralFeatures" type="ecore:EStructuralFeature"/>
</xsd:choice>
<xsd:attribute name="abstract" type="xsd:boolean"/>
<xsd:attribute name="interface" type="xsd:boolean"/>
<xsd:attribute name="eSuperTypes" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EClass" type="ecore:EClass"/>
<xsd:complexType name="EClassifier">
<xsd:complexContent>
<xsd:extension base="ecore:ENamedElement">
<xsd:attribute name="instanceClassName" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EClassifier" type="ecore:EClassifier"/>
<xsd:complexType name="EDataType">
<xsd:complexContent>
<xsd:extension base="ecore:EClassifier">
<xsd:attribute name="serializable" type="xsd:boolean"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EDataType" type="ecore:EDataType"/>
<xsd:complexType name="EEnum">
<xsd:complexContent>
<xsd:extension base="ecore:EDataType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eLiterals" type="ecore:EEnumLiteral"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EEnum" type="ecore:EEnum"/>
<xsd:complexType name="EEnumLiteral">
<xsd:complexContent>
<xsd:extension base="ecore:ENamedElement">
<xsd:attribute name="value" type="xsd:int"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EEnumLiteral" type="ecore:EEnumLiteral"/>
<xsd:complexType name="EFactory">
<xsd:complexContent>
<xsd:extension base="ecore:EModelElement"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EFactory" type="ecore:EFactory"/>
<xsd:complexType name="EModelElement">
<xsd:complexContent>
<xsd:extension base="ecore:EObject">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eAnnotations" type="ecore:EAnnotation"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EModelElement" type="ecore:EModelElement"/>
<xsd:complexType name="ENamedElement">
<xsd:complexContent>
<xsd:extension base="ecore:EModelElement">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="ENamedElement" type="ecore:ENamedElement"/>
<xsd:complexType name="EObject">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xmi:Extension"/>
</xsd:choice>
<xsd:attribute ref="xmi:id"/>
<xsd:attributeGroup ref="xmi:ObjectAttribs"/>
</xsd:complexType>
<xsd:element name="EObject" type="ecore:EObject"/>
<xsd:complexType name="EOperation">
<xsd:complexContent>
<xsd:extension base="ecore:ETypedElement">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eParameters" type="ecore:EParameter"/>
<xsd:element name="eExceptions" type="ecore:EClassifier"/>
</xsd:choice>
<xsd:attribute name="eExceptions" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EOperation" type="ecore:EOperation"/>
<xsd:complexType name="EPackage">
<xsd:complexContent>
<xsd:extension base="ecore:ENamedElement">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eClassifiers" type="ecore:EClassifier"/>
<xsd:element name="eSubpackages" type="ecore:EPackage"/>
</xsd:choice>
<xsd:attribute name="nsURI" type="xsd:string"/>
<xsd:attribute name="nsPrefix" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EPackage" type="ecore:EPackage"/>
<xsd:complexType name="EParameter">
<xsd:complexContent>
<xsd:extension base="ecore:ETypedElement"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EParameter" type="ecore:EParameter"/>
<xsd:complexType name="EReference">
<xsd:complexContent>
<xsd:extension base="ecore:EStructuralFeature">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eOpposite" type="ecore:EReference"/>
</xsd:choice>
<xsd:attribute name="containment" type="xsd:boolean"/>
<xsd:attribute name="resolveProxies" type="xsd:boolean"/>
<xsd:attribute name="eOpposite" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EReference" type="ecore:EReference"/>
<xsd:complexType name="EStructuralFeature">
<xsd:complexContent>
<xsd:extension base="ecore:ETypedElement">
<xsd:attribute name="changeable" type="xsd:boolean"/>
<xsd:attribute name="volatile" type="xsd:boolean"/>
<xsd:attribute name="transient" type="xsd:boolean"/>
<xsd:attribute name="defaultValueLiteral" type="xsd:string"/>
<xsd:attribute name="unsettable" type="xsd:boolean"/>
<xsd:attribute name="derived" type="xsd:boolean"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EStructuralFeature" type="ecore:EStructuralFeature"/>
<xsd:complexType name="ETypedElement">
<xsd:complexContent>
<xsd:extension base="ecore:ENamedElement">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eType" type="ecore:EClassifier"/>
</xsd:choice>
<xsd:attribute name="ordered" type="xsd:boolean"/>
<xsd:attribute name="unique" type="xsd:boolean"/>
<xsd:attribute name="lowerBound" type="xsd:int"/>
<xsd:attribute name="upperBound" type="xsd:int"/>
<xsd:attribute name="eType" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="ETypedElement" type="ecore:ETypedElement"/>
<xsd:complexType name="EStringToStringMapEntry">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xmi:Extension"/>
</xsd:choice>
<xsd:attribute ref="xmi:id"/>
<xsd:attributeGroup ref="xmi:ObjectAttribs"/>
<xsd:attribute name="key" type="xsd:string"/>
<xsd:attribute name="value" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="EStringToStringMapEntry" type="ecore:EStringToStringMapEntry"/>
</xsd:schema>
