Поделиться через


Получение URL-ссылок на данные BLOB с использованием sql:encode (SQLXML 4.0)

Применимо к:база данных SQL ServerAzure SQL

В схеме XSD с заметками при сопоставлении атрибута (или элемента) со столбцом BLOB в Microsoft SQL Server данные возвращаются в формате Base 64 в ФОРМАТЕ XML.

Если требуется вернуть ссылку на данные (URI), которую можно использовать позже для извлечения данных BLOB в двоичном формате, укажите заметку sql:encode . Можно указать sql:encode в атрибуте или элементе простого типа.

Укажите заметку sql:encode , чтобы указать, что вместо значения поля должен быть возвращен URL-адрес поля. Sql:encode зависит от первичного ключа для создания одноэлементного выбора в URL-адресе. Первичный ключ можно указать с помощью заметки sql:key-fields .

Заметке sql:encode можно присвоить значение url или значение по умолчанию. Значение «default» возвращает данные в формате Base 64.

Заметку sql:encode нельзя использовать с sql:use-cdata или с типами атрибутов ID, IDREF, IDREFS, NMTOKEN или NMTOKENS. Его также нельзя использовать с фиксированным атрибутом XSD.

Примечание

Столбцы типа BLOB невозможно использовать, как часть ключа или внешнего ключа.

Примеры

Чтобы создать рабочие образцы на основе следующих примеров, необходимо выполнить определенные требования. Дополнительные сведения см. в разделе Требования для выполнения примеров SQLXML.

A. Указание заметки sql:encode для получения URL-ссылки на данные BLOB

В этом примере схема сопоставления указывает sql:encode в атрибуте LargePhoto для получения ссылки URI на определенную фотографию продукта (вместо получения двоичных данных в формате 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>  
Проверка образца запроса XPath к схеме
  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем sqlEncode.xml.

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем sqlEncodeT.xml в том же каталоге, где был сохранен файл 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>  
    

    Путь к каталогу схемы сопоставления (файл sqlEncode.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Создайте и запустите тестовый скрипт SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.

    Дополнительные сведения см. в статье Использование ADO для выполнения запросов SQLXML 4.0.

Результат:

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