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


Получение 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 fixed.

ПримечаниеПримечание

Столбцы типа 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>