Compartir a través de


Solicitar referencias URL a los datos BLOB mediante sql:encode (SQLXML 4.0)

Se aplica a: SQL ServerAzure SQL Database

En un esquema XSD anotado, cuando se asigna un atributo (o elemento) a una columna BLOB en Microsoft SQL Server, los datos se devuelven en formato codificado en Base 64 dentro de XML.

Si desea que se devuelva una referencia a los datos (un URI) que se pueden usar más adelante para recuperar los datos BLOB en un formato binario, especifique la anotación sql:encode . Puede especificar sql:encode en un atributo o elemento de tipo simple.

Especifique la anotación sql:encode para indicar que se debe devolver una dirección URL al campo en lugar del valor del campo. sql:encode depende de la clave principal para generar una selección singleton en la dirección URL. La clave principal se puede especificar mediante la anotación sql:key-fields .

A la anotación sql:encode se le puede asignar el valor "url" o "default". Un valor de "valor predeterminado" devuelve los datos en formato codificado de base 64.

La anotación sql:encode no se puede usar con los tipos de atributo sql:use-cdata o en los tipos de atributo ID, IDREF, IDREFS, NMTOKEN o NMTOKENS. Tampoco se puede usar con el atributo fijo XSD.

Nota:

Las columnas de tipo BLOB no se pueden usar como parte de una clave o clave externa.

Ejemplos

Para crear muestras funcionales mediante los ejemplos siguientes, debe cumplir determinados requisitos. Para obtener más información, vea Requisitos para ejecutar ejemplos de SQLXML.

A Especificar sql:encode para obtener una referencia de URL a los datos BLOB

En este ejemplo, el esquema de asignación especifica sql:encode en el atributo LargePhoto para recuperar la referencia de URI a una foto de producto específica (en lugar de recuperar los datos binarios en formato codificado 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>  
Para probar una consulta XPath de ejemplo en el esquema
  1. Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como sqlEncode.xml.

  2. Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como sqlEncodeT.xml en el mismo directorio donde guardó 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>  
    

    La ruta de acceso al directorio especificada para el esquema de asignación (sqlEncode.xml) es relativa al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.

    Para obtener más información, consulte Uso de ADO para ejecutar consultas SQLXML 4.0.

El resultado es el siguiente:

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