Partilhar via


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

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

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

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

Especifique a anotação sql:encode para indicar que deve ser devolvida uma URL para o campo 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 ser atribuída ao valor "url" ou "default". Um valor de "default" devolve dados em formato codificado Base 64.

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

Observação

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

Examples

Para criar exemplos funcionais usando os seguintes exemplos, deve cumprir certos requisitos. Para mais informações, consulte Requisitos para Executar Exemplos de SQLXML.

A. Especificação de sql:encode para obter uma referência URL para dados BLOB

Neste exemplo, o esquema de mapeamento especifica sql:encode no atributo LargePhoto para recuperar a referência do URI a uma foto específica do produto (em vez de recuperar os dados binários no formato codificado 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 contra o esquema
  1. Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como sqlEncode.xml.

  2. Copie o modelo seguinte e cole-o num ficheiro de texto. Guarda o ficheiro como sqlEncodeT.xml no mesmo diretório onde guardaste 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 do diretório especificado para o esquema de mapeamento (sqlEncode.xml) é relativo ao diretório onde o modelo é guardado. Um caminho absoluto também pode ser especificado, 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 Usando 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>