Partager via


Spécifier les relations entre éléments sans imbrication

Lorsque des éléments ne sont pas imbriqués, aucune relation implicite n'est créée. Vous pouvez toutefois spécifier explicitement des relations entre des éléments qui ne sont pas imbriqués, avec l’annotation msdata:Relationship.

L’exemple suivant représente un schéma XML dans lequel l’annotation msdata:Relationship est spécifiée entre les éléments non imbriqués Order et OrderDetail. L’annotation msdata:Relationship est spécifiée en tant qu’élément enfant de l’élément Schema.

<xs:schema id="MyDataSet" xmlns=""
             xmlns:xs="http://www.w3.org/2001/XMLSchema"
             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
 <xs:element name="MyDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
      <xs:element name="OrderDetail">  
       <xs:complexType>  
         <xs:sequence>  
           <xs:element name="OrderNo" type="xs:string" />  
           <xs:element name="ItemNo" type="xs:string" />  
         </xs:sequence>  
       </xs:complexType>  
      </xs:element>  
      <xs:element name="Order">  
       <xs:complexType>  
         <xs:sequence>  
           <xs:element name="OrderNumber" type="xs:string" />  
           <xs:element name="EmpNumber" type="xs:string" />  
         </xs:sequence>  
       </xs:complexType>  
      </xs:element>  
    </xs:choice>  
  </xs:complexType>  
  
  </xs:element>  
   <xs:annotation>  
     <xs:appinfo>  
       <msdata:Relationship name="OrdOrderDetailRelation"  
                            msdata:parent="Order"
                            msdata:child="OrderDetail"
                            msdata:parentkey="OrderNumber"
                            msdata:childkey="OrderNo"/>  
     </xs:appinfo>  
  </xs:annotation>  
</xs:schema>  

Le processus de mappage du schéma en langage XSD (XML Schema Definition) crée un DataSet comprenant les tables Order et OrderDetail et une relation est spécifiée entre ces deux tables, comme illustré ci-après.

RelationName: OrdOrderDetailRelation  
ParentTable: Order  
ParentColumns: OrderNumber
ChildTable: OrderDetail  
ChildColumns: OrderNo
Nested: False  

Voir aussi