XSD 元素和屬性對資料表和資料行的明確對應 (SQLXML 4.0)
使用 XSD 結構描述提供關聯式資料庫的 XML 檢視表時,必須將結構描述的元素但屬性對應到資料庫的資料表和資料行。資料庫資料表/檢視表中的資料列將會對應到 XML 文件中的元素。資料庫中的資料行值會對應到屬性或元素。
針對註解式 XSD 結構描述指定 XPath 查詢時,結構描述中元素和屬性的資料會從所對應的資料表和資料行對應。若要從資料庫取得單一值,在 XSD 結構描述中指定的對應必須同時擁有關聯和欄位規格。如果元素/屬性的名稱與資料表/檢視表或所對應的資料行名稱不同,則會將 sql:relation 和 sql:field 屬性用於指定 XML 文件中之元素或屬性和資料庫中之資料表 (檢視表) 或資料行之間的對應。
sql-relation
加入 sql:relation 註解,將 XSD 結構描述中的 XML 節點對應至資料庫資料表。資料表 (檢視表) 的名稱會指定為 sql:relation 註解的值。
在元素上指定 sql:relation 時,此註解的範圍會套用到該元素之複雜類型定義中描述的所有屬性和子元素中,因此可在撰寫註解時提供捷徑。
當 Microsoft SQL Server 中有效的識別碼在 XML 中無效時,sql:relation 註解也很有用。例如,"Order Details" 在 SQL Server 中是有效的資料表名稱,但是在 XML 中是無效的。在這種情況下,可以使用 sql:relation 註解來指定對應,例如:
<xsd:element name="OD" sql:relation="[Order Details]">
sql-field
sql-field 註解會將元素或屬性對應到資料庫資料行。加入 sql:field 註解,將結構描述中的 XML 節點對應至資料庫資料行。您無法在空內容元素上指定 sql:field。
範例
若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。
A. 指定 sql:relation 和 sql:field 註解
在此範例中,XSD 結構描述是由複雜類型的 <Person> 元素所組成,其中包含 <FName> 及 <LName> 子元素和 BusinessEntityID 屬性。
sql:relation 註解會將 <Person> 元素對應到 AdventureWorks2008R2 資料庫中的 Person.Person 資料表。sql:field 註解會將 <FName> 元素對應到 FirstName 資料行,並將 <LName> 元素對應到 LastName 資料行。
BusinessEntityID 屬性沒有指定任何註解。這會導致將屬性預設對應到具有相同名稱的資料行。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person" sql:relation="Person.Person" >
<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="BusinessEntityID"
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"> /Person </sql:xpath-query> </ROOT>
針對對應結構描述 (MySchema-annotated.xml) 指定的目錄路徑,與儲存範本之目錄相關。您也可以指定絕對路徑,例如:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"
建立及使用 SQLXML 4.0 Test Script (Sqlxml4test.vbs),以便執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 查詢>。
部分結果集如下:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person BusinessEntityID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Person>
.....
</ROOT>