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


Запрос URL-ссылок на данные BLOB с помощью заметки sql:url-encode (схема XDR)

Важное примечаниеВажно!

Этот раздел включен в документацию в качестве справочника по приложениям прежних версий. Дальнейшая разработка этой функции проводиться не будет. Рекомендуется избегать использования данной функции в новых разработках. Вместо этого для создания XML-представлений пользуйтесь схемами XSD с заметками. Дополнительные сведения см. в разделе Введение в схемы XSD с заметками (SQLXML 4.0). Можно преобразовать существующие схемы XDR с заметками в схемы XSD. Дополнительные сведения см. в разделе Преобразование схем XDR с заметками в эквивалентные схемы XSD (SQLXML 4.0).

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

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

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

Заметка sql:url-encode принимает логическое значение (0 = FALSE, 1 = TRUE). sql:url-encode нельзя использовать с sql:use-cdata или для атрибутов типа ID, IDREF, IDREFS, NMTOKEN и NMTOKENS.

Примеры

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

А. Задание sql:url-encode для получения URL-ссылки на данные BLOB

В этом примере схема сопоставления задает sql:url-encode на атрибуте LargePhoto, чтобы получить URI-ссылку на фото продукта (вместо получения двоичных данных в формате Base 64).

<?xml version="1.0" ?><Schema xmlns="urn:schemas-microsoft-com:xml-data"   xmlns:dt="urn:schemas-microsoft-com:datatypes"   xmlns:sql="urn:schemas-microsoft-com:xml-sql">   <ElementType name="ProductPhoto" sql:relation="Production.ProductPhoto"                  sql:key-fields="ProductPhotoID" >      <AttributeType name="ProductPhotoID" />      <AttributeType name="LargePhoto" />      <attribute type="ProductPhotoID" />      <attribute type="LargePhoto" sql:url-encode="1" />   </ElementType></Schema>

Проверка образца запроса XPath к схеме

  1. Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл под именем UrlEncodeXdr.xml.

  2. Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем UrlEncodeXdrT.xml в том же каталоге, где был сохранен файл UrlEncodeXdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  <sql:xpath-query mapping-schema="UrlEncodeXdr.xml">    /ProductPhoto[@ProductPhotoID=100]  </sql:xpath-query></ROOT>
    

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

    mapping-schema="C:\MyDir\UrlEncodeXdr.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>