數據部分
數據區段會定義數據列集的數據,以及任何擱置的更新、插入或刪除。 數據區段可以包含零個或多個數據列。 它只能包含由架構定義的一個列集中的資料。 此外,如先前所述,可以省略不含任何數據的數據行。 如果在數據區段中使用屬性或子元素,而且該建構尚未在架構區段中定義,則會以無訊息方式忽略。
字串
文字數據中的保留 XML 字元必須替換為適當的字元實體。 例如,在公司名稱「Joe's Garage」中,需將撇號替換為實體字符。 實際的表格列會如下所示:
<z:row CompanyName="Joe's Garage"/>
下列字元會保留於 XML 中,且必須由字元實體取代:{',“,&、<、>}。
二元的
二進位數據為 bin.hex 編碼(也就是,一個字節對應至兩個字元,每一個字節一個字元)。
日期時間
XML-Data 數據類型不直接支援變體VT_DATE格式。 具有數據和時間元件之日期的正確格式為 yyyy-mm-ddThh:mm:ss。
如需 XML 所指定日期格式的詳細資訊,請參閱 W3C XML-Data 規格。
當 XML-Data 規格定義兩個等價的資料型別時(例如 i4 == int),ADO 會寫出友善名稱,但會讀取兩者。
管理擱置的變更
Recordset 可以在立即或批次更新模式中開啟。 當它們以客户端游標在批次更新模式中開啟時,對 Recordset 所做的所有變更都會處於暫存狀態,直到呼叫 UpdateBatch 方法為止。 儲存紀錄集時,待處理的變更也會被保留。 在 XML 中,它們會以使用 urn:schemas-microsoft-com:rowset 中定義的“update” 元素來表示。 此外,如果可以更新數據列集,則必須在數據列的定義中將可更新的屬性設定為 true。 例如,若要定義[貨運公司] 數據表包含擱置的變更,數據列定義看起來會像下面這樣。
<s:ElementType name="row" content="eltOnly" updatable="true">
<s:attribute type="ShipperID"/>
<s:attribute type="CompanyName"/>
<s:attribute type="Phone"/>
<s:extends type="rs:rowbase"/>
</s:ElementType>
這會告訴持續性提供者呈現數據,讓 ADO 可以建構可更新的 Recordset 物件。
下列範例數據顯示插入、變更和刪除在保存的檔案中的外觀。
<rs:data>
<z:row ShipperID="2" CompanyName="United Package"
Phone="(503) 555-3199"/>
<rs:update>
<rs:original>
<z:row ShipperID="3" CompanyName="Federal Shipping"
Phone="(503) 555-9931"/>
</rs:original>
<z:row Phone="(503) 552-7134"/>
</rs:update>
<rs:insert>
<z:row ShipperID="12" CompanyName="Lightning Shipping"
Phone="(505) 111-2222"/>
<z:row ShipperID="13" CompanyName="Thunder Overnight"
Phone="(505) 111-2222"/>
<z:row ShipperID="14" CompanyName="Blue Angel Air Delivery"
Phone="(505) 111-2222"/>
</rs:insert>
<rs:delete>
<z:row ShipperID="1" CompanyName="Speedy Express" Phone="(503) 555-9831"/>
</rs:delete>
</rs:data>
更新始終包含整個原始欄數據,接著是已變更的欄數據。 已變更的數據列可能包含所有數據行,或只包含實際變更的數據行。 在上一個範例中,貨運公司 2 的數據列不會變更,而且只有 Phone 數據行已變更貨運 3 的值,因此是唯一包含在已變更數據列中的數據行。 貨運公司 12、13 和 14 的插入數據列會分批在一個 rs:insert 標記下。 請注意,已刪除的數據列也可以批處理在一起,但上述範例中不會顯示此數據列。