Partilhar via


Solicitando referências URL a dados BLOB usando sql:encode (SQLXML 4.0)

Aplica-se a: SQL Server Banco de Dados SQL do Azure

Em um esquema XSD anotado, quando um atributo (ou elemento) é mapeado para uma coluna BLOB no Microsoft SQL Server, os dados são retornados no formato codificado em Base 64 em XML.

Se você quiser que uma referência aos dados (um URI) seja retornada que possa ser usada posteriormente para recuperar os dados BLOB em um formato binário, especifique a anotação sql:encode . Você pode especificar sql:encode em um atributo ou elemento de tipo simples.

Especifique a anotação sql:encode para indicar que uma URL para o campo deve ser retornada em vez do valor do campo. sql:encode depende da chave primária para gerar uma seleção singleton na URL. A chave primária pode ser especificada usando a anotação sql:key-fields .

A anotação sql:encode pode receber o valor "url" ou "default". Um valor "default" retorna dados codificados na base 64.

A anotação sql:encode não pode ser usada com sql:use-cdata ou nos tipos de atributo ID, IDREF, IDREFS, NMTOKEN ou NMTOKENS. Também não pode ser usado com o atributo fixo XSD.

Observação

As colunas de tipo BLOB não podem ser usadas como parte de uma chave ou chave estrangeira.

Exemplos

Para criar exemplos de funcionamento usando os exemplos a seguir, é necessário atender a determinados requisitos. Para obter mais informações, consulte Requisitos para executar exemplos de SQLXML.

R. Especificando sql:encode para obter uma referência URL aos dados BLOB

Neste exemplo, o esquema de mapeamento especifica sql:encode no atributo LargePhoto para recuperar a referência de URI para uma foto de produto específica (em vez de recuperar os dados binários no formato codificado em 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 testar uma consulta XPath de exemplo com relação ao esquema
  1. Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como sqlEncode.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como sqlEncodeT.xml no mesmo diretório onde você salvou 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>  
    

    O caminho de diretório especificado para o esquema de mapeamento (sqlEncode.xml) é relativo ao diretório onde o modelo foi salvo. Também é possível especificar um caminho absoluto, por exemplo:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.

    Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.

Este é o resultado:

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