共用方式為


使用 sql:map-field 從產生的 XML 文件排除結構描述元素 (XDR 結構描述)

重要事項重要事項

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

由於預設對應的緣故,XDR 結構描述中的每個元素和屬性都會對應到資料庫資料表和資料行。有時您可能會想要在 XDR 結構描述中建立未對應到任何資料庫資料表或資料行,而且沒有出現在 XML 中的元素。這是透過指定 sql:map-field 註解完成的。

sql:map-field 註解與 sql:is-constant 的不同之處在於,未對應的元素和屬性不會出現在 XML 文件中。如果無法修改結構描述,或者該結構描述用於驗證來自其他來源,但不包含未儲存在資料庫之資料的 XML,則 sql:map-field 特別實用。

sql:map-field 會接受布林值 (0 = FALSE,1 = TRUE)。只有在包含純文字內容 (content=textOnly) 的 <attribute><element><ElementTypes> 上,sql:map-field 註解才有效。此註解在對應到資料表的 <element><ElementTypes> 上無效。

範例

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

A. 指定 sql:map-field 註解

假設您有來自其他來源的 XDR 結構描述。此 XDR 結構描述包含 <Person.Person> 元素以及 BusinessEntityIDFirstNameLastName 和屬性。

在將此 XDR 結構描述對應到資料庫的 Person.Person 資料表中時,會在 HomeAddress 屬性上指定 sql:map-field,因為 Person.Person 資料表不會儲存員工的住家地址。因此,根據對應結構描述指定 XPath 查詢時,此屬性不會在產生的 XML 文件中傳回。

預設的對應發生於其餘的結構描述。<Person.Person> 元素會對應到 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" />
    <AttributeType name="HomeAddress" />

    <attribute type="BusinessEntityID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="HomeAddress" sql:map-field="0" />
</ElementType>
</Schema>

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

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

  2. 複製下列範本,並將其貼到文字檔中。將檔案儲存為 mapField-xdrT.xml 並放在與儲存 mapField-xdr.xml 一樣的目錄中。範本中的查詢會選取 BusinessEntityID 等於 1 的 Person.Person 記錄。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:xpath-query mapping-schema="mapField-xdr.xml">
      /Person.Person[@BusinessEntityID=1]
    </sql:xpath-query>
    </ROOT>
    

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

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

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

以下為結果集:

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

請注意,EmployeeID、FirstName 和 LastName 存在,但是 HomeAddress 不存在,因為對應結構描述為其 sql:map-field 屬性指定 0 值。