共用方式為


XDR 元素和屬性對資料表和資料行的預設對應

重要事項重要事項

這個主題是舊版應用程式的參考。這項功能未來將不會繼續開發,請避免在新的開發工作中使用此功能,而改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有註解 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。

在註解 XDR 結構描述中,依預設元素會對應到具有相同名稱的資料表/檢視,而屬性會對應到具有相同名稱的資料行。

您可以將結構描述中的非複合式子元素對應至資料庫資料行。若要將元素對應至資料庫中的資料行,則會針對該元素,將 content 屬性指定為 textOnly 值。如果將元素對應至資料庫資料行時未指定 content=textOnly,則 sql:field 註解必須明確地指定為將 <element> 對應至資料庫資料行。如需詳細資訊,請參閱<XDR 元素和屬性對資料表和資料行的明確對應>。

範例

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

A. 指定預設對應

在此範例中,<Person.Person> 元素對應至 AdventureWorks2008R2 資料庫中的 Person.Person 資料表,而所有的屬性都對應至 Person.Person 資料表中相同名稱的資料行。在這個 XDR 結構描述中不會指定任何註解。

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Person.Person" >
    <AttributeType name="BusinessEntityID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />

    <attribute type="BusinessEntityID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
</ElementType>
</Schema>

針對結構描述測試範例 XPath 查詢

  1. 複製上述的結構描述程式碼,並將它貼到文字檔中。將檔案儲存為 DefaultXdr.xml。

  2. 複製下列範本,並將其貼入文字檔中。將檔案儲存為 DefaultXdrT.xml,並儲存在與 DefaultXdr.xml 相同的目錄中。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="DefaultXdr.xml">
            /Person.Person[@BusinessEntityID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    為對應結構描述 (DefaultXdr.xml) 所指定的目錄路徑,是相對於範本儲存所在的目錄。您也可以指定絕對路徑,例如:

    mapping-schema="C:\MyDir\DefaultXdr.xml"
    
  3. 建立及使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs),以執行範本。

    如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。

以下為結果集:

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Person BusinessEntityID="2" FirstName="Catherine" LastName="Abel">
</ROOT>

B. 將 XML <element> 對應至資料庫資料行

依預設,XML 元素會對應至資料庫資料表,而屬性會對應至資料庫資料行。若要將元素對應至資料庫資料行,則 content 屬性要指定 textOnly 的值。

這個 XDR 結構描述是由與前述範例相同的 <Person.Person> 元素所組成,但 SQL 欄位 (BusinessEntityID、FirstName、LastName) 是對應至子元素,而非屬性。

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="BusinessEntityID" content="textOnly" />
<ElementType name="FirstName" content="textOnly" />
<ElementType name="LastName"  content="textOnly" />

<ElementType name="Person.Person" >
    <element type="BusinessEntityID" />
    <element type="FirstName" />
    <element type="LastName"  />
</ElementType>
</Schema>

根據預設,XDR 結構描述中的 <Person.Person> 元素會對應至 AdventureWorks2008R2 資料庫中的 Person.Person 資料表。content 屬性會指定在 <FirstName><LastName> 子元素上。因此,這些子元素會對應至 Person.Person 資料表中相同名稱的資料行。

[!附註]

混合的內容 (同時具有文字和子元素的元素) 不受支援。

針對結構描述測試範例 Xpath 查詢

  1. 複製上述的結構描述程式碼,並將它貼到文字檔中。將檔案儲存為 ElementXdr.xml。

  2. 複製下列範本,並將其貼入文字檔中。將檔案儲存為 ElementXdrT.xml,並儲存在與 ElementXdr.xml 相同的目錄中。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="ElementXdr.xml">
            /Person.Person[BusinessEntityID &lt; 3]
        </sql:xpath-query>
    </ROOT>
    

    為對應結構描述 ((ElementXdr.xml) 所指定的目錄路徑,是相對於範本儲存所在的目錄。您也可以指定絕對路徑,例如:

    mapping-schema="C:\MyDir\ElementXdr.xml"
    
  3. 建立和使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 以執行範本。

    如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。

以下為結果集:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Person>
    <BusinessEntityID>1</BusinessEntityID> 
    <FirstName>Gustavo</FirstName> 
    <LastName>Achong</LastName> 
  </Person.Person>
  <Person.Person>
    <BusinessEntityID>2</BusinessEntityID> 
    <FirstName>Catherine</FirstName> 
    <LastName>Abel</LastName> 
  </Person.Person>
</ROOT>