Demande de références URL à des données BLOB à l'aide de sql:encode (SQLXML 4.0)
S’applique à : SQL Server Azure 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 codé en base 64 au sein du code XML.
Si vous souhaitez qu’une référence aux données (un URI) soit retournée, qui peut ê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 vers le 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 être affectée à l'« URL » ou à la valeur « par défaut ». 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 l’ID, IDREF, IDREFS, NMTOKEN ou les types d’attributs NMTOKENS. Il ne peut pas également être utilisé avec l’attribut fixe XSD.
Remarque
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 exécuter des 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
Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez le fichier en tant que sqlEncode.xml.
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"
Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.
Pour plus d'informations, voir 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>