Partager via


Mappage explicite d’éléments et d’attributs XSD à des tables et des colonnes (SQLXML 4.0)

Lorsque vous utilisez un schéma XSD pour fournir une vue XML de la base de données relationnelle, les éléments et attributs du schéma doivent être mappés aux tables et aux colonnes de la base de données. Les lignes de la table/vue de base de données sont mappées aux éléments du document XML. Valeurs de colonne dans la base de données mappées aux attributs ou é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 récupérées à partir des tables et colonnes auxquelles elles sont mappées. Pour obtenir une valeur unique à partir de la base de données, le mappage spécifié dans le schéma XSD doit avoir à la fois une relation et une spécification 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 sql:relation annotations et sql:field les annotations 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 dans 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 .

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

L’annotation sql:relation est également utile lorsque les identificateurs valides dans Microsoft SQL Server ne sont pas valides au format XML. Par exemple, « Détails de commande » est un nom de table valide dans SQL Server, mais pas dans 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 exécuter des exemples SQLXML.

Un. 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 . Cela entraîne un mappage par défaut de l’attribut à la colonne portant le 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 en tant que MySchema-annotated.xml.

  2. Copiez le modèle suivant ci-dessous et collez-le dans un fichier texte. Enregistrez le fichier en tant que 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) est relatif au répertoire dans lequel 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>