Mappages XSD personnalisés vers des tables/colonnes (SQLXML)

S’applique à :SQL ServerAzure SQL Database

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. Les lignes de la table/vue de la base de données seront mappées avec les éléments du document XML. Les valeurs des colonnes de la base de données sont mappées avec les attributs ou les éléments.

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. 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. Si le nom d’un élément/attribut n’est pas le même nom que le nom de table/vue ou de colonne auquel il est mappé, les annotations sql:relation et sql:field sont utilisées pour spécifier le mappage entre un élément ou un attribut dans un document XML et la table (vue) ou colonne d’une base de données.

sql-relation

L’annotation sql:relation est ajoutée pour mapper un nœud XML dans le schéma XSD à une table de base de données. Le nom d’une table (vue) est spécifié comme valeur de l’annotation sql:relation .

Lorsque sql:relation est spécifié sur un élément, l’étendue de cette annotation s’applique à tous les attributs et éléments enfants qui sont décrits dans la définition de type complexe de cet élément, fournissant ainsi un raccourci lors de l’écriture d’annotations.

L’annotation sql:relation est également utile lorsque les identificateurs qui sont valides dans Microsoft SQL Server ne le sont pas en XML. Par exemple, « Détails de la commande » est un nom de table valide dans SQL Server, mais pas en XML. Dans ce cas, l’annotation sql:relation peut être utilisée pour spécifier le mappage, par exemple :

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

sql-field

L’annotation sql-field mappe un élément ou un attribut à une colonne de base de données. L’annotation sql:field est ajoutée pour mapper un nœud XML dans le schéma à une colonne de base de données. Vous ne pouvez pas spécifier sql:field sur un élément de contenu vide.

Exemples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, vous devez répondre à certaines conditions requises. Pour plus d’informations, consultez Configuration requise pour l’exécution d’exemples SQLXML.

R. Spécification des annotations sql:relation et sql:field

Dans cet exemple, le schéma XSD se compose d’un <élément Contact> de type complexe avec <des éléments enfants FName> et <LName> et l’attribut ContactID .

L’annotation sql:relation mappe l’élément <Contact> à la table Person.Contact dans la base de données AdventureWorks. L’annotation sql:field mappe l’élément <FName> à la colonne FirstName et l’élément <LName> à la colonne LastName.

Aucune annotation n’est spécifiée pour l’attribut ContactID . Il s'ensuit un mappage par défaut de l'attribut avec la colonne du même nom.

<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éma
  1. Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez le fichier sous le nom MySchema-annotated.xml.

  2. Copiez le modèle suivant ci-dessous et collez-le dans un fichier texte. Enregistrez le fichier sous le nom MySchema-annotatedT.xml dans le même répertoire que celui où vous avez enregistré 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é. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :

    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.

    Pour plus d’informations, consultez Utilisation d’ADO pour exécuter des requêtes SQLXML.

Voici le jeu de résultats partiel :

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