XSD 元素和屬性對資料表和資料行的預設對應 (SQLXML 4.0)
根據預設,XSD 註解式結構描述中的複雜類型元素會對應到指定之資料庫中具有相同名稱的資料表 (檢視表),而簡單類型的元素或屬性會對應到資料表中具有相同名稱的資料行。
範例
若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。
A. 指定預設對應
在這個範例的 XDR 結構描述中不會指定任何註解。<Person.Contact> 元素屬於複雜類型,因此,預設會對應到 AdventureWorks 資料庫中的 Person.Contact 資料表。<Person.Contact> 元素的所有屬性 (ContactID、FirstName、LastName) 都屬於簡單類型,而且預設會對應到 Person.Contact 資料表中具有相同名稱的資料行。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact" >
<xsd:complexType>
<xsd:attribute name="ContactID" type="xsd:string" />
<xsd:attribute name="FirstName" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
針對結構描述測試範例 XPath 查詢
複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 MySchema.xml。
複製下列範本,並將其貼到文字檔中。將檔案儲存為 MySchemaT.xml,並放在與儲存 MySchema.xml 相同的目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema.xml"> /Person.Contact </sql:xpath-query> </ROOT>
針對對應結構描述 (MySchema.xml) 指定的目錄路徑,相對於儲存範本的目錄。您也可以指定絕對路徑,例如:
mapping-schema="C:\SqlXmlTest\MySchema.xml"
建立和使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 以執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。
部分結果集如下:
<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
<Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
<Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"/>
...
</ROOT>
B. 將 XML 元素對應至資料庫資料行
在此範例中,因為沒有使用註解,因此也會發生預設對應。<Person.Contact> 元素屬於複雜類型,而且會對應至資料庫中具有相同名稱的資料表。<FirstName> 和 <LastName> 元素及 EmployeeID 屬性屬於簡單類型,因此會對應到具有相同名稱的資料行。此範例與先前範例唯一的差別在於,這些元素用於對應 FirstName 和 LastName 欄位。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FirstName" type="xsd:string" />
<xsd:element name="LastName" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
針對結構描述測試範例 XPath 查詢
複製上述的結構描述程式碼,並將其貼到文字檔中。然後將檔案儲存為 MySchemaElements.xml。
建立下列範本 (MySchemaElementsT.xml),並將其儲存在先前步驟中所使用的相同目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaElements.xml"> /Person.Contact </sql:xpath-query> </ROOT>
針對對應結構描述指定的目錄路徑是儲存範本之目錄的相對路徑。您也可以指定絕對路徑,例如:
mapping-schema="C:\SqlXmlTest\MySchemaElements.xml"
建立及使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。
部分結果集如下:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact ContactID="1">
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
</Person.Contact>
...
</ROOT>
C. 將 XML 元素對應至 XML 資料類型資料行
在此範例中,因為沒有使用註解,因此也會發生預設對應。<Production.ProductModel> 元素屬於複雜類型,而且會對應至資料庫中具有相同名稱的資料表。ProductModelID 屬性屬於簡單類型,因此會對應到具有相同名稱的資料行。此範例與先前範例唯一的差別在於,<Instructions> 元素會使用 xsd:anyType 類型,對應到使用 xml 資料類型的資料行。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Production.ProductModel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Instructions" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="ProductModelID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
xml 資料類型是在 SQL Server 2005 中導入。
針對結構描述測試範例 XPath 查詢
複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 MySchemaXmlAnyElements.xml。
建立下列範本 (MySchemaXmlAnyElementsT.xml),並將其儲存在先前步驟中所使用的相同目錄中。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml"> /Production.ProductModel[@ProductModelID=7] </sql:xpath-query> </ROOT>
針對對應結構描述指定的目錄路徑是儲存範本之目錄的相對路徑。您也可以指定絕對路徑,例如:
mapping-schema="C:\SqlXmlTest\MySchemaXmlAnyElements.xml"
建立及使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 來執行範本。
如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。
部分結果集如下:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Production.ProductModel ProductModelID="7">
<Instructions>
<root xmlns="http:
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru
ctions">
...
</root>
<Instructions>
</Production.ProductModel>
</ROOT>