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


Запрос ссылок на URL для BLOB-данных с помощью sql:encode (SQLXML 4.0)

При сопоставлении атрибута (или элемента) с столбцом 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-адрес или значение по умолчанию. Значение по умолчанию возвращает данные в формате Base 64.

Заметку sql:encode нельзя использовать с sql:use-cdata типами атрибутов IDREF, IDREFS, NMTOKEN или NMTOKENS или 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>