XFA 查詢節點集合
JavaScript 與 FormCalc 事件可以檢視作用域內的節點 occurrence,並跨執行期事件保留獨立的查詢清單
const siblings = xfa.record.amount.all;
const retained = siblings.clone();
retained.remove(retained.item(0));
retained.insert(siblings.item(0), null);
retained.item(0).rawValue = "42";
Occurrence 屬性
node.all 回傳新的有序查詢清單,包含作用域內同字面名稱的節點;未命名節點改用其類別名稱
node.classAll 回傳新的有序查詢清單,包含作用域內同類別的節點,其他名稱的節點也包含
node.index 與 node.classIndex 回傳各自作用域內從零開始的 occurrence 序號
未命名的非屬性容器對具名作用域查找是透明的,包含正負相對 SOM occurrence;屬性容器保留自己的作用域
#field、* 與 Unicode 名稱這類字面名稱按撰寫名稱被這些屬性比對
獨立清單操作
| 成員 | 行為 |
|---|---|
length | 目前清單條目數 |
item(index) | 被參照節點,負數、非整數或越界索引回傳 null |
namedItem(name) | 第一個該字面名稱的被參照節點,無相符時為 null |
clone() | 新的獨立條目儲存,參照同樣的節點 |
append(node) | 在結尾加入同一存活節點參照,重複參照也可以 |
insert(node, before) | 在第一個相符參照之前插入存活節點參照;null 等價於附加 |
remove(node) | 移除第一個相符參照;參照不存在時拋出錯誤 |
resolveNodes、all 與 classAll 回傳的清單使用獨立條目儲存;更動該儲存不動表單與資料樹,而寫被參照的節點改的是真實節點
表單與屬性的 node.nodes 集合暴露存活子檢視;其 clone() 方法回傳獨立查詢清單,見XFA 存續子集合
Data DOM 的 node.nodes 也提供獨立的 clone();其既有的 append、insert、remove 方法保留原生結構行為,見交易化 XFA Data DOM 結構
陣列迭代、索引讀取與列舉暴露被參照節點;直接指派、刪除、屬性重定義、原型變更與阻止擴充都會在更動查詢清單之前拋出錯誤
持久化與穩定身分
腳本物件可以跨事件保留查詢清單或副本;每個操作使用目前事件解析器與交易限制
查詢到的 instance manager 控制代碼在跨事件保留或複製時把操作路由到目前事件圖
重新命名或重排存活節點會保留其留存清單身分;移除重複表單 instance 後,經該被移除參照的讀寫會失敗,而不是改選替換 instance
獨立清單可以複製其儲存的參照,並移除先前留存的已移除節點參照,而無需解參照該節點
查詢清單儲存屬於執行期腳本狀態;儲存 XDP 持久化原生節點值與結構,新的執行期開啟新的腳本物件工作階段
交易與限制
非法節點與成員參照在該清單操作更動儲存之前失敗;被捕捉的錯誤讓同一事件中先前合法的操作保持可用
未捕捉的事件錯誤、操作預算或逾時失敗會一併還原查詢清單變更、原生值、重複 instance、留存腳本物件狀態與 journal 狀態,同一執行期可以重試
TXFAFormScriptLimits.MaxArrayItems 約束每個留存清單長度,並單獨約束一次事件內累計的清單物件與新建條目;設為零時使用事件上下文預設值 65,536
空副本消耗物件預算,非空副本還消耗條目預算,留存清單在多次獨立成功事件間保持有界
FormCalc 與 PDF 消費
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
FormCalc 對字面 xfa.form、xfa.datasets 與 xfa.record 路徑的 occurrence 選擇使用原生 SOM 解析;集合屬性之後的清單索引對該集合索引
把執行期位元組儲存為 XDP 並交給 HPDFXFAWriteHeadlessPDF,即可從提交的值產生真實的原生欄位與外觀,包含經留存的存活重複 instance 參照做出的編輯
TXFAHeadlessPDFOptions.Editable = False 建立帶外觀的唯讀原生欄位,而不是壓平它們
涵蓋範圍
本介面提供獨立查詢清單與 occurrence 詮釋資料;通用 template/表單節點建立與複製、更多節點類別腳本、schema 驗證與外部媒體仍是獨立工作