TXFAFormStructure
HPDFXFAFormStructure 為以 template 為基礎的表單 instance 提供原生的準備與身分映射
該類別借用其 TXFADocument,擁有自己的結構圖與分離候選,從不釋放借用的文件
constructor Create(Document: TXFADocument;
const Limits: TXFADataStructureLimits;
const OnTick: TXFADataStructureTick);
procedure BeginOperation(const OnTick: TXFADataStructureTick);
procedure EndOperation;
function PrepareUnboundModel: TXFANode;
function EnsureInstance(Definition, DataNode: TXFANode): TXFANode;
function PrepareMaterialization(Definition, Instance: TXFANode;
out Aliases: TXFAFormStructureAliases): TXFANode;
function ReplaceInstance(Instance, Prepared: TXFANode): TXFANode;
procedure DiscardPrepared(Node: TXFANode);
property Graph: TXFADataStructure;
操作作用域
結構性工作之前呼叫 BeginOperation,並在 finally 區塊中呼叫 EndOperation
提供的 callback 會在設限走訪、複製與圖預檢全程被呼叫,可以拋出例外取消操作
Graph.DetachedRoots 暴露圖的擁有集合供觀察與協同快照還原;呼叫端不得自行釋放仍歸該集合所有的節點
準備與接納
PrepareMaterialization 從 template 定義與一個選用的既有 instance 組合出分離的表單候選,並在 TXFAFormStructureAliases 中回傳來源到候選的配對
TXFAFormStructureAlias.Source 與 Target 是借用的節點參照,用於在釋放先前 instance 之前重映射外部身分
ReplaceInstance 接納準備好的候選,並把先前 instance 作為分離的圖自有節點回傳
對回傳的先前 instance 呼叫 DiscardPrepared 之前,請先重定向依賴參照
DiscardPrepared 釋放同一圖擁有的分離候選,不會移除已附著的存活 instance
初始 instance 與稀疏 instance
PrepareUnboundModel 為空合併回傳分離的表單模型,保留撰寫的 template 內容,並把受支援的 subform occurrence 展開成獨立的原生節點
EnsureInstance 回傳既有的存活表單節點,或為 template 定義及其存活資料上下文建構所需的稀疏 instance 路徑
EnsureInstance 可能更動多個存活節點,因此複合操作的 rollback 屬於呼叫端外圍的文件交易
TXFAWidgetRuntime 為公開腳本事件提供該交易,包含原生文件與分離身分的還原
輔助函式
| 函式 | 用途 |
|---|---|
HPDFXFAEmptyMergeCount | 驗證 occurrence 宣告並回傳其空合併計數,使用明確 initial 或最小值 |
HPDFXFAIsMaterializedFormNode | 在明確走訪預算下檢查帶命名空間限定的物化標記 |
HPDFXFAResolveMaterializedDefinition | 為定義與資料上下文解析生效的表單節點,並回報物化模型是否權威 |
HPDFXFAResolveActualFormScope | 解析實際重複表單 instance 的存活資料作用域,而不重複其 template 宣告 |
儲存的標記使用 urn:hotpdf:xfa:form-structure:1 與防衝突前綴,而原生 form 節點使用 XFA form 命名空間
獨立的原生呼叫端必須在類別生命週期內保留文件,並在取消或其他失敗需要還原先前成功步驟時,為複合圖操作提供 rollback