Получение 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 к схеме
Скопируйте приведенный выше код схемы и вставьте его в текстовый файл. Сохраните файл с именем sqlEncode.xml.
Скопируйте следующий шаблон и вставьте его в текстовый файл. Сохраните файл под именем 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"
Создайте и запустите тестовый сценарий 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>