Partager via


Demande de références URL à des données BLOB à l'aide de sql:url-encode (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 les 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 le schéma XDR annoté, lorsqu'un attribut (ou élément) est mappé à une colonne Microsoft SQL Server BLOB, les données sont retournées au format codé en base 64 dans XML. Pour obtenir la description des types de données SQL Server et des types de données XML correspondants, consultez Forçages de type de données (schéma XDR).

Si vous souhaitez retourner une référence aux données (URI) qui pourra être utilisée ultérieurement pour récupérer les données BLOB dans un format binaire, spécifiez l'annotation sql:url-encode.

Spécifiez l'annotation sql:url-encode pour indiquer qu'une URL au champ doit être retournée au lieu de la valeur du champ. sql:url-encode dépend de la clé primaire pour générer une sélection singleton dans l'URL. La clé primaire peut être spécifiée à l'aide de l'annotation sql:key-fields. Pour plus d'informations, consultez Identification de colonnes clés à l'aide de sql:key-fields (SQLXML 4.0).

L'annotation sql:url-encode accepte une valeur de type booléen (0 = FALSE, 1 = TRUE). sql:url-encode ne peut pas être utilisé avec sql:use-cdata ou sur les ID de types d'attribut (IDREF, IDREFS, NMTOKEN ou NMTOKENS).

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 sql:url-encode pour obtenir une référence URL à des données BLOB

Dans cet exemple, le schéma de mappage spécifie sql:url-encode sur l'attribut LargePhoto pour récupérer la référence URI de la photo de produit (au lieu de récupérer les données binaires au format codé en base 64).

<?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="ProductPhoto" sql:relation="Production.ProductPhoto" 
                 sql:key-fields="ProductPhotoID" >
      <AttributeType name="ProductPhotoID" />
      <AttributeType name="LargePhoto" />

      <attribute type="ProductPhotoID" />
      <attribute type="LargePhoto" sql:url-encode="1" />
   </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 UrlEncodeXdr.xml.

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UrlEncodeXdr.xml">
        /ProductPhoto[@ProductPhotoID=100]
      </sql:xpath-query>
    </ROOT>
    

    Le chemin d'accès au répertoire spécifié pour le schéma de mappage (UrlEncodeXdr.xml) est relatif au répertoire où le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :

    mapping-schema="C:\MyDir\UrlEncodeXdr.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">
  <ProductPhoto ProductPhotoID="100" LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto"/>
</ROOT>