Mappage explicite XSD éléments et attributs aux Tables et colonnesExplicit Mapping XSD Elements and Attributes to Tables and Columns

Cette rubrique s’applique à : OuiSQL ServerOuibase de données SQL AzureaucunAzure SQL Data Warehouse aucun Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Lors de l'utilisation d'un schéma XSD pour fournir une vue XML de la base de données relationnelle, les éléments et les attributs du schéma doivent être mappés avec les tables et les colonnes de la base de données.When using an XSD schema to provide an XML view of the relational database , the elements and attributes of the schema must be mapped to tables and columns of the database. Les lignes de la table/vue de la base de données seront mappées avec les éléments du document XML.The rows in the database table/view will map to elements in the XML document. Les valeurs des colonnes de la base de données sont mappées avec les attributs ou les éléments.The column values in the database map to attributes or elements.

Lorsque les requêtes XPath sont spécifiées par rapport au schéma XSD annoté, les données des éléments et des attributs du schéma sont extraites des tables et des colonnes avec lesquelles elles sont mappées.When XPath queries are specified against the annotated XSD schema, the data for the elements and attributes in the schema is retrieved from the tables and columns to which they map. Pour obtenir une valeur unique de la base de données, le mappage spécifié dans le schéma XSD doit posséder les spécifications de relation et de champ.To obtain a single value from the database, the mapping specified in the XSD schema must have both relation and field specification. Si le nom d’un élément/attribut n’est pas le même nom que le nom de table ou de vue ou une colonne à laquelle il est mappé, le SQL : relation et SQL : Field annotations sont utilisées pour spécifier le mappage entre un élément ou attribut dans un document XML et la table (vue) ou une colonne dans une base de données.If the name of an element/attribute is not the same name as the table/view or column name to which it maps, the sql:relation and sql:field annotations are used to specify the mapping between an element or attribute in an XML document and the table (view) or column in a database.

sql-relationsql-relation

Le SQL : relation annotation est ajoutée pour mapper un nœud XML dans le schéma XSD à une table de base de données.The sql:relation annotation is added to map an XML node in the XSD schema to a database table. Le nom d’une table (vue) est spécifié comme valeur de la SQL : relation annotation.The name of a table (view) is specified as the value of the sql:relation annotation.

Lorsque SQL : relation est spécifiée sur un élément, l’étendue de cette annotation s’applique à tous les attributs et éléments enfants qui sont décrites dans la définition du type complexe de cet élément, fournissant ainsi un raccourci pour l’écriture d’annotations.When sql:relation is specified on an element, the scope of this annotation applies to all attributes and child elements that are described in the complex type definition of that element, therefore providing a shortcut in writing annotations.

Le SQL : relation annotation est également utile lorsque les identificateurs qui sont valides dans MicrosoftMicrosoft SQL ServerSQL Server ne sont pas valides dans XML.The sql:relation annotation is also useful when identifiers that are valid in MicrosoftMicrosoft SQL ServerSQL Server are not valid in XML. Par exemple, « Détails des commandes » est un nom de table valide dans SQL ServerSQL Server, mais non en XML.For example, "Order Details" is a valid table name in SQL ServerSQL Server but not in XML. Dans ce cas, le SQL : relation annotation peut être utilisée pour spécifier le mappage, par exemple :In such cases, the sql:relation annotation can be used to specify the mapping, for example:

<xsd:element name="OD" sql:relation="[Order Details]">  

sql-fieldsql-field

Le sql-champ annotation mappe un élément ou un attribut à une colonne de base de données.The sql-field annotation maps an element or attribute to a database column. Le SQL : Field annotation est ajoutée pour mapper un nœud XML dans le schéma à une colonne de base de données.The sql:field annotation is added to map an XML node in the schema to a database column. Vous ne pouvez pas spécifier SQL : Field sur un élément de contenu vide.You cannot specify sql:field on an empty content element.

ExemplesExamples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, vous devez répondre à certaines conditions requises.To create working samples using the following examples, you must meet certain requirements. Pour plus d’informations, consultez configuration requise pour exécuter les exemples de SQLXML.For more information, see Requirements for Running SQLXML Examples.

A.A. Spécification des annotations sql:relation et sql:fieldSpecifying the sql:relation and sql:field annotations

Dans cet exemple, le schéma XSD comprend un <Contact > élément de type complexe avec <FName > et <LName > des éléments enfants et les ContactID attribut.In this example, the XSD schema consists of an <Contact> element of complex type with <FName> and <LName> child elements and the ContactID attribute.

Le SQL : relation annotation mappe le <Contact > élément à la table Person.Contact dans la base de données AdventureWorks.The sql:relation annotation maps the <Contact> element to the Person.Contact table in the AdventureWorks database. Le SQL : Field annotation mappe le <FName > élément à la colonne FirstName et <LName > élément à la colonne LastName.The sql:field annotation maps the <FName> element to the FirstName column and the <LName> element to the LastName column.

Aucune annotation n’est spécifiée pour le ContactID attribut.No annotation is specified for the ContactID attribute. Il s'ensuit un mappage par défaut de l'attribut avec la colonne du même nom.This results in a default mapping of the attribute to the column with the same name.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Contact" sql:relation="Person.Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"  
                     sql:field="FirstName"   
                     type="xsd:string" />   
        <xsd:element name="LName"    
                     sql:field="LastName"    
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Pour tester un exemple de requête XPath sur le schémaTo test a sample XPath query against the schema
  1. Copiez le code de schéma ci-dessus et collez-le dans un fichier texte.Copy the schema code above and paste it into a text file. Enregistrez le fichier sous le nom MySchema-annotated.xml.Save the file as MySchema-annotated.xml.

  2. Copiez le modèle suivant ci-dessous et collez-le dans un fichier texte.Copy the following template below and paste it into a text file. Enregistrez le fichier sous le nom MySchema-annotatedT.xml dans le même répertoire que celui où vous avez enregistré MySchema-annotated.xml.Save the file as MySchema-annotatedT.xml in the same directory where you saved MySchema-annotated.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">  
        /Contact  
      </sql:xpath-query>  
    </ROOT>  
    

    Le chemin d'accès au répertoire spécifié pour le schéma de mappage (MySchema-annotated.xml) varie en fonction du répertoire où le modèle est enregistré.The directory path specified for the mapping schema (MySchema-annotated.xml) is relative to the directory where the template is saved. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :An absolute path also can be specified, for example:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.Create and use the SQLXML 4.0 Test Script (Sqlxml4test.vbs) to execute the template.

    Pour plus d’informations, consultez à l’aide d’ADO pour exécuter des requêtes SQLXML.For more information, see Using ADO to Execute SQLXML Queries.

    Voici le jeu de résultats partiel :Here is the partial result set:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
 <Contact ContactID="1">   
    <FName>Gustavo</FName>   
    <LName>Achong</LName>   
 </Contact>   
  .....  
</ROOT>