自訂 XSD 對應至資料表 /資料列 (SQLXML)
使用 XSD 架構來提供關係資料庫的 XML 檢視時,架構的元素和屬性必須對應至資料庫的數據表和數據行。 資料庫數據表/檢視中的數據列將會對應至 XML 檔中的專案。 資料庫中的數據行值會對應至屬性或元素。
針對標註的 XSD 架構指定 XPath 查詢時,會從其對應的數據表和數據行擷取架構中元素和屬性的數據。 若要從資料庫取得單一值,XSD 架構中指定的對應必須同時具有關聯和字段規格。 如果專案/屬性的名稱與其對應的數據表/檢視或數據行名稱不同, 則會使用 sql:relation 和 sql:field 批注來指定 XML 檔中的元素或屬性與資料庫中數據表(檢視)或數據行之間的對應。
sql-relation
sql :relation 註釋會加入,以將 XSD 架構中的 XML 節點對應至資料庫數據表。 數據表的名稱 (view) 會指定為 sql:relation 註釋的值。
在元素上指定 sql:relation 時,此批注的範圍會套用至該專案複雜類型定義中所描述的所有屬性和子專案,因此提供撰寫批注的快捷方式。
當 Microsoft SQL Server 中的識別碼在 XML 中無效時,sql:relation 註釋也很有用。 例如,「訂單詳細數據」是 SQL Server 中有效的數據表名稱,但不在 XML 中。 在這種情況下, sql:relation 註釋可用來指定對應,例如:
<xsd:element name="OD" sql:relation="[Order Details]">
sql-field
sql 欄位批注會將專案或屬性對應至資料庫數據行。 sql :field 批注會加入,以將架構中的 XML 節點對應至資料庫數據行。 您無法在空的內容元素上指定 sql:field 。
範例
若要使用下列範例建立工作範例,您必須符合特定需求。 如需詳細資訊,請參閱 執行 SQLXML 範例的需求。
A. 指定 sql:relation 和 sql:field 批注
在此範例中,XSD 架構是由<複雜<類型的 Contact> 元素和 FName> 和< LName> 子元素和 ContactID 屬性所組成。
sql:relation 批注會將< Contact> 元素對應至 AdventureWorks 資料庫中的 Person.Contact 數據表。 sql:field 註釋會將 <FName 元素對應至 FirstName> 數據行,<並將 LName> 元素對應至 LastName 數據行。
未指定 ContactID 屬性的註釋。 這會導致屬性的預設對應到具有相同名稱的數據行。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
若要針對架構測試範例 XPath 查詢
複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為MySchema-annotated.xml。
複製下方的下列範本,並將它貼到文字檔中。 將檔案儲存為MySchema-annotatedT.xml儲存在儲存MySchema-annotated.xml的相同目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>
針對對應架構指定的目錄路徑 (MySchema-annotated.xml) 相對於儲存範本的目錄。 您也可以指定絕對路徑,例如:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"
建立並使用 SQLXML 4.0 測試腳本 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱 使用 ADO 執行 SQLXML 查詢。
部分結果集如下:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>