使用 sql:url-encode 请求对 BLOB 数据的 URL 引用(XDR 架构)
重要提示 |
---|
本主题是针对早期应用程序提供的参考。以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能。请改用带批注的 XSD 架构创建 XML 视图。有关详细信息,请参阅带批注的 XSD 架构简介 (SQLXML 4.0)。可以将现有带批注的 XDR 架构转换为 XSD 架构。有关详细信息,请参阅将带批注的 XDR 架构转换为等效的 XSD 架构 (SQLXML 4.0)。 |
在带批注的 XDR 架构中,如果属性(或元素)映射到 Microsoft SQL Server 中的 BLOB 列,则将在 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 示例的要求。
A. 指定 sql:url-encode 以获取对 BLOB 数据的 URL 引用
在本示例中,映射架构对 LargePhoto 属性指定了 sql:url-encode,以便检索产品照片的 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 查询
复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 UrlEncodeXdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 UrlEncodeXdr.xml 的相同目录中将该文件另存为 UrlEncodeXdrT.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"
创建并使用 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>