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


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

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

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

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

Заметке sql:encode можно назначить значение «url» или «default». Значение «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>