使用 sql:encode 要求指向 BLOB 資料的 URL 參考 (SQLXML 4.0)
在註解式 XSD 結構描述中,當屬性 (或元素) 對應到 Microsoft SQL Server 中的 BLOB 資料行時,將會以 XML 中的 Base 64 編碼格式傳回資料。
如果您希望要傳回之資料的參考 (URI) 可以在稍後用來擷取二進位格式的 BLOB 資料,請指定 sql:encode 註解。 您可以在屬性或簡單類型的元素上指定 sql:encode。
指定 sql:encode 註解可指示應該傳回欄位的 URL,而不是欄位的值。 sql:encode 會依賴主索引鍵來產生 URL 中的單一選取。 主索引鍵可以使用 sql:key-fields 註解來指定。
可以將 "url" 或 "default" 值指派給 sql:encode 註解。 "default" 值會傳回 Base 64 編碼格式的資料。
sql:encode 註解不能搭配 sql:use-cdata 使用或是在 ID、IDREF、IDREFS、NMTOKEN 或 NMTOKENS 屬性類型上使用。 它也不能搭配 XSD fixed 屬性使用。
[!附註]
BLOB 類型的資料行不能當做索引鍵或外部索引鍵的一部分使用。
範例
若要使用下列範例建立工作範例,您必須符合某些需求。 如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。
A.指定 sql:encode 來取得指向 BLOB 資料的 URL 參考
在此範例中,對應結構描述會在 LargePhoto 屬性上指定 sql:encode,以便擷取特定產品相片的 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。
複製下列範本,並將其貼到文字檔中。 將檔案儲存在與 sqlEncode.xml 相同的目錄中,並儲存為 sqlEncodeT.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>