Partager via


Exclusion d'éléments du schéma du document XML obtenu à l'aide de sql:map-field (schéma XDR)

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).

En raison du mappage par défaut, chaque élément et attribut du schéma XDR est mappé à une table et une colonne de la base de données. Vous voudrez parfois créer un élément dans le schéma XDR qui ne soit mappé à aucune table ni colonne de la base de données et qui ne figure pas dans le document XML. Cela est possible en spécifiant l'annotation sql:map-field.

L'annotation sql:map-field diffère de sql:is-constant en ce que les éléments et les attributs non mappés n'apparaissent pas dans le document XML. L'annotation sql:map-field est particulièrement utile si le schéma ne peut pas être modifié ou si le schéma est utilisé pour valider le code XML d'autres sources et qu'il contient cependant des données qui ne sont pas stockées dans votre base de données.

sql:map-field accepte une valeur booléenne (0 = FALSE, 1 = TRUE). L'annotation sql:map-field est valide uniquement sur un <attribut>, un <élément> ou un <ElementTypes> avec du contenu en mode texte (content=textOnly). L'annotation n'est pas valide sur un <élément> ou un <ElementTypes> qui est mappé à une table.

Exemples

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

A. Spécifier l'annotation sql:map-field

Supposons que vous ayez un schéma XDR provenant d'une autre source. Ce schéma XDR se compose d'un élément <Person.Contact> avec ContactID, FirstName, LastName et des attributs.

Lors du mappage de ce schéma XDR à la table Person.Contact de la base de données, sql:map-field est spécifié sur l'attribut HomeAddress parce que la table Person.Contact ne stocke pas les adresses personnelles des employés. En conséquence, cet attribut n'est pas retourné dans le document XML obtenu lorsqu'une requête XPath est spécifiée sur le schéma de mappage.

Le mappage par défaut a lieu pour le reste du schéma. L'élément <Person.Contact> est mappé à la table Person.Contact et tous les attributs sont mappés aux colonnes de même nom dans la table Person.Contact. Pour plus d'informations sur le mappage par défaut, consultez Mappage par défaut d'éléments et d'attributs XDR à des tables et des colonnes.

<?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" />
    <AttributeType name="HomeAddress" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="HomeAddress" sql:map-field="0" />
</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 le fichier sous le nom mapField-xdr.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez le fichier sous le nom mapField-xdrT.xml dans le répertoire où vous avez enregistré le fichier mapField-xdr.xml. La requête dans le modèle sélectionne l'enregistrement Person.Contact avec ContactID égal à 1.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:xpath-query mapping-schema="mapField-xdr.xml">
      /Person.Contact[@ContactID=1]
    </sql:xpath-query>
    </ROOT>
    

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

Jeu de résultats obtenu :

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

Notez que EmployeeID, FirstName et LastName sont présents, mais que HomeAddress ne l'est pas parce que le schéma de mappage a spécifié la valeur 0 pour son attribut sql:map-field.