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


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

Область применения: SQL Server База данных SQL Azure

При сопоставлении атрибута (или элемента) с столбцом 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 или с типами атрибутов IDREF, IDREFS, NMTOKEN или NMTOKENS. Его также нельзя использовать с фиксированным атрибутом XSD.

Примечание.

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

Примеры

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

А. Указание заметки 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>