共用方式為


使用 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 查詢

  1. 複製以上的結構描述程式碼,並將其貼至文字檔中。 將檔案儲存為 sqlEncode.xml。

  2. 複製下列範本,並將其貼到文字檔中。 將檔案儲存在與 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"
    
  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>