Richiesta di riferimenti URL a dati BLOB utilizzando sql:encode (SQLXML 4.0)
In uno schema XSD con annotazioni quando un attributo o elemento viene mappato a una colonna BLOB in Microsoft SQL Server, i dati vengono restituiti in formato con codifica Base 64 in XML.
Se si desidera che venga restituito un riferimento ai dati (un URI) che possa essere utilizzato successivamente per recuperare i dati BLOB in un formato binario, specificare l'annotazione sql:encode. È possibile specificare sql:encode su un attributo o un elemento di tipo semplice.
Specificare l'annotazione sql:encode per indicare che deve essere restituito un URL del campo anziché il valore del campo. sql:encode dipende dalla chiave primaria per la generazione di una selezione singleton nell'URL. La chiave primaria può essere specificata utilizzando l'annotazione sql:key-fields.
All'annotazione sql:encode è possibile assegnare il valore "url" o "default". Il valore "default" restituisce dati in formato con codifica Base 64.
Non è possibile utilizzare l'annotazione sql:encode con sql:use-cdata o sui tipi di attributo ID, IDREF, IDREFS, NMTOKEN o NMTOKENS. Non è inoltre possibile utilizzarla con l'attributo fixed XSD.
[!NOTA]
Non è possibile utilizzare le colonne di tipo BLOB come parte di una chiave o di una chiave esterna.
Esempi
Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare requisiti specifici. Per ulteriori informazioni, vedere Requisiti per l'esecuzione di esempi di SQLXML.
A. Specifica di sql:encode per ottenere un riferimento URL ai dati BLOB
In questo esempio lo schema di mapping specifica sql:encode sull'attributo LargePhoto per recuperare il riferimento URI a una specifica fotografia di prodotto, anziché recuperare i dati binari nel formato con codifica 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>
Per testare una query Xpath di esempio sullo schema
Copiare il codice dello schema sopra riportato e incollarlo in un file di testo. Salvare il file come sqlEncode.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file come sqlEncodeT.xml nella stessa directory nella quale è stato salvato 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>
Il percorso di directory specificato per lo schema di mapping (sqlEncode.xml) è relativo alla directory nella quale viene salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\SqlXmlTest\sqlEncode.xml"
Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.
Per ulteriori informazioni, vedere Utilizzo di ADO per eseguire query SQLXML 4.0.
Risultato:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ProductPhoto ProductPhotoID="100"
LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto" />
</ROOT>