<?xml version="1.0" encoding="utf-8"?>
<!-- 
  $Id: MoDAvDEX_MoDAvDEX.xsd,v 1.1 2007/11/29 06:27:25 robbod Exp $
  ============================================================
  MoDAvDEX DEX long form 

  Copyright OASIS 2007
  ============================================================
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:exp="urn:iso:std:iso:10303:28:ed-2:2005:schema:common" xmlns:ap239="urn:iso10303-28:schema/Product_life_cycle_support" targetNamespace="urn:iso10303-28:schema/Product_life_cycle_support">

   
   <xs:import namespace="urn:iso:std:iso:10303:28:ed-2:2005:schema:common" schemaLocation="exp.xsd"/>


   
   <xs:complexType name="uos">
      
      <xs:complexContent>
         
         <xs:extension base="exp:uos">
            
            <xs:choice maxOccurs="unbounded" minOccurs="0">
               
               <xs:element ref="exp:Entity"/>
               
               <xs:element ref="exp:edokey"/>
            
            </xs:choice>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>




   
   <xs:complexType name="Classification_item">
      
      <xs:group ref="ap239:Classification_item"/>
   
   </xs:complexType>


   
   <xs:group name="Classification_item">
      
      <xs:choice>
         
         <xs:element ref="ap239:Class"/>
         
         <xs:element ref="ap239:External_class"/>
         
         <xs:element ref="ap239:External_class_library"/>
         
         <xs:element ref="ap239:Identification_assignment"/>
      
      </xs:choice>
   
   </xs:group>




   
   <xs:complexType name="Identification_item">
      
      <xs:group ref="ap239:Identification_item"/>
   
   </xs:complexType>


   
   <xs:group name="Identification_item">
      
      <xs:choice>
         
         <xs:element ref="ap239:External_class_library"/>
      
      </xs:choice>
   
   </xs:group>


   
   <xs:element name="Class" type="ap239:Class" block="extension restriction" substitutionGroup="exp:Entity" nillable="true"/>


   
   <xs:complexType name="Class" abstract="false">
      
      <xs:complexContent>
         
         <xs:extension base="exp:Entity">
            
            <xs:all>
               
               <xs:element name="Id" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Name" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Description" type="xs:normalizedString" minOccurs="0"/>


            
            </xs:all>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>


   
   <xs:group name="Class-group">
      
      <xs:choice>
         
         <xs:element ref="ap239:Class"/>
         
         <xs:group ref="ap239:External_class-group"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:group name="Class-complexEntity-group">
      
      <xs:choice>
         
         <xs:group ref="ap239:Class-group"/>
         
         <xs:element ref="exp:complexEntity"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:element name="Classification_assignment" type="ap239:Classification_assignment" block="extension restriction" substitutionGroup="exp:Entity" nillable="true"/>


   
   <xs:complexType name="Classification_assignment" abstract="false">
      
      <xs:complexContent>
         
         <xs:extension base="exp:Entity">
            
            <xs:all>
               
               <xs:element name="Assigned_class" minOccurs="1">
                  
                  <xs:complexType>
                     
                     <xs:sequence>
                        
                        <xs:group ref="ap239:Class-group"/>
                     
                     </xs:sequence>
                  
                  </xs:complexType>
               
               </xs:element>
               
               <xs:element name="Items">
                  
                  <xs:complexType>
                     
                     <xs:sequence>
                        
                        <xs:group ref="ap239:Classification_item" minOccurs="1" maxOccurs="unbounded"/>
                     
                     </xs:sequence>
                     
                     <xs:attribute ref="exp:itemType" fixed="ap239:Classification_item"/>
                     
                     <xs:attribute ref="exp:cType" fixed="set"/>
                     
                     <xs:attribute ref="exp:arraySize" use="optional"/>
                  
                  </xs:complexType>
               
               </xs:element>


               
               <xs:element name="Role" type="xs:normalizedString" minOccurs="0"/>


            
            </xs:all>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>


   
   <xs:group name="Classification_assignment-group">
      
      <xs:choice>
         
         <xs:element ref="ap239:Classification_assignment"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:group name="Classification_assignment-complexEntity-group">
      
      <xs:choice>
         
         <xs:group ref="ap239:Classification_assignment-group"/>
         
         <xs:element ref="exp:complexEntity"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:element name="External_class" type="ap239:External_class" block="extension restriction" substitutionGroup="exp:Entity" nillable="true"/>


   
   <xs:complexType name="External_class" abstract="false">
      
      <xs:complexContent>
         
         <xs:extension base="exp:Entity">
            
            <xs:all>
               
               <xs:element name="Id" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Name" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Description" type="xs:normalizedString" minOccurs="0"/>


               
               <xs:element name="External_source" minOccurs="1">
                  
                  <xs:complexType>
                     
                     <xs:sequence>
                        
                        <xs:element ref="ap239:External_class_library"/>
                     
                     </xs:sequence>
                  
                  </xs:complexType>
               
               </xs:element>
            
            </xs:all>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>


   
   <xs:group name="External_class-group">
      
      <xs:choice>
         
         <xs:element ref="ap239:External_class"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:group name="External_class-complexEntity-group">
      
      <xs:choice>
         
         <xs:group ref="ap239:External_class-group"/>
         
         <xs:element ref="exp:complexEntity"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:element name="External_class_library" type="ap239:External_class_library" block="extension restriction" substitutionGroup="exp:Entity" nillable="true"/>


   
   <xs:complexType name="External_class_library" abstract="false">
      
      <xs:complexContent>
         
         <xs:extension base="exp:Entity">
            
            <xs:all>
               
               <xs:element name="Id" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Description" type="xs:normalizedString" minOccurs="0"/>


            
            </xs:all>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>


   
   <xs:group name="External_class_library-group">
      
      <xs:choice>
         
         <xs:element ref="ap239:External_class_library"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:group name="External_class_library-complexEntity-group">
      
      <xs:choice>
         
         <xs:group ref="ap239:External_class_library-group"/>
         
         <xs:element ref="exp:complexEntity"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:element name="Identification_assignment" type="ap239:Identification_assignment" block="extension restriction" substitutionGroup="exp:Entity" nillable="true"/>


   
   <xs:complexType name="Identification_assignment" abstract="false">
      
      <xs:complexContent>
         
         <xs:extension base="exp:Entity">
            
            <xs:all>
               
               <xs:element name="Identifier" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Role" type="xs:normalizedString" minOccurs="1"/>


               
               <xs:element name="Description" type="xs:normalizedString" minOccurs="0"/>


               
               <xs:element name="Items">
                  
                  <xs:complexType>
                     
                     <xs:sequence>
                        
                        <xs:element ref="ap239:External_class_library" minOccurs="1" maxOccurs="unbounded"/>
                     
                     </xs:sequence>
                     
                     <xs:attribute ref="exp:itemType" fixed="External_class_library"/>
                     
                     <xs:attribute ref="exp:cType" fixed="set"/>
                     
                     <xs:attribute ref="exp:arraySize" use="optional"/>
                  
                  </xs:complexType>
               
               </xs:element>
            
            </xs:all>
         
         </xs:extension>
      
      </xs:complexContent>
   
   </xs:complexType>


   
   <xs:group name="Identification_assignment-group">
      
      <xs:choice>
         
         <xs:element ref="ap239:Identification_assignment"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:group name="Identification_assignment-complexEntity-group">
      
      <xs:choice>
         
         <xs:group ref="ap239:Identification_assignment-group"/>
         
         <xs:element ref="exp:complexEntity"/>
      
      </xs:choice>
   
   </xs:group>
   
   <xs:element substitutionGroup="exp:uos" name="uos" type="ap239:uos">




      
      <xs:key name="Product_life_cycle_support___Class-key">
         
         <xs:selector xpath="ap239:Class"/>
         
         <xs:field xpath="@id"/>
      
      </xs:key>


      
      <xs:keyref name="Product_life_cycle_support___Class-keyref" refer="ap239:Product_life_cycle_support___Class-key">
         
         <xs:selector xpath=".//ap239:Class"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>




      
      <xs:key name="Product_life_cycle_support___Classification_assignment-key">
         
         <xs:selector xpath="ap239:Classification_assignment"/>
         
         <xs:field xpath="@id"/>
      
      </xs:key>


      
      <xs:keyref name="Product_life_cycle_support___Classification_assignment-keyref" refer="ap239:Product_life_cycle_support___Classification_assignment-key">
         
         <xs:selector xpath=".//ap239:Classification_assignment"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>




      
      <xs:key name="Product_life_cycle_support___External_class-key">
         
         <xs:selector xpath="ap239:External_class"/>
         
         <xs:field xpath="@id"/>
      
      </xs:key>


      
      <xs:keyref name="Product_life_cycle_support___External_class-keyref" refer="ap239:Product_life_cycle_support___External_class-key">
         
         <xs:selector xpath=".//ap239:External_class"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>




      
      <xs:key name="Product_life_cycle_support___External_class_library-key">
         
         <xs:selector xpath="ap239:External_class_library"/>
         
         <xs:field xpath="@id"/>
      
      </xs:key>


      
      <xs:keyref name="Product_life_cycle_support___External_class_library-keyref" refer="ap239:Product_life_cycle_support___External_class_library-key">
         
         <xs:selector xpath=".//ap239:External_class_library"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>




      
      <xs:key name="Product_life_cycle_support___Identification_assignment-key">
         
         <xs:selector xpath="ap239:Identification_assignment"/>
         
         <xs:field xpath="@id"/>
      
      </xs:key>


      
      <xs:keyref name="Product_life_cycle_support___Identification_assignment-keyref" refer="ap239:Product_life_cycle_support___Identification_assignment-key">
         
         <xs:selector xpath=".//ap239:Identification_assignment"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>





      
      <xs:keyref name="Classification_assignment___Assigned_class-keyref" refer="ap239:Product_life_cycle_support___Class-key">
         
         <xs:selector xpath=".//ap239:Class/Assigned_class"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>



      
      <xs:keyref name="External_class___External_source-keyref" refer="ap239:Product_life_cycle_support___External_class_library-key">
         
         <xs:selector xpath=".//ap239:External_class_library/External_source"/>
         
         <xs:field xpath="@ref"/>
      
      </xs:keyref>


   
   </xs:element>



</xs:schema>