Partager via


Demande de références URL à des données BLOB à l'aide de sql:encode (SQLXML 4.0)

S’applique à :SQL ServerAzure SQL Database

Dans un schéma XSD annoté, lorsqu’un attribut (ou un élément) est mappé à une colonne BLOB dans Microsoft SQL Server, les données sont retournées au format encodé en base 64 au format XML.

Si vous souhaitez qu’une référence aux données (un URI) soit retournée et puisse être utilisée ultérieurement pour récupérer les données BLOB dans un format binaire, spécifiez l’annotation sql:encode . Vous pouvez spécifier sql:encode sur un attribut ou un élément de type simple.

Spécifiez l’annotation sql:encode pour indiquer qu’une URL du champ doit être retournée au lieu de la valeur du champ. sql: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 .

L’annotation sql:encode peut recevoir la valeur « url » ou « default ». Une valeur « default » retourne des données au format encodé en base 64.

L’annotation sql:encode ne peut pas être utilisée avec sql:use-cdata ou sur les types d’attributs ID, IDREF, IDREFS, NMTOKEN ou NMTOKENS. Il ne peut pas non plus être utilisé avec l’attribut fixe XSD.

Notes

Les colonnes de type BLOB ne peuvent pas être utilisées en tant que partie d'une clé ou d'une clé étrangère.

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

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

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  
  <xsd:element name="ProductPhoto" sql:relation="Production.ProductPhoto"   
               sql:key-fields="ProductPhotoID" >  
   <xsd:complexType>  
      <xsd:attribute name="ProductPhotoID"  type="xsd:int"  />  
     <xsd:attribute name="LargePhoto" type="xsd:string" sql:encode="url" />  
    </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 sqlEncode.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez le fichier sous le nom sqlEncodeT.xml dans le même répertoire où vous avez enregistré sqlEncode.xml.

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

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

Voici le résultat obtenu :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
   <ProductPhoto ProductPhotoID="100"  
                 LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto" />   
</ROOT>