Compartilhar via


Solicitando referências de URL a dados BLOB usando sql:url-encode (Esquema XDR)

Observação importanteImportante

Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0).

No esquema XDR anotado, quando um atributo (ou elemento) é mapeado para uma coluna BLOB do Microsoft SQL Server, os dados são retornados no formato codificado na base 64 no XML. Para obter uma descrição dos tipos de dados do SQL Server e seus tipos de dados XML correspondentes, consulte Coerções de tipo de dados (Esquema XDR).

Caso queira que uma referência aos dados (URI) seja retornada para ser usada posteriormente na recuperação de dados BLOB em um formato binário, especifique a anotação sql:url-encode.

Especifique a anotação sql:url-encode para indicar que uma URL deve ser retornada para o campo em vez do valor do campo. sql:url-encode depende da chave primária para gerar uma seleção singleton na URL. A chave primária pode ser especificada com a anotação sql:key-fields. Para obter mais informações, consulte Identificando colunas de chave usando campos sql:key (SQLXML 4.0).

A anotação sql:url-encode usa um valor de tipo Booleano (0 = FALSE, 1 = TRUE). sql:url-encode não pode ser usado com sql:use-cdata ou em um dos tipos de atributo ID, IDREF, IDREFS, NMTOKEN ou NMTOKENS.

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 do SQLXML.

A. Especifique sql:url-encode para obter uma referência URL a dados BLOB

Neste exemplo, o esquema de mapeamento especifica sql:url-encode no atributo LargePhoto para recuperar a referência URI à foto do produto (em vez de recuperar os dados binários no formato codificado na base 64).

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
   xmlns:dt="urn:schemas-microsoft-com:datatypes"
   xmlns:sql="urn:schemas-microsoft-com:xml-sql">
   <ElementType name="ProductPhoto" sql:relation="Production.ProductPhoto" 
                 sql:key-fields="ProductPhotoID" >
      <AttributeType name="ProductPhotoID" />
      <AttributeType name="LargePhoto" />

      <attribute type="ProductPhotoID" />
      <attribute type="LargePhoto" sql:url-encode="1" />
   </ElementType>
</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 UrlEncodeXdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como UrlEncodeXdrT.xml no mesmo diretório em que você salvou UrlEncodeXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UrlEncodeXdr.xml">
        /ProductPhoto[@ProductPhotoID=100]
      </sql:xpath-query>
    </ROOT>
    

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

    mapping-schema="C:\MyDir\UrlEncodeXdr.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 do SQLXML 4.0.

A seguir está o conjunto de resultados:

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

Consulte também

Referência