5.1 http://schemas.microsoft.com/windows/2007/BusinessDataCatalog Schema

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:bdc="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog" targetNamespace="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog" elementFormDefault="qualified">
   <xs:element name="Model" type="bdc:Model"/>
   <xs:complexType name="Model">
     <xs:complexContent>
       <xs:extension base="bdc:IndividuallySecurableMetadataObject">
         <xs:sequence>
           <xs:element name="LobSystems" type="bdc:LobSystems" minOccurs="0" maxOccurs="1">
             <xs:unique name="LobSystemNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LobSystems">
     <xs:sequence>
       <xs:element name="LobSystem" type="bdc:LobSystem" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="MetadataObject" abstract="true">
     <xs:sequence>
       <xs:element name="LocalizedDisplayNames" type="bdc:LocalizedDisplayNames" minOccurs="0" maxOccurs="1">
         <xs:unique name="LocalizedDisplayNameLCIDKey">
           <xs:selector xpath="*"/>
           <xs:field xpath="@LCID"/>
         </xs:unique>
       </xs:element>
       <xs:element name="Properties" type="bdc:Properties" minOccurs="0" maxOccurs="1">
         <xs:unique name="PropertyNameKey">
           <xs:selector xpath="*"/>
           <xs:field xpath="@Name"/>
         </xs:unique>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Name" type="bdc:NameString" use="required"/>
     <xs:attribute name="DefaultDisplayName" type="bdc:NameString"/>
     <xs:attribute name="IsCached" type="xs:boolean" default="true"/>
   </xs:complexType>
   <xs:complexType name="IndividuallySecurableMetadataObject" abstract="true">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:sequence>
           <xs:element name="AccessControlList" type="bdc:AccessControlList" minOccurs="0" maxOccurs="1"/>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="LocalizedDisplayNames">
     <xs:sequence>
       <xs:element name="LocalizedDisplayName" type="bdc:LocalizedDisplayName" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="LocalizedDisplayName" mixed="true">
     <xs:attribute name="LCID" type="xs:integer" use="required"/>
   </xs:complexType>
   <xs:complexType name="LobSystem">
     <xs:complexContent>
       <xs:extension base="bdc:IndividuallySecurableMetadataObject">
         <xs:sequence>
           <xs:element name="Proxy" type="xs:string" minOccurs="0" maxOccurs="1"/>
           <xs:element name="LobSystemInstances" type="bdc:LobSystemInstances" minOccurs="0" maxOccurs="1">
             <xs:unique name="LobSystemInstanceNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
           <xs:element name="Entities" type="bdc:Entities" minOccurs="0" maxOccurs="1">
             <xs:unique name="EntityNameNamespaceVersionKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
               <xs:field xpath="@Namespace"/>
               <xs:field xpath="@Version"/>
             </xs:unique>
           </xs:element>
         </xs:sequence>
         <xs:attribute name="Type" type="bdc:LobSystemType" use="required"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="LobSystemType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Database"/>
       <xs:enumeration value="DotNetAssembly"/>
       <xs:enumeration value="Wcf"/>
       <xs:enumeration value="WebService"/>
       <xs:enumeration value="Custom"/>
       <xs:enumeration value="OData"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="LobSystemInstances">
     <xs:sequence>
       <xs:element name="LobSystemInstance" type="bdc:LobSystemInstance" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="LobSystemInstance">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject"/>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Entities">
     <xs:sequence>
       <xs:element name="Entity" type="bdc:Entity" minOccurs="1" maxOccurs="unbounded">
         <xs:unique name="MethodInstanceNameKey">
           <xs:selector xpath=".//bdc:MethodInstances/*"/>
           <xs:field xpath="@Name"/>
         </xs:unique>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Entity">
     <xs:complexContent>
       <xs:extension base="bdc:IndividuallySecurableMetadataObject">
         <xs:sequence>
           <xs:element name="Identifiers" type="bdc:Identifiers" minOccurs="0">
             <xs:unique name="IdentifierNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
           <xs:element name="Methods" type="bdc:Methods" minOccurs="0">
             <xs:unique name="MethodNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
           <xs:element name="AssociationGroups" type="bdc:AssociationGroups" minOccurs="0">
             <xs:unique name="AssociationGroupNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
           <xs:element name="Actions" type="bdc:Actions" minOccurs="0">
             <xs:unique name="ActionNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
         </xs:sequence>
         <xs:attribute name="Namespace" type="bdc:NameString" use="required"/>
         <xs:attribute name="Version" type="bdc:VersionString" use="required"/>
         <xs:attribute name="EstimatedInstanceCount" type="bdc:InstanceCount" default="10000"/>
         <xs:attribute name="DefaultOperationMode" type="bdc:OperationModeType" default="Default" use="optional"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="OperationModeType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Online"/>
       <xs:enumeration value="Cached"/>
       <xs:enumeration value="Offline"/>
       <xs:enumeration value="Default"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="AssociationGroups">
     <xs:sequence>
       <xs:element name="AssociationGroup" type="bdc:AssociationGroup" minOccurs="1" maxOccurs="unbounded">
         <xs:unique name="AssociationReferenceAssociationNameEntityNameEntityNamespaceKey">
           <xs:selector xpath="*"/>
           <xs:field xpath="@EntityNamespace"/>
           <xs:field xpath="@EntityName"/>
           <xs:field xpath="@AssociationName"/>
         </xs:unique>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="AssociationGroup">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:sequence>
           <xs:element name="AssociationReference" type="bdc:AssociationReference" minOccurs="1" maxOccurs="unbounded"/>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="AssociationReference">
     <xs:attribute name="EntityNamespace" type="bdc:NameString" use="optional"/>
     <xs:attribute name="EntityName" type="bdc:NameString" use="optional"/>
     <xs:attribute name="AssociationName" type="bdc:NameString" use="required"/>
     <xs:attribute name="Reverse" type="xs:boolean" use="optional" default="false"/>
   </xs:complexType>
   <xs:complexType name="Identifiers">
     <xs:sequence>
       <xs:element name="Identifier" type="bdc:Identifier" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Identifier">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:attribute name="TypeName" type="bdc:IdentifierType" use="required"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="IdentifierType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="System.Boolean"/>
       <xs:enumeration value="System.Byte"/>
       <xs:enumeration value="System.Char"/>
       <xs:enumeration value="System.DateTime"/>
       <xs:enumeration value="System.Decimal"/>
       <xs:enumeration value="System.Double"/>
       <xs:enumeration value="System.Guid"/>
       <xs:enumeration value="System.Int16"/>
       <xs:enumeration value="System.Int32"/>
       <xs:enumeration value="System.Int64"/>
       <xs:enumeration value="System.SByte"/>
       <xs:enumeration value="System.Single"/>
       <xs:enumeration value="System.String"/>
       <xs:enumeration value="System.TimeSpan"/>
       <xs:enumeration value="System.UInt16"/>
       <xs:enumeration value="System.UInt32"/>
       <xs:enumeration value="System.UInt64"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="Methods">
     <xs:sequence>
       <xs:element name="Method" type="bdc:Method" minOccurs="1" maxOccurs="unbounded">
         <xs:key name="ParameterNameKey">
           <xs:selector xpath=".//bdc:Parameter"/>
           <xs:field xpath="@Name"/>
         </xs:key>
         <xs:keyref name="ParameterNameRef" refer="bdc:ParameterNameKey">
           <xs:selector xpath=".//bdc:MethodInstances/*"/>
           <xs:field xpath="@ReturnParameterName"/>
         </xs:keyref>
         <xs:key name="MethodMethodInstanceNameKey">
           <xs:selector xpath=".//bdc:MethodInstances/*"/>
           <xs:field xpath="@Name"/>
         </xs:key>
         <xs:keyref name="DefaultValueMethodInstanceNameRef" refer="bdc:MethodMethodInstanceNameKey">
           <xs:selector xpath=".//bdc:DefaultValue"/>
           <xs:field xpath="@MethodInstanceName"/>
         </xs:keyref>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Method">
     <xs:complexContent>
       <xs:extension base="bdc:IndividuallySecurableMetadataObject">
         <xs:sequence>
           <xs:element name="FilterDescriptors" type="bdc:FilterDescriptors" minOccurs="0" maxOccurs="1">
             <xs:unique name="FilterDescriptorNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
           <xs:element name="Parameters" type="bdc:Parameters" minOccurs="0" maxOccurs="1"/>
           <xs:element name="MethodInstances" type="bdc:MethodInstances" minOccurs="0" maxOccurs="1"/>
         </xs:sequence>
         <xs:attribute name="IsStatic" type="xs:boolean" default="true"/>
         <xs:attribute name="LobName" type="bdc:NameString" use="optional"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="FilterDescriptors">
     <xs:sequence>
       <xs:element name="FilterDescriptor" type="bdc:FilterDescriptor" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="FilterDescriptor">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:attribute name="Type" type="bdc:FilterDescriptorType" use="required"/>
         <xs:attribute name="FilterField" type="bdc:NameString" use="optional"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="FilterDescriptorType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Limit"/>
       <xs:enumeration value="PageNumber"/>
       <xs:enumeration value="Wildcard"/>
       <xs:enumeration value="UserContext"/>
       <xs:enumeration value="UserCulture"/>
       <xs:enumeration value="Username"/>
       <xs:enumeration value="Password"/>
       <xs:enumeration value="LastId"/>
       <xs:enumeration value="SsoTicket"/>
       <xs:enumeration value="UserProfile"/>
       <xs:enumeration value="Comparison"/>
       <xs:enumeration value="Timestamp"/>
       <xs:enumeration value="Input"/>
       <xs:enumeration value="Output"/>
       <xs:enumeration value="InputOutput"/>
       <xs:enumeration value="Batching"/>
       <xs:enumeration value="BatchingTermination"/>
       <xs:enumeration value="ActivityId"/>
       <xs:enumeration value="Sorting"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="MethodInstances">
     <xs:choice minOccurs="1" maxOccurs="unbounded">
       <xs:element name="Association" type="bdc:Association">
         <xs:unique name="SourceEntityNameNamespaceKey">
           <xs:selector xpath="bdc:SourceEntity"/>
           <xs:field xpath="@Name"/>
           <xs:field xpath="@Namespace"/>
         </xs:unique>
       </xs:element>
       <xs:element name="MethodInstance" type="bdc:MethodInstance"/>
     </xs:choice>
   </xs:complexType>
   <xs:complexType name="MethodInstance">
     <xs:complexContent>
       <xs:extension base="bdc:IndividuallySecurableMetadataObject">
         <xs:attribute name="Type" type="bdc:MethodInstanceType" use="required"/>
         <xs:attribute name="Default" type="xs:boolean" use="optional" default="false"/>
         <xs:attribute name="ReturnParameterName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="ReturnTypeDescriptorName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="ReturnTypeDescriptorLevel" type="bdc:ReturnTypeDescriptorLevel" use="optional"/>
         <xs:attribute name="ReturnTypeDescriptorPath" type="xs:string" use="optional"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="MethodInstanceType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Finder"/>
       <xs:enumeration value="SpecificFinder"/>
       <xs:enumeration value="GenericInvoker"/>
       <xs:enumeration value="IdEnumerator"/>
       <xs:enumeration value="ChangedIdEnumerator"/>
       <xs:enumeration value="DeletedIdEnumerator"/>
       <xs:enumeration value="Scalar"/>
       <xs:enumeration value="AccessChecker"/>
       <xs:enumeration value="AssociationNavigator"/>
       <xs:enumeration value="Associator"/>
       <xs:enumeration value="Disassociator"/>
       <xs:enumeration value="Creator"/>
       <xs:enumeration value="Deleter"/>
       <xs:enumeration value="Updater"/>
       <xs:enumeration value="StreamAccessor"/>
       <xs:enumeration value="BinarySecurityDescriptorAccessor"/>
       <xs:enumeration value="BulkSpecificFinder"/>
       <xs:enumeration value="BulkAssociatedIdEnumerator"/>
       <xs:enumeration value="BulkAssociationNavigator"/>
       <xs:enumeration value="BulkIdEnumerator"/>
       <xs:enumeration value="EventSubscriber"/>
       <xs:enumeration value="EventUnsubscriber"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="Parameters">
     <xs:sequence>
       <xs:element name="Parameter" type="bdc:Parameter" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Parameter">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:sequence>
           <xs:element name="TypeDescriptor" type="bdc:TypeDescriptor"/>
         </xs:sequence>
         <xs:attribute name="Direction" type="bdc:ParameterDirection" use="required"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:simpleType name="ParameterDirection">
     <xs:restriction base="xs:string">
       <xs:enumeration value="In"/>
       <xs:enumeration value="Out"/>
       <xs:enumeration value="InOut"/>
       <xs:enumeration value="Return"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="TypeDescriptor">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:sequence>
           <xs:element name="Interpretation" type="bdc:Interpretation" minOccurs="0"/>
           <xs:element name="DefaultValues" type="bdc:DefaultValues" minOccurs="0">
             <xs:unique name="DefaultValueMethodInstanceNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@MethodInstanceName"/>
             </xs:unique>
           </xs:element>
           <xs:element name="TypeDescriptors" type="bdc:TypeDescriptors" minOccurs="0">
             <xs:unique name="TypeDescriptorNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
           </xs:element>
         </xs:sequence>
         <xs:attribute name="TypeName" type="bdc:TypeDescriptorTypeNameString" use="required"/>
         <xs:attribute name="LobName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="IdentifierEntityNamespace" type="bdc:NameString" use="optional"/>
         <xs:attribute name="IdentifierEntityName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="IdentifierName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="ForeignIdentifierAssociationName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="ForeignIdentifierAssociationEntityName" type="bdc:NameString" use="optional"/>
         <xs:attribute name="ForeignIdentifierAssociationEntityNamespace" type="bdc:NameString" use="optional"/>
         <xs:attribute name="AssociatedFilter" type="bdc:NameString" use="optional"/>
         <xs:attribute name="IsCollection" type="xs:boolean" default="false" use="optional"/>
         <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional"/>
         <xs:attribute name="CreatorField" type="xs:boolean" default="false" use="optional"/>
         <xs:attribute name="UpdaterField" type="xs:boolean" default="false" use="optional"/>
         <xs:attribute name="PreUpdaterField" type="xs:boolean" default="false" use="optional"/>
         <xs:attribute name="Significant" type="xs:boolean" default="true" use="optional"/>
         <xs:attribute name="IsSortInput" type="xs:boolean" default="false" use="optional"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="DefaultValues">
     <xs:sequence>
       <xs:element name="DefaultValue" type="bdc:DefaultValue" minOccurs="1" maxOccurs="unbounded" nillable="true"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="DefaultValue" mixed="true">
     <xs:attribute name="MethodInstanceName" type="bdc:NameString" use="required"/>
     <xs:attribute name="Type" type="bdc:TypeDescriptorTypeNameString" use="required"/>
   </xs:complexType>
   <xs:complexType name="Interpretation">
     <xs:choice minOccurs="1" maxOccurs="unbounded">
       <xs:element name="ConvertType" type="bdc:ConvertType"/>
       <xs:element name="NormalizeDateTime" type="bdc:NormalizeDateTime"/>
       <xs:element name="NormalizeString" type="bdc:NormalizeString"/>
     </xs:choice>
   </xs:complexType>
   <xs:complexType name="ConvertType">
     <xs:attribute name="LOBType" type="bdc:TypeNameString" use="required"/>
     <xs:attribute name="BDCType" type="bdc:TypeNameString" use="required"/>
     <xs:attribute name="LOBLocale" type="bdc:TypeNameString" use="optional"/>
   </xs:complexType>
   <xs:simpleType name="StringNormalizeMode">
     <xs:restriction base="xs:string">
       <xs:enumeration value="NoChange"/>
       <xs:enumeration value="NormalizeToEmptyString"/>
       <xs:enumeration value="NormalizeToNull"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="NormalizeString">
     <xs:attribute name="FromLOB" type="bdc:StringNormalizeMode" use="required"/>
     <xs:attribute name="ToLOB" type="bdc:StringNormalizeMode" use="required"/>
   </xs:complexType>
   <xs:simpleType name="LobDateTimeMode">
     <xs:restriction base="xs:string">
       <xs:enumeration value="UTC"/>
       <xs:enumeration value="Local"/>
       <xs:enumeration value="Unspecified"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="NormalizeDateTime">
     <xs:attribute name="LobDateTimeMode" type="bdc:LobDateTimeMode" use="required"/>
   </xs:complexType>
   <xs:complexType name="TypeDescriptors">
     <xs:sequence>
       <xs:element name="TypeDescriptor" type="bdc:TypeDescriptor" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Actions">
     <xs:sequence>
       <xs:element name="Action" type="bdc:Action" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="Action">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:sequence>
           <xs:element name="ActionParameters" type="bdc:ActionParameters" minOccurs="0">
             <xs:unique name="ActionParameterNameKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Name"/>
             </xs:unique>
             <xs:unique name="ActionParameterIndexKey">
               <xs:selector xpath="*"/>
               <xs:field xpath="@Index"/>
             </xs:unique>
           </xs:element>
         </xs:sequence>
         <xs:attribute name="Position" type="bdc:ActionPosition" use="required"/>
         <xs:attribute name="IsOpenedInNewWindow" type="xs:boolean" default="false"/>
         <xs:attribute name="Url" type="bdc:UrlString" use="required"/>
         <xs:attribute name="ImageUrl" type="bdc:UrlString"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="ActionParameters">
     <xs:sequence>
       <xs:element name="ActionParameter" type="bdc:ActionParameter" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="ActionParameter">
     <xs:complexContent>
       <xs:extension base="bdc:MetadataObject">
         <xs:attribute name="Index" type="bdc:Ordinal" use="required"/>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Association">
     <xs:complexContent>
       <xs:extension base="bdc:MethodInstance">
         <xs:sequence>
           <xs:element name="SourceEntity" type="bdc:SourceEntity" minOccurs="1" maxOccurs="unbounded"/>
           <xs:element name="DestinationEntity" type="bdc:DestinationEntity" minOccurs="1" maxOccurs="1"/>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="SourceEntity">
     <xs:attribute name="Namespace" type="bdc:NameString" use="required"/>
     <xs:attribute name="Name" type="bdc:NameString" use="required"/>
   </xs:complexType>
   <xs:complexType name="DestinationEntity">
     <xs:attribute name="Namespace" type="bdc:NameString" use="required"/>
     <xs:attribute name="Name" type="bdc:NameString" use="required"/>
   </xs:complexType>
   <xs:complexType name="Property" mixed="true">
     <xs:attribute name="Name" type="bdc:NameString" use="required"/>
     <xs:attribute name="Type" type="bdc:TypeNameString" use="required"/>
   </xs:complexType>
   <xs:complexType name="Properties">
     <xs:sequence>
       <xs:element name="Property" type="bdc:Property" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:simpleType name="Ordinal">
     <xs:restriction base="xs:integer">
       <xs:minInclusive value="0"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="InstanceCount">
     <xs:restriction base="xs:integer">
       <xs:minInclusive value="0"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ReturnTypeDescriptorLevel">
     <xs:restriction base="xs:integer">
       <xs:minInclusive value="0"/>
       <xs:maxInclusive value="29"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ActionPosition">
     <xs:restriction base="xs:integer">
       <xs:minInclusive value="1"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="AccessControlList">
     <xs:sequence>
       <xs:element name="AccessControlEntry" type="bdc:AccessControlEntry" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="AccessControlEntry">
     <xs:sequence>
       <xs:element name="Right" type="bdc:Right" minOccurs="1" maxOccurs="unbounded"/>
     </xs:sequence>
     <xs:attribute name="Principal" type="xs:string" use="required"/>
   </xs:complexType>
   <xs:complexType name="Right">
     <xs:attribute name="BdcRight" type="bdc:BdcRightName" use="required"/>
   </xs:complexType>
   <xs:simpleType name="BdcRightName">
     <xs:restriction base="xs:string">
       <xs:enumeration value="None"/>
       <xs:enumeration value="Execute"/>
       <xs:enumeration value="Edit"/>
       <xs:enumeration value="SetPermissions"/>
       <xs:enumeration value="SelectableInClients"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="NameString">
     <xs:restriction base="xs:string">
       <xs:minLength value="1"/>
       <xs:maxLength value="255"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="TypeDescriptorTypeNameString">
     <xs:restriction base="xs:string">
       <xs:minLength value="1"/>
       <xs:maxLength value="255"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="TypeNameString">
     <xs:restriction base="xs:string">
       <xs:minLength value="1"/>
       <xs:maxLength value="255"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="UrlString">
     <xs:restriction base="xs:string">
       <xs:minLength value="1"/>
       <xs:maxLength value="2080"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="VersionString">
     <xs:restriction base="xs:string">
       <xs:pattern value="[0-9]+(\.[0-9]+){1,3}"/>
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>