交易化 XFA Data DOM 結構
JavaScript 事件可以建立、複製、重新命名、附著、重排與分離原生 Data DOM 元素,腳本立即可讀,並在整個交易範圍內原生持久化
const record = xfa.record;
const value = xfa.datasets.createNode("dataValue");
value.name = "amount";
value.value = "42";
record.nodes.append(value);
const retained = value.clone(false);
record.nodes.remove(value);
record.nodes.insert(value, record.nodes.item(0));
受支援的操作
xfa.datasets.createNode(className, name = "", namespace = "") 建立未附著的 dataGroup 或 dataValue;限定名稱要求非空命名空間 URI
node.clone(recursive = true) 建立帶全新身分的未附著 Data DOM 副本;false 排除子節點,保留元素自身詮釋資料與值
node.name 對 Data DOM 元素可寫,保留命名空間、兄弟順序、後代與留存的別名;未命名建構必須在附著前取得合法本地名稱
node.nodes.length、item(index) 與 namedItem(name) 讀取存續的有序元素子節點;無相符子節點時 item 與 namedItem 回傳 null
nodes.append(node) 與 nodes.insert(node, before) 把同一物件轉移進擁有者的子節點集合;insert(node, null) 等價於附加
nodes.remove(node) 分離直接子節點,其物件與子樹仍可供留存別名使用,之後還能重新附著
xfa.record 回傳 Data DOM 資料根下目前的第一個 record,並在結構編輯之後更新
身分、XML 與綁定
腳本物件可以跨事件保留節點、後代或擁有者子集合;存活別名在附著、分離、重新命名與 rollback 之後解析到同一批原生物件
loadXML 與 saveXML 對新建與移動過的元素都可用,包含同一事件內先匯入再移動的後代
穩定的原生身分確保匯入的後代別名在位置變化後不會悄悄解析到別的子節點
繼承的屬性命名空間、明確空預設命名空間重設、註解、處理指令、CDATA 與 Unicode 值在複製、移動、儲存與重新載入後仍然存活
表單綁定在結構變更後重新整理,經新附著資料節點寫入的值會到達對應的重複表單 instance,不影響其他 instance
交易與限制
非法類別、XML 名稱、兄弟參照、環與外來節點會在該單一操作更動存活腳本圖之前失敗
未捕捉的腳本錯誤、原生套用失敗、取消、操作上限或逾時限制會還原完整事件,包含附著與分離節點、綁定值、留存別名、詞法腳本物件狀態與 journal 狀態;同一執行期隨後可以重試
結構節點與分離樹共用原生的節點、深度與 UTF-8 位元組上限;原始腳本交易時限同時約束 JavaScript 與原生變更
PDF 消費
把執行期儲存為 XDP 並把位元組交給 HPDFXFAWriteHeadlessPDF,即可從變更後的資料綁定建立真實的原生 PDF 欄位與外觀
TXFAHeadlessPDFOptions.Editable = False 建立帶外觀的唯讀原生欄位;該設定不會壓平它們
目前涵蓋範圍
本頁描述 Data DOM 編輯;交易化 form tree 腳本提供受支援的存活表單建立、複製、插入、移除與原生 PDF 消費
通用 template 編輯、完整的 choice subform-set 處理與完整的 XFA 節點類別 schema 仍是獨立能力