Partager via


Mappage par défaut d'éléments et d'attributs XDR à des tables et des colonnes

Important

Cette rubrique est fournie à titre de référence pour les applications héritées. Cette fonctionnalité ne fera plus l'objet d'aucun travail de développement. Évitez de l'utiliser dans vos nouveaux travaux de développement. Utilisez à la place des schémas XSD annotés pour créer des vues XML. Pour plus d'informations, consultez Introduction aux schémas XSD annotés (SQLXML 4.0). Vous pouvez convertir des schémas XDR annotés existants en schémas XSD. Pour plus d'informations, consultez Conversion de schémas XDR annotés en schémas XSD équivalents (SQLXML 4.0).

Dans un schéma XDR annoté, un élément, par défaut, est mappé à la table/vue du même nom, et un attribut est mappé à la colonne du même nom.

Vous pouvez mapper les éléments enfants de non complexes dans le schéma aux colonnes de base de données. Pour mapper un élément à une colonne dans la base de données, l'attribut content est spécifié pour cet élément avec la valeur textOnly. Si content=textOnly n'est pas spécifié pour mapper un élément à une colonne de base de données, l'annotation sql:field doit être spécifiée explicitement pour mapper l'<élément> à une colonne de base de données. Pour plus d'informations, consultez Mappage explicite d'éléments et d'attributs XDR avec les tables et les colonnes.

Exemples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, un certain nombre de conditions doivent être réunies. Pour plus d'informations, consultez Configuration requise pour l'exécution des exemples SQLXML.

A. Spécifier le mappage par défaut

Dans cet exemple, l'élément <Person.Contact> est mappé à la table Person.Contact dans la base de données AdventureWorks, et tous les attributs sont mappés aux colonnes de même nom dans la table Person.Contact. Dans ce schéma XDR, aucune annotation n'est spécifiée.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
</ElementType>
</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 ce fichier sous le nom DefaultXdr.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom DefaultXdrT.xml dans le répertoire où vous avez enregistré le fichier DefaultXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="DefaultXdr.xml">
            /Person.Contact[@ContactID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    Le chemin d'accès au répertoire spécifié pour le schéma de mappage (DefaultXdr.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:\MyDir\DefaultXdr.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 4.0.

Le jeu de résultats obtenu est le suivant :

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel">
</ROOT>

B. Mapper un <élément> XML à une colonne de base de données

Par défaut, un élément XML est mappé à une table de base de données, et un attribut est mappé à une colonne de base de données. Pour mapper un élément à une colonne de base de données, l'attribut content est spécifié avec la valeur textOnly.

Ce schéma XDR comprend le même élément <Person.Contact> que dans l'exemple précédent, à la différence près que les champs SQL (ContactID, FirstName, LastName) étaient mappés aux éléments enfants et non aux attributs.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="ContactID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName"  content="textOnly" />

<ElementType name="Person.Contact" >
    <element type="ContactID" />
    <element type="FirstName" />
    <element type="LastName"  />
</ElementType>
</Schema>

Par défaut, l'élément <Person.Contact> dans le schéma XDR est mappé à la table Person.Contact dans la base de données AdventureWorks. L'attribut content est spécifié sur les éléments enfants <FirstName> et <LastName>. Par conséquent, ces éléments enfants seront mappés aux mêmes colonnes de nom dans la table Person.Contact.

[!REMARQUE]

Le contenu mixte (éléments avec des éléments texte et enfants) n'est pas pris en charge.

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 ce fichier sous le nom ElementXdr.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom ElementXdrT.xml dans le répertoire où vous avez enregistré le fichier ElementXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="ElementXdr.xml">
            /Person.Contact[ContactID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    Le chemin d'accès au répertoire spécifié pour le schéma de mappage (ElementXdr.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:\MyDir\ElementXdr.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 4.0.

Le jeu de résultats obtenu est le suivant :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Contact>
    <ContactID>1</ContactID> 
    <FirstName>Gustavo</FirstName> 
    <LastName>Achong</LastName> 
  </Person.Contact>
  <Person.Contact>
    <ContactID>2</ContactID> 
    <FirstName>Catherine</FirstName> 
    <LastName>Abel</LastName> 
  </Person.Contact>
</ROOT>