共用方式為


XSD 元素與屬性與資料表和資料列的預設對應 (SQLXML 4.0)

適用於:SQL ServerAzure SQL 資料庫

根據預設,XSD 批註架構中的複雜型別元素會對應至在指定資料庫中具有相同名稱的數據表(view),而簡單型別的專案或屬性會對應至數據表中具有相同名稱的數據行。

範例

若要使用下列範例建立工作範例,您必須符合特定需求。 如需詳細資訊,請參閱 執行 SQLXML 範例的需求。

A. 指定預設對應

在此範例中,XSD 架構中未指定任何註釋。 <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 查詢
  1. 複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為MySchema.xml。

  2. 複製下列範本,並將它貼到文字檔中。 將檔案儲存為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"  
    
  3. 建立並使用 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 查詢
  1. 複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為MySchemaElements.xml。

  2. 建立下列範本 (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"  
    
  3. 建立並使用 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 (9.x) 中引進的。

若要針對架構測試範例 XPath 查詢
  1. 複製上述架構程序代碼,並將它貼到文本檔中。 將檔案儲存為MySchemaXmlAnyElements.xml。

  2. 建立下列範本 (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"  
    
  3. 建立並使用 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>  

另請參閱

批注式架構安全性考慮 (SQLXML 4.0)
XML 資料 (SQL Server)
SQLXML 4.0 中的 xml 資料類型支援